|
: Pipe
Pipe |
는 2개의 processes를 연결해주는 연결 통로로서
- pipe 앞의 프로세스의 stdout(표준출력)이
- pipe 뒤의 프로세스의 stdin(표준입력)으로 쓰이도록 연결해주는 것임.
예를 들어 ls|sort|more
의 경우 ls
의 출력이 sort
의 입력으로 들어가고, sort
의 출력이 more
의 입력으로 들어가게 된다.
이는 현재 디렉토리의 파일 및 sub-directory들의 리스트(ls
)가 정렬(sort
)이 되고 한 화면씩 출력(more
)이 되는 결과를 얻게 됨.
다음의 예를 보자.
curl https://example.com 2> /dev/null | wc -l
- URL https://example.com 의 웹페이지를 curl을 통해 stdout으로 출력하면서
- 단, stderr는 무시하고 (curl의 경우 웹페이지 정보를 다운로드하는 과정을 출력하는 status message가 stderr로 보내짐)
- curl의 stdout의 출력을 wc 프로세스의 stdin으로 pipe를 통해 연결함.
- wc -l은 stdin으로 들어오는 text 입력의 line 수를 센다.
;
: Semi-colon (or command separator)
C
언어에서 한 line에 여러 statements를 기입할 경우 이를 구분하기 위해 semi-colon ;
이 사용되는 것과 비슷하다.
- 여러 commands를 한 line으로 기재할 수 있게 해주며, 앞에서부터 commands가 차례로 수행된다.
- 주의할 점은 앞의 command가 실패하더라도 뒤의 commands가 실행이 된다는 점이다.
- 일반적으로 하나의 line에 순서대로 수행되어야하는 여러 statements를 기재할 때 사용되나, 앞의 결과가 뒤에 영향을 주지 않는 경우에 사용되어야 한다.
&&
: Double ampersand
앞서 semi-colon을 사용한 경우, 앞의 명령어가 실패해도 뒤의 명령어가 수행이 된다.
때문에 앞의 결과에 의해 영향을 받을 경우 문제가 생길 수 있다.
이 경우 상황에 따라 double ampersand나 double verticalbar 로 묶어주는게 좋다.
&&
는
- semi-colon처럼 commands를 순서대로 실행시키지만,
- 앞의 command가 수행 실패한 경우 뒤에 위치한 commands가 수행되지 않는다.
- 이를 가르켜 short-circuit evaluation 이라고 부름
||
: Double verticalbar
C
의 조건문에서 &&
는 and이고 ||
가 or로 사용되는 것을 shell에서도 같이 이용한다고 보면 된다.
||
는 앞의 명령의 결과가 실패할 경우, 뒤의 명령어가 실행된다.
참고 : redirection <
, >
, >>
redirection과 pipe 는 구분해야 한다.
redirection은 특정 process의 I/O를 stdin 과 stdout이 아닌 다른 stream으로 변경할 때 사용한다.
- 출력을 stdout(표준출력으로 보통 모니터)가 아닌 file에 저장하는 경우.
- 입력을 stdin(표준입력으로 보통 키보드)가 아닌 file로 지정.
>
는 출력을 변경하고 새로 기재하는 것이고 >>
는 출력을 변경하되 기존의 내용을 놔두고 덧붙이는(append)의 동작을 수행.<
는 입력을 변경하는 형태로 동작한다.
2023.10.02 - [Linux] - [Bash] 입출력 목적지 변경하기 : Redirection Operation
'Linux' 카테고리의 다른 글
[Linux] 파일 내용확인하기: cat, bat, less, more, head, tail (0) | 2023.09.30 |
---|---|
[Linux] 터미널 종료와 상관없이 지속 실행되는 process 만들기 : nohup, tmux (0) | 2023.09.29 |
[zsh] install zsh and oh-my-zsh (0) | 2023.09.11 |
[Tip] 특정 문구가 있는 process들을 모두 kill (0) | 2023.09.08 |
[Tip] 특정 port 사용 중인 프로세스 종료시키기 (0) | 2023.09.08 |