[Linux] 다중 명령어 5가지(세미콜론, 파이프, 엠퍼센트..)
리눅스의 Bash Shell에서 다중 명령어를 사용하는 목적은 하나의 라인에서 여러 명령을 실행할 수 있기 때문입니다. 종류는 ⓐ 세미콜론(;) ⓑ 파이프(|) ⓒ 더블 버티컬바(||) ⓓ 엠퍼센트(&) ⓔ 더블엠퍼센트(&&) 등이 있습니다.
1. 많이 쓰는 다중 명령어 세미콜론(;)
하나의 명령어 라인에서 여러 개의 명령을 실행하며, 처음 명령어 실행의 성공, 실패 여부와 상관 없이 다음 명령이 실행됩니다.
~]# cd www/; ll
-rw-r--r-- 1 xxxxxxx xxxxxxx 25602 Aug 9 15:43 wp-settings.php
-rw-r--r-- 1 xxxxxxx xxxxxxx 34385 Aug 9 15:43 wp-signup.php
-rw-r--r-- 1 xxxxxxx xxxxxxx 12890 Apr 22 04:20 wpt-hotlinked-image-stub.png
-rw-r--r-- 1 xxxxxxx xxxxxxx 4885 Aug 9 15:43 wp-trackback.php
-rw-r--r-- 1 xxxxxxx xxxxxxx 3236 Aug 9 15:43 xmlrpc.php
~]#
2. 파이프(|)
앞에서 나온 명령 결과를 참조해서 두 번째 명령 결과를 나타냅니다. 파이프라인(|)은 표준 출력 된 명령어를 표준 입력으로 변경합니다. 명령어에 종류에 따라 표준 출력을 보여줍니다.
~]# find ./ -name 'wp*' | wc -l
248
~]#
3. 더블 버티컬바(||)
앞에 명령어가 실패했을 경우에만 다음 명령어를 실행합니다.
~]#find ./ -name 'wp' | wc -la || find ./ -name 'load' | wc -l
wc: invalid option -- 'a'
Try 'wc --help' for more information.
21
~]#
wc -la에서 a가 붙음으로써 명령어가 실패하고 뒤에 명령어가 활성화 되었습니다. 앞에 명령어가 wc -l로 성공했다면 뒤에 명령어는 실행되지 않습니다.
4. 더블 엠퍼센트(&&)
앞에 명령어가 성공하면 다음 명령어를 실행합니다.
~]# rm -f html/ && ll
rm: cannot remove 'html/': Is a directory
~]# rm -rf html/ && ll
total 4
d--------- 6 ukcresearch nobody 4096 Feb 12 13:44 www
5. 엠퍼센드(&)
명령어를 백그라운드에서 실행하며, 인터페이스 작업을 할 수 있습니다.
~]# tar cfzp 파일명.tgz 압축할 폴더 &
[1] 178339
파일 백업 명령어를 사용할 때 파일의 용량이 클 경우 백그라운드 작업을 실행한 후 다른 작업을 진행할 때 사용할 수 있습니다.
백그라운드 작업 중에 진행 중 상태는 jobs 명령으로 확인할 수 있습니다.
~]# tar cfzp www.tgz www/ &
[1] 169584
~]# jobs
[1]+ Running tar cfzp www.tgz www/ &
~]# kill %1
~]# jobs
[1]+ Terminated tar cfzp www.tgz www/
중지는 kill %1 또는 강제 중지는 kill -9 %1를 사용합니다. 여기서 ‘%1’은 중단할 백그라운드 작업 번호입니다.