다중 명령어

1. [명령어1] ; [명령어2]

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

-첫 번째 명령어가 실패하여도 반드시 실행

 

2. [명령어1] && [명령어2]

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

 

CMD = 정상 명령어     EX) #pwd, #ls, #date

ERR = 오류 명령어        EX) #qwer

 

[CMD1] && [CMD2] -> CMD1,2 정상 출력

[CMD1] && [CMD2] && [CMD3] -> CMD1,2,3 정상 출력

[ERR1] && [CMD2] && [CMD3] -> 에러메세지

[CMD1] && [ERR2] && [CMD3] -> CMD1 정상 출력후 에러메세지

   CMD3 실행 조차 안됨

- 에러가 발생하는 시점에서 명령 실행 종료

 

3. [명령어1] || [명령어2]

[ CMD1 ] || [ CMD2 ]        //CMD1 실행

[ ERR1] || [CMD2]        //오류메세지 발생후 CMD2 실행

 

[ CMD1 ] || [ CMD2 ] [CMD3]       //CMD1 실행

[ CMD1 ] || [ ERR2 ] [CMD3]         //CMD1 실행

[ ERR1 ] || [ ERR2 ]  [CMD3]        //ERR1,2 출력 후 CMD3 실행

 

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

 

 

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

환경 변수  (0) 2017.04.01
쉘 환경변수 종류  (0) 2017.03.26
리다이렉션  (0) 2017.03.26
파이프,메타문자  (0) 2017.03.26
Server-B Client-Linux 둘다 Xshell연결  (0) 2017.03.26

리다이렉션(Redirection)

 

파일 리스크립터 (File Discriptor, fd)

-리눅스의 일반 파일과 장치파일을 포함한 모든 파일을 관리하는 방식

-파일을 열거나 실행할때 혹은 명령어를 입력하면은 커널이 프로세스를 실행시켜 기본적으로 사용하는 장치들과 추가로 실행한 프로세스가 있다면 이정보를 파일디스크립터 테이블이라는 곳에 저장하는데, 이대 파일 디스크립터 테이블에 비어있는 0번부터 순차적으로 지정하고 가장 기본적으로 사용되는 장치에 대해서는 디스크립터 테이블에 미리 예약되어 있다.

 

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

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

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

 

리다이렉션

-표준입력과 출력의 방향을 재지정하는 방법

 

명령어 입력 (키보드/표준입력) -> 명령어 결과 (모니터/표준출력)

 

출력 리다이렉션

- 화면에(표준출력)나오는 결과를 파일 내용으로 전달

#echo 'show me the money' 1> echo_test

 

fd번호 1은 생략 가 능

 

#cat > [파일명]

내용입력 후, 엔터 한번 치고

Ctrl + D ( 저장 ) 

 

# mkdir /practice/day4
# cd /practice/day4
# cp /etc/resolv.conf ./
# cat resolv.conf

ex) nameserver 8.8.8.8

#cat resolv.conf 1> redirection_test    //표준입력 후 결과를 출력아닌 파일로 재지정

 

#cat > cat_test1     //표준입력은 1은 생략 가능

//기존 파일이 없다면 생성

cat_test!!!! [Enter]    //개행 후

[Ctrl+d]                //저장

#cat cat_test1        //cat_test1 내용 확인

cat_test!!!!

 

#cat > cat_test1        // 파일 내용입력 후 생성

cat_test????    //내용 입력 후 저장 (Ctrl +D)

 

#cat cat_test1        //기존에 있던 cat_test!!!! 없어지고

  새롭게 썼던 cat_test???? 만 존재

즉, 파일의 내용을 덮어쓴다.

 

Bash 쉘에서 파일 덮어쓰기 방지하기 위한 설정

# set -o noclobber    //덮어쓰기 방지 설정

#cat > cat_test1

 

 

-bash: cat_test1: cannot overwrite existing file (이런식으로 덮어쓰기를 방지한다.)

 

#set +o noclobber     //덮어쓰기 방지 설정 해제

 

 

추가 리다이렉션

[명령어] >> [파일] - 기존 파일에 내용 추가

 

#ls > ls_test

#date > ls_test

#ls > ls_test

#date >> ls_test

#pwd >> ls_test

#cal >> ls_test

 

오류 리다이렉션

#ls error_test        //오류메세지 발생

ls: cannot access error_test: 그런 파일이나 디렉터리가 없습니다

#ls error_test 1> err1

ls: cannot access error_test: 그런 파일이나 디렉터리가 없습니다

