본문 바로가기
OS/리눅스

CentOS 파일 명령어

by 티옌.liy 2017. 1. 14.

vi


vi ( VIsual editor )  : 리눅스의 기본 텍스트 편집기


vim ( VI iMproved )  : vi 기능을 향상 시킨 모드형 편집기.

설치법 : yum -y install vim



형식 : vi [ 파일명 ]


파일이 있을때 : 해당 파일을 수정

파일이 없을때 : 새로운 파일을 만들고 수정



명령모드 --> 입력모드  :  i , a , o

입력모드 --> 명령모드  :  ESC


명령모드 --> 실행모드  : ? , / , :

실행모드 --> 명령모드  : ESC



실행모드

:w    : 저장

:w!    : 강제 저장

:q    : 종료

:q!    : 강제 종료

:wq    : 저장 후 종료

:wq    : 저중 후 강제 종료

:[숫자]  : [숫자]라인으로 이동

:set number , :set nu  : 라인 번호를 출력

/[문자열] : [문자열] 검색 (이동키 n, N)



명령모드

dd    : 커서가 위치한 라인을 삭제

[숫자]dd : [숫자] 만큼 라인 삭제

y       : 복사

[숫자]yy  : 해당 숫자만큼 복사

p       : 붙여넣기

gg    :  문서 처음

GG    :  문서 마지막

(숫자)g : 해당 숫자 라인으로 이동



치환기능

:%s/[Old]/[New]/g





grep


정규표현식 메타문자


메타문자        의미

^                행의 시작

$                행의 끝

.                 하나의 문자와 대응

[]                [] 사이의 문자 하나와 대응  ex) [a-z]  : a~z가 들어가는 단어 검색

[^]                [] 사이의 문자를 제외한 문자와 대응

A{N\}           A문자를 N번 반복





sort  : 파일내의 내용을 알파벳 순서대로 정렬


형식 : #sort [옵션] [파일]


-n : 숫자를 기준으로 정렬

-r  : 역순으로 정렬

-u : 중복행 제거 (#uniq)

-o : 출력결과를 파일로 저장        ex) sort -n sort_test1 -o test123 // sort-test1을 숫자로 정렬후 test123파일에 저장






wc ( Word Count ) : 단어, 라인, 문자 수 계산


형식 : #wc [옵션] [파일]


-l  : 라인 수 출력

-m : 문자 수 출력

-w : 단어 수 출력


#wc /etc/resolv.conf


#wc -l /etc/passwd        // passwd 파일의 라인수 풀력

#nl /etc/passwd            // passwd 라인 수 확인

#cat -n /etc/passwd       // passwd 라인 수 확인




cut  : 필드 잘라내기


형식 : #cut [옵션] [파일]


-c : 잘라낼 글자 위치를 지정

-f : 잘라낼 필드를 지정

-d : 필드와 필드를 구분하는 문자를 지정 (기본값 tab)




#vi cut_test로 cut_test 파일 행성


아래의 내용을 입력

aaa:bbb:ccc:ddd:eee:fff

123:456:678:111:222:333


#cut -c 1 cut_test를 입력

a

1


#cut -c 2 cut_test를 입력

a

2


#cut -c 3 cut_test를 입력

a

3


#cut -c 1-3 cut_test를 입력

aaa
123

#cut -c 1,3 cut_test를 입력
aa
13

#cut -d ":" -f 1 cut_test를 입력
aaa
123


watch - 주기적으로 지정된 명령 재실행, 결과를 출력

형식 : watch [옵션] '[명령]'


-n [N] : N초 주기로 명령 결과 출력

-d       : 변경된 부분에 음영처리







파일 디스크립터 - 커널이 리눅스 일반 파일과 장치 파일을 포함한 모든 파일을 관리하는 방식


- 표준입력장치 ( 키보드 ) fd/0  stdin

- 표준출력장치 ( 모니터 ) fd/1  stdour

- 표준에러장치 ( 모니터 ) fd/2  stderr





