빠 른 입문 셸 프로 그래 밍 (4) 파이프라인 문자

파이프 역할
파 이 프 는 실제 적 으로 프로 세 스 간 의 통신 도구 이다. 그러면 리 눅 스 명령 에 사용 되 는 것 은 주로 두 명령 이 서로 통신 할 수 있 도록 하 는 것 이다.
파이프 문자
파이프 문자 (익명 파이프) 는 Shell 프로 그래 밍 에 자주 사용 되 는 통신 도구 입 니 다.
파이프 부 호 는 '|' 로 주로 두 응용 프로그램 을 연결 한 다음 에 첫 번 째 응용 프로그램의 출력 을 두 번 째 응용 프로그램의 입력 으로 한다.세 번 째 프로그램 이 있다 면 두 번 째 프로그램의 출력 을 세 번 째 프로그램의 입력 으로 유추 할 수 있다.
예 를 들 어 ls | grep test.sh 현재 파일 에서 test.sh 파일 을 걸 러 냅 니 다.
[root@lincoding /]# ls 
bin   data  etc   lib    lost+found  net   opt   root  selinux  sys    usr
boot  dev   home  lib64  media       mnt   proc  sbin  srv   test.sh   tmp
[root@lincoding /]# ls | grep test.sh 
test.sh

파이프 문자 '|' 는 ls 명령 의 파일 목록 을 grep test.sh 명령 에 출력 하여 파일 을 걸 러 냅 니 다.
파이프 문자 와 분점 문자
파이프 부 호 는 또 주의해 야 할 부분 이 있 습 니 다. 우 리 는 아래 명령 을 통 해 파이프 부 호 를 사용 할 때 파이프 부 호 는 두 명령 에 하위 프로 세 스 를 생 성 하 는 것 을 관찰 할 수 있 습 니 다.
[root@lincoding /]# cat | ps -f
UID         PID   PPID  C STIME TTY          TIME CMD
root       2627   2623  0 14:57 pts/0    00:00:00 -bash
root      88029   2627  0 19:51 pts/0    00:00:00 cat
root      88030   2627  0 19:51 pts/0    00:00:00 ps -f

부모 프로 세 스 bash 의 pid 는 2627 이 고, 하위 프로 세 스 cat 의 pid 는 88029 이 며, 하위 프로 세 스 ps -f 의 pid 는 88030 입 니 다.
파이프 부 호 는 연 결 된 명령 에 하위 프로 세 스 를 만 들 수 있 기 때문에 현재 환경 에 영향 을 주지 않 습 니 다.
우 리 는 cd /home/ | ls 명령 으로 다음 과 같이 실행 결 과 를 검증 합 니 다.
[root@lincoding /]# cd /home/ | ls 
bin   data  etc   lib    lost+found  net   opt   root  selinux  sys    usr
boot  dev   home  lib64  media       mnt   proc  sbin  srv   test.sh   tmp   
[root@lincoding /]# pwd
/

이상 의 실행 결 과 를 통 해 알 수 있 듯 이 디 렉 터 리 전환 cd 과 같은 현재 환경 에 영향 을 줄 수 있 는 명령 은 파이프 부 호 를 사용 한 후에 현재 환경 에 영향 을 주지 않 습 니 다.
분점 ';' 을 사용 하여 두 명령 을 연결 하면 어떻게 될까요?
[root@lincoding /]# cd /sys/ ; ls
block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power
[root@lincoding sys]# pwd
/sys

분점 ';' 으로 연결 하면 cd 명령 이 현재 환경 에 영향 을 미 친 다 는 것 을 알 수 있다.
작은 매듭
분점 부호 와 파이프 부 호 는 두 명령 을 연결 할 수 있 지만 그 역할 은 다르다.분호 부 호 는 실제 적 으로 두 명령 을 분리 하 는 것 이다. 첫 번 째 조 는 집행 이 끝 났 고 그 다음 에 두 번 째 조 를 집행 했다. 두 명령 사이 에는 아무런 관계 가 없다.
파이프 문자 의 역할 은 첫 번 째 명령 결 과 를 두 번 째 명령 에 전달 하 는 동시에 첫 번 째 명령 과 두 번 째 명령 에 하위 프로 세 스 를 만 드 는 것 입 니 다. 명령 이 하위 프로 세 스에 서 실행 되 기 때문에 명령 이 유사 cd 디 렉 터 리 전환 과 같은 내장 명령 이 있 으 면 현재 환경 에 영향 을 주지 않 습 니 다.따라서 파이프 부 호 를 사용 할 때 는 내장 명령 을 피해 야 한다.

좋은 웹페이지 즐겨찾기