하지만 err1 파일은 만들어졌다. 그러나 안에 내용은 없다.

 

 

 

# ls error_test 2> err1        //표준 에러의 방향을 파일로 재지정
오류 출력메세지 x

# cat arr1

ls: cannot access error_test: 그런 파일이나 디렉터리가 없습니다

 

오류 메세지 출력하지 않기

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

    (윈도우 쓰레기통과 비슷)

 

# cat ls_test 1> /dev/null            //출력결과를 null파일로 재지정

# cat ls_test 2> /dev/null            //출력에러결과를 null파일로 재지정

#ls / 1> /dev/null        //정상 결과 출력하지 않음

# ls / 2> /dev/null        //에러 결과 출력 하지 않음

입력 리다이렉션

 

[명령어] < [파일]

#sort < /etc/passwd    == sort /etc/passwd

#cat < /etc/passwd     == cat /etc/passwd

#head -1 < /etc/passwd == head -1 /etc/passwd

#tail -2 < /etc/passwd    == tail -2 /etc/passwd

 

 

tail <a.txt> b.txt

(1) a.txt 내용을 tail 명령어 입력 값으로 리다이렉션 (#tail a.txt)

(2) tail 명령어는 입력은 a.txt의 내용에서 마지막 10줄 출력

(3) tail 명령어의 출력결과를 b.txt파일에 리다이렉션

(4) 화면에 출력이아닌 b.tx t파일 안에 결과가 저장

 

cat < a.txt > b.txt 와 동일한 명령어는??

#cp a.txt b.txt


 

 

 



 

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

쉘 환경변수 종류  (0) 2017.03.26
다중 명령어  (0) 2017.03.26
파이프,메타문자  (0) 2017.03.26
Server-B Client-Linux 둘다 Xshell연결  (0) 2017.03.26
텍스트 편집기의 종류,vi사용법  (0) 2017.03.26

 파이프

-프로세스(프로그램)간에 실행되는 입출력을 다음 프로세스에게 전달하는 방식

 

    출력                입력

#cat /etc/passwd | grep root

#cat /etc/services | more

#cat /etc/services | tail -1

#cat /etc/services | head -5

 

 

정규식에서 사용하는 메타문자

^                    -행의 시작

$                    -행의 끝

.                     -하나의 문자와 대응

[]                    -[]사이의 문자 하나와 대응

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

\<                  -단어의 시작

\>                  -단어의 끝

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

A\{N,\}             -문자A가 적어도 N번 반복

A\{N,n\}            -문자A가 N번이상 n번이하 반복

 

grep '문자열' 파일

grep 'root' /etc/passwd

 

#grep -i 'the' grep_test     //대소문자 구별 없이 the가 포함된 라인

#grep '^#' grep_test        //'#' 으로 시작하는 라인

#grep 't$' grep_test         //'t'로 끝나는 라인

#grep 's.n' grep_test       //s와n사이의 임의의 문자하나를 포함한 라인

#grep -i 'c...y' grep_test        //c와y사이 임의의 문자3개를 포함한 라인

#grep '[tT]' grep_test        // t혹은 T가 포함된 라인

#grep '[AB]' grep_test       // A혹은 B가 포함된 라인

#grep '[AB]r' grep_test       //A혹은 B이후에 r을 포함된 라인

#grep '[a-z]' grep_test      //a부터 z를 포함한 라인, 즉 소문자 영어  와 모두 매칭

#grep '[a-zA-Z]' grep_test     //영어를 포함한 라인

#grep '[^0-9]'    grep_test    //숫자를 제외하고 매칭

#grep '\<F.....'                    //F로시작하고 총6글자인 단어

#grep 'd\{2\}' grep_test    //d가 2번이상 반복되는 라인

#grep 'e\{1,2\}' grep_test    //e가 1번또는 2번 반복되는 라인

 

 

현재 위치한 곳에 디렉토리 개수 확인 하기

#cd /

#ls -l | grep '^d'

#ls -l | grep '^d' | wc -l

 

/bin 에 파일 개수 확인

#ls -l | grep '^-' | wc -l

 

현재 디렉토리에서 파일 크기가 가장 큰 파일 '만' 출력 

# ls -S | head -1

 

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

다중 명령어  (0) 2017.03.26
리다이렉션  (0) 2017.03.26
Server-B Client-Linux 둘다 Xshell연결  (0) 2017.03.26
텍스트 편집기의 종류,vi사용법  (0) 2017.03.26
watch 명령어  (0) 2017.03.26

+ Recent posts