> 운영 및 유지보수 > 리눅스 운영 및 유지 관리 > 리눅스의 파이프 문자는 무엇입니까?

리눅스의 파이프 문자는 무엇입니까?

青灯夜游
풀어 주다: 2022-06-17 15:42:01
원래의
9611명이 탐색했습니다.

Linux에서 파이프 문자는 "|"로, 주로 둘 이상의 명령을 연결하고 하나의 명령의 출력을 다음 명령의 입력으로 사용하는 데 사용됩니다. 구문 "command1 | command2 [ | commandN. .. ]", "|" 문자 왼쪽에 있는 명령의 출력은 "|" 문자 오른쪽에 있는 명령의 입력으로 사용됩니다. 파이프 문자는 연속적으로 사용될 수 있습니다. 첫 번째 명령의 출력은 두 번째 명령의 입력으로 사용되고, 두 번째 명령의 출력은 세 번째 명령의 입력으로 사용됩니다.

리눅스의 파이프 문자는 무엇입니까?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Shell에는 두 개 이상의 명령(프로그램 또는 프로세스)을 함께 연결하고, 한 명령의 출력을 다음 명령의 입력으로 사용하는 기능도 있습니다. 이렇게 연결된 두 개 이상의 명령이 파이프를 형성합니다. .

Linux 파이프는 수직 막대|를 사용하여 파이프 문자라고 하는 여러 명령을 연결합니다.

command1 | command2
command1 | command2 [ | commandN... ]
로그인 후 복사

두 명령 사이에 파이프가 설정되면 파이프 기호 | 왼쪽 명령의 출력이 오른쪽 명령의 입력이 됩니다. 첫 번째 명령이 표준 출력에 쓰고 두 번째 명령이 표준 입력에서 읽는 한 두 명령은 파이프를 형성할 수 있습니다. 대부분의 Linux 명령을 사용하여 파이프를 형성할 수 있습니다.

파이프 문자는 연속적으로 사용될 수 있습니다. 첫 번째 명령의 출력은 두 번째 명령의 입력으로 사용되고, 두 번째 명령의 출력은 세 번째 명령의 입력으로 사용됩니다.

리눅스의 파이프 문자는 무엇입니까?

여기서 command1은 올바른 출력을 가져야 하며 command2는 command2의 출력 결과를 처리할 수 있어야 하며 command2는 command1의 올바른 출력 결과만 처리할 수 있지만 다음의 오류 메시지는 처리할 수 없다는 점에 유의해야 합니다. 명령1.

예: hello.sh 파일을 정렬하고 중복 제거 후 "better"가 포함된 줄을 찾습니다. 명령은 다음과 같습니다. cat hello.sh | sort | grep 'better'

텍스트 보기

Sort
  • 중복 제거
  • Filter

  • 【1】첫 번째 단계 - 텍스트 보기리눅스의 파이프 문자는 무엇입니까?
  • 먼저 cat 명령을 사용하여 텍스트를 확인하고, 화면에 인쇄되는 내용은 cat 명령의 출력입니다.
[root@linuxforliuhj test]# cat hello.sh 
hello this is linux
be better
be better
i am lhj
hello this is linux
i am lhj
i am lhj
be better
i am lhj
have a nice day
have a nice day
hello this is linux
hello this is linux
have a nice day
zzzzzzzzzzzzzz
dddddddd
gggggggggggggggggggg
[root@linuxforliuhj test]#
로그인 후 복사

【2】두 번째 프로세스 - 정렬

이전 cat 명령으로 출력된 결과가 파이프라인을 통해 sort 명령으로 전달되므로 sort 명령은 이전 cat 명령으로 출력된 텍스트를 정렬합니다

[root@linuxforliuhj test]# cat hello.sh | sort
be better
be better
be better
dddddddd
gggggggggggggggggggg
have a nice day
have a nice day
have a nice day
hello this is linux
hello this is linux
hello this is linux
hello this is linux
i am lhj
i am lhj
i am lhj
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]#
로그인 후 복사
로그인 후 복사

【3】 세 번째 프로세스 프로세스 - Deduplication

이전 uniq 소개 글에서 언급했듯이 sort는 uniq와 함께 사용하면 효과적으로 중복 제거가 가능하므로 sort별로 출력된 텍스트는 파이프라인을 통해 처리하기 위해 uniq로 보내지므로 uniq는 sorted를 처리합니다. text., 중복을 효과적으로 제거할 수 있습니다

[root@linuxforliuhj test]# cat hello.sh | sort | uniq
be better
dddddddd
gggggggggggggggggggg
have a nice day
hello this is linux
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]#
로그인 후 복사

【4】네 번째 프로세스 - 필터링

필터링의 마지막 단계는 이전 명령인 uniq 명령