리다이렉션  : 표준입력과 출력 방향을 재 지정하는 방법



1. 출력 리다이렉션

[명령어] > [파일]  : 파일 생성 및 덮어쓰기


ex) test > test2  : test의 내용을 출력하지 않고 test2파일에 입력한다.


set -o noclobber    // 덮어쓰기 방지 Enable

set +o noclobber    // 덮어쓰기 방지 Disable



2. 추가 리다이렉션

[명령어] >> [파일]        : 파일의 내용 추가 후 저장


#ls > ls_test    // ls 명령어의 출력 결과를 ls_test파일로 리다이렉션


#date >> ls_test

#pwd >> ls_test

#cal >> ls_test

#ls >> ls_test



3. 오류 리다이렉션  (모르겠다)


#ls error_test                    : 오류 메세지 발생

#ls error_test1 > err1        : 파일생성 불가

#ls error_test2 > err2        : 파일생성 가능


오류 메세지 출력하지 않기.

/dev/null : 리눅스 특수 파일로 파일의 내용을 지우거나 오류메세지를 해당 파일로 리다이렉션하여 출력하지 않을 수 있다.


#cat err10 1> /dev/null        없는 파일, 오류메세지 발생

#cat err10 2> /dev/null        오류메세지를 출력하지 않음


#cat ls_test 1> /dev/null        표준출력을 /dev/null로 방행을 재지정

#cat ls_test 2> /dev/null        ??????


4. 표준 입력 리다이렉션

[명령어] < [파일]


sort < test.txt     test.txt의 내용을 sort 명령어의 입력으로 받는다.


sort < a.txt > b.txt   = cp a.txt b.txt   a 의 내용을 정렬하고 그 출력을 b에 넣는다.



tip )  ctrl+d : 저장



파이프 ( pipe )


표준 입출력(키보드,모니터)이 아니라, 프로세스간에 실행되는 입출력을 다음 프로세스에게 전달하는 방식 (명령)


형식 : [명령어1] | [명령어2]     ( 주의!  | 는  \+shift 의  | 이다.)


ex)  ls -l | grep '^d' | wc -l    // 디렉토리 개수

ls -l | grep '^d' | wc -l     // 파일 개수




다중 명령어


ERR - 에러 명령어

CMD - 


1. cmd1 ; cmd2

-첫번째 명령어 부터 순차적으로 실행

-첫번째 명렁어가 실패해도 반드시 실행


ex)

ls ; date ;  cal ; pwd

#sfsef ; date ; pwd ; sdft ; ls



2. cmd1 && cmd2   ( AND )

-첫번째 명령이 에러가 아닐시 두번째 명령을 실행


[cmd1] && [cmd2] && [cmd3]  --> cmd1,2,3 정상 출력

[ERR1] && [cmd2] && [cmd3] --> 오류 메세지 출력

[cmd1] && [ERR2] && [cmd3] --> cmd1만 출력 후 오류 메세지 출력

[cmd1] && [cmd2] && [ERR3] --> cmd 1,2만 출력 후 오류 메세지 출력

즉, 오류메세지 출력 시점부터 종료


ex)

#ls && pwd && date



3. cmd1 || cmd2  ( OR )        ( 주의!  | 는  \+shift 의  | 이다.)

[cmd1] || [cmd2] --> cmd1  실행

[EER1] || [cmd2] --> 에러메세지 후 cmd2 실행


[cmd1] || [cmd2] || [cmd3]  -->  cmd1만 실행

[cmd1] || [ERR2] || [cmd3]  -->  cmd1만 실행

[cmd1] || [cmd2] || [ERR3]  -->  cmd1만 실행

[ERR1] || [ERR2] || [cmd3] ---> 오류 메세지 1,2 출력 후 cmd3 실행

즉, 명령어가 정상으로 실행된 시점까지만 출력







쉘 환경 변수의 종류

1. 지역 환경 변수 ( 쉘 변수 )

