1. 그룹 명령과 서브 쉘
bash는 명령어들을 그룹화하여 함께 사용할 수 있도록 허용하는 방법이 있다. 그룹 명령을 사용하든지 서브쉘을 사용하는 것이다.
그룹 명령 :
" {command1; command2; [ command3; ... ]}"
서브쉘 :
" (command1; command2; [ command3; ... ]) "
(1) 리다이렉션 수행
그룹 명령과 서브쉘은 둘다 리다이렉션을 조절하기 위해 사용된다. 복수 명령어들로 리다이렉션을 수행하는 스크립트를 보면
세 명령의 출력을 output.txt 파일로 리다이렉션한다.ls -l > opuput.txt echo "Listing of foo.txt" >> output.txt cat foo.txt >> output.txt
그룹 명령 :
{ ls -l; echo "Linsting of foo.txt; cat foo.txt } > output.txt
서브쉘 :
( ls -l; echo "Linsting of foo.txt; cat foo.txt ) > output.txt
(2) 프로세스 치환
그룹 명령과 서브쉘의 차이점이 있는데, 그것은 그룹 명령은 현재 쉘에서 실행되지만 서브쉘은 현재 쉘의 복사본인 자식 쉘에서 수행한다는 것이다. 이느 쉘의 환경이 복사되고 새 개체가 주어진다는 것을 의미한다. 물론 서브쉘이 종료될 때, 복사된 환경은 사라진다.
그래서 서브쉘보다 그룹명령을 더 선호하며 그룹 명령의 처리 속도가 훨씬 빠르고 메모리를 적게 사용한다.
read 명령이 서브쉘에서 실해오디기 때문에 REPLY 변수의 내용물은 항상 비어있다. 이 문제를 해결하기 위해 프로세스 치환이라는 확장을 제공한다.echo "foo" | read echo $REPLY
read < <(echo "foo") echo $REPLY $ echo <(echo "foo") /dev/fd
(3) 비동기 실행
비동기 방식은 동시에 하나 이상의 작업을 수행할 때 적합하다. 스크립트들은 멀티태스킹하에서 동작하게 만들 수 있다.
bash는 이와 같은 비동기 실행의 관리르 ㄹ도와주는 빌트인 명령어를 가지고 있다. wait 명령어는 명시된 프로세스가 완료될 때까지 부모 스크립트의 실행을 멈추게 한다.
'스터디 > 리눅스 커맨드라인' 카테고리의 다른 글
[리눅스] 35. 배열 (0) | 2022.08.15 |
---|---|
[리눅스] 33. 흐름 제어: for 루프 (0) | 2022.08.08 |
[리눅스] 32. 위치 매개변수 (0) | 2022.08.01 |
[리눅스] 31. case 분기 (0) | 2022.08.01 |
[리눅스] 30. 문제 해결 (0) | 2022.07.25 |