[root@linuxforliuhj test]# cat hello.sh | sort | uniq | grep 'better'
be better
[root@linuxforliuhj test]#
로그인 후 복사

을 처리한 후 텍스트 출력을 필터링하는 것입니다. 여기에 핵심이 있습니다. !

여기에 중요한 점이 있습니다!

여기에 중요한 점이 있습니다!

위의 cat, sort, uniq, grep 및 기타 명령은 모두 파이프 문자를 지원합니다. 표준 입력에서 처리됩니다(즉, rm, kill 및 기타 명령과 같은 일부 명령의 경우 표준 입력에서 매개변수 읽기를 지원하지 않고 명령줄에서 매개변수 읽기만 지원합니다). (즉, rm 명령 파일이나 디렉터리 뒤에 delete를 지정해야 하고, kill 명령 뒤에 kill할 프로세스 번호를 지정해야 하는 등)

그러면 어떤 명령이 파이프를 지원하는지, 어떤 명령이 있는지 파이프를 지원하지 않습니까?

일반적으로 sort, uniq, grep, awk, sed 등과 같이 텍스트를 처리하는 명령은 모두 파이프를 지원하고, rm 및 ls와 같이 텍스트를 처리하지 않는 명령은 파이프를 지원하지 않습니다.
[root@linuxforliuhj test]# cat hello.sh | sort
be better
be better
be better
dddddddd
gggggggggggggggggggg
have a nice day
have a nice day
have a nice day
hello this is linux
hello this is linux
hello this is linux
hello this is linux
i am lhj
i am lhj
i am lhj
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]#
로그인 후 복사
로그인 후 복사

있습니다. sort 이후에 매개변수가 없으면 파이프 문자에 의해 던져진 이전 명령의 출력이 처리됩니다(즉, 이전 명령의 표준 출력이 이 명령의 표준 입력으로 사용됩니다)

[root@linuxforliuhj test]# ls
beifen.txt  hello.sh  mk  read.ln  read.sh  read.txt  sub.sh
[root@linuxforliuhj test]# ls | grep read.sh
read.sh
[root@linuxforliuhj test]# ls | grep read.sh | rm
rm: missing operand
Try 'rm --help' for more information.
[root@linuxforliuhj test]#
로그인 후 복사

파일이 rm 후에 삭제가 지정되지 않으면 오류가 보고됩니다. 매개변수가 손실되므로 rm과 같은 명령은 표준 입력에서 매개변수 읽기를 지원하지 않습니다. 이는 명령줄에서 매개변수 지정, 즉 삭제할 파일 지정만 지원합니다.

표준 입력 매개변수와 명령줄 매개변수 중 무엇이 우선합니까?

다음 두 파일이 있습니다
[root@linuxforliuhj test]# cat a.txt 
aaaa
dddd
cccc
bbbb
[root@linuxforliuhj test]# cat b.txt 
1111
3333
4444
2222
[root@linuxforliuhj test]#
로그인 후 복사
명령을 실행합니다: cat a.txt | sort

[root@linuxforliuhj test]# cat a.txt | sort
aaaa
bbbb
cccc
dddd
[root@linuxforliuhj test]#
로그인 후 복사

sort의 명령줄 매개변수가 비어 있으면 이전 명령의 출력이 이 명령의 입력으로 사용됩니다. 기본적으로

실행 명령: cat a.txt | sort b.txt

[root@linuxforliuhj test]# cat a.txt | sort b.txt 
1111
2222
3333
4444
[root@linuxforliuhj test]#
로그인 후 복사

sort의 명령줄 매개변수(여기서는 b.txt)가 비어 있지 않으면 sort가 표준 입력의 매개변수를 읽지 않는다는 것을 알 수 있습니다. , 그리고 명령줄 매개변수를 읽을 때

명령을 실행합니다: cat a.txt | sort b.txt -

[root@linuxforliuhj test]# cat a.txt | sort b.txt -
1111
2222
3333
4444
aaaa
bbbb
cccc
dddd
[root@linuxforliuhj test]#
로그인 후 복사

" - "표준 입력, 즉 cat a.txt 명령의 출력을 나타냅니다. b.txt 파일과 표준 입력을 함께 사용하는 것과 같습니다. 정렬은 a.txt b.txt를 정렬하는 것과 같습니다

[root@linuxforliuhj test]# sort a.txt b.txt
1111
2222
3333
4444
aaaa
bbbb
cccc
dddd
[root@linuxforliuhj test]#
로그인 후 복사

思考:对于rm、kill等命令,我们写脚本时常常会遇到需要查询某个进程的进程号然后杀掉该进程,查找某个文件然后删除它这样的需求,该怎么办呢?那就用xargs吧!

相关推荐:《Linux视频教程

위 내용은 리눅스의 파이프 문자는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