- 현재 사용하는 쉘에서만 적용되는 변수


- 변수 선언 및 초기화

변수명=값        ( 주의사항 : <변수명 = 값>(안됨) 공백 X)


-변수 해제

unset 변수명


-지역 변수 확인

#set

-변수 확인

#echo $변수명


지역 환경 변수 테스트 방법


#LOCAL=test        //지역변수 LOCAL 에 test 대입

#set | grep LOCAL       //지역변수 LOCAL 설정 확인

#echo $LOCAL            // LOCAL 변수 값 확인

#echo $SHLVL            // 현재 쉘 레벨 1

#/bin/bash                 // bash 실행

#echo $SHLVL            // 현재 쉘 레벨 2

#echo $LOCAL            // 지역 변수 local 출력값

#exit

#echo $SHLVL            // 현재 쉘 레벨 1

#echo $LOCAL            // test 정상 출력

#unset LOCAL            // 지역 변수 LOCAL 해제

#set | grep LOCAL        // 변수해제 확인



2.  전역 환경 변수 ( 환경변수 )

- 모든 쉘에 적용되는 변수


- 변수 선언 및 초기화

3export 변수명=값    ( 주의사항 : <변수명 = 값>(안됨) 공백 X)


-변수 해제

#unset 변수명


- 전역 변수 확인 명령어

#env


전역 환경 변수 테스트


#export GLOCAL=test

#env | grep GLOBAL        // 전역 변수 설정 확인

#/bin/bash                    // /bin/bash 실행

#echo $GLOBAL            // 전역 변수 GLOBAL 확인

#GLOBAL=test2            // 2번째 쉘에서 지역 변수 GLOBAL

#echo $GLOBAL            // 같을대 지역변수가 우선이다 (test2)

#exit                            // 1번재 쉘로 이동

#echo $GLOBAL            // 원래 GLOBAL값인 test




종류


$PATH        실행 파일을 찾는 경로

$HOME        현재 사용자의 홈디렉토리

$LANG        쉘에서 사용하는 언어

$SHELL        로그인 시 사용하는 쉘

$HISTSIZE       히스토리 파일에 저장되는 개수

$HISTFILE       히스토리 파일 경로

$HOSTNAME   호스트의 이름

$PS1              프롬프트

$SHLVL        // 쉘 레벨?



PATH=$PATH: [경로](path 경로 추가)

#echo $PATH ( 실행 파일이 있는 경로 = 명령어 )

명령어 입력 -> $PATH 변수를 확인하여 $PATH에 나열된 경로에서

해당파일을 순차적으로 찾는다. 이때 파일이 있다면 실행된다.

없다면 Command Not Found 출력


]#./ [파일명]



Login할때 실행되는 파일의 순서

1) /etc/profile

-환경변수와bash shell이 수행될때 실행되는 프로그램을 제어하는 전역적인 시스템 설정과 관련된파일


2)/etc/profile.d/*  ( 모든 파일 ) 

-디렉토리아래 스크립트가 실행되면 여려가지 변수들이 동작하며 쉘 환경을 제공한다.

3) ~/.bash_profile

- 환경변수와bash shell이 수행될때 실행되는 프로그램을 제어하는 지역적인 시스템 설정과 관련된 파일


4) ~/.bashrc

- 사용자에게 기본으로 적용할 alias 정보가 담겨져 있다.


5) /etc/bashrc

- 사용자가 로그인 하였을때 사용자의 계정에 있는 .bashrc 파일에 의해서 실행되는 파일이며, 전역적으로 적용할 alias 및 쉘 환경값을 설정하고 있는 파일이다.



#vi /etc/bashrc    : alias 설정 저장

alias c='clear'






사용자 계정 관리 종류

--------------


/etc/passwd - 사용자 기본 정보 파일 ( 계정명, UID, GID, 홈 디렉토리 SHELL 등등 )

/etc/shadow - 사용자 패스워트가 암호화되어 담기는 파일 _ 패스워드 정책

/etc/group  - 그룹의 기존정보 파일

/etc/gshadow  - 그룹의 패스워드가 암호화되어 저장되는 파일

/etc/default/useradd - 사용자 계정 생성시 기본 정보가 되는 내용을 가지고 있는 파일

/etc/login.defs - 시스템 사용자의 전체를 제한하기 위해 사용하는 설정파일

/etc/skel ( 디렉토리 ) - 사용자 계정 생성 시 홈디렉토리에 기보적으로 새엉되는 파일이 있는 디렉토리


사용자 계정 생성 과정

---------------------------

1) useradd 명령어 실행

2) /etc/default/useradd와 /etc/login.defs 파일에 설정을 참고한다.

3) /etc/passwd, /etc/group 파일에 계정을 추가한다.

4) 홈디렉토리에 사용자 계정명으로 된 디렉토리를 생성한다.

5) /etc/skel에 있는 파일들을 사용자 홈 디렉토리에 복사한다.

6) /var/spol/mail 디렉토리에 메일 관련 파일 생성





/etc/passwd

[사용자계정명]:[패스워드]:[UID]:[GID]:[코멘트]:[홈디렉토리]:[쉘]


1. 사용자 계정명

- 사용자의 계정 명을 나타내며 사용자 정보를 가지고 있는 여러파일에서

사용자에 대한 정보를 찾는 기준이 되며, 이름은 중복되면 안된다.


2. 패스워드

- ' x '의 의미는 패스워드가 암호화 되어 /etc/shadow 파일에 저장되어 있음을 나타낸다.


3. UID ( User IDentification )

- 사용자 개인을 숫자로 구별하는 고유 ID이며, root는 0번, 0~99번은 시스템 관리 계정을 위해

예약되어 있으며, 일반 사용자는 보통 500번부터 시작한다.


4. GID ( Group IDentification )

- 각 사용자는 계정은 고유한 그룹 ID를 가지고 있다.

- 만약 사용자 계정을 생성할 때 그룹을 지정하지 않으면, 사용자 계정명과 같은 이름으로 그룹이 생성된다.

- 그룹번호와 함께 /etc/group 파일에 저장된다.

- 한 사용자는 여러 그룹에 속할 수 있다.


5. 사용자 정보 ( Comment )

- 사용자에 대한 정보를 표시하는 필드로, 시스템에 영향을 주지 않는 필드다.

- 반드시 기록해야하는것은 아니며, 주로 실제 이름을 기록하낟.


6. 홈 디렉토리

- 사용자의 홈디렉토리에 위치한다.

- 일반 사용자일 경우 /home 경로에 홈디렉토리가 위치한다.

- 사용자가 로그인 시 가장 처음에 위치한 디렉토리

- 반드시 절대 경로로 기록된다.


7. 로그인 쉘 ( login shell )

- 사용자의 쉘을 정의한다. ( 기본설정은 /bin/bash )





useradd  : 사용자 계정 추가



형식 : useradd [ 옵션 ] [ 계정명 ]


-c : 코멘트

-d : 홈디렉토리

-e : 사용종료일자 지정

-f : 패스워드 유효일자

-g : 주 그룹

-G : 보조그룹

-s : shell 지정

-u : UID 지정

-m -k : skel 디렉토리 지정



su ( Substitute User / Switching User )


su [ 계정명 ]  : 해당 계정으로 전환하지만 환경변수를 바꾸지 않는다.

su - [ 계정명 ]  : 해당 계정으로 전환하고 환경변수도 함께 바꾼다.



passwd - 패스워드 설정

passwd [ 계정명 ]  : 해당 계정명의 패스워드 변경 및 설정

passwd                 : 현재 로그인한 계정의 패스워드 변경 및 설정


ex

계정명 : test-user7

암호 : 1234


계정명 : test-user8

암호 : 1234















'OS > 리눅스' 카테고리의 다른 글

패스워드 분실시.  (0) 2017.01.21

댓글