리눅스 파이프 Pipe

su-mmer·2022년 1월 17일
0

리눅스

목록 보기
2/9
post-thumbnail

Pipe

  • 두 개의 프로그램을 연결해 주는 연결 통로의 의미
  • 첫 번째 명령의 표준 출력을 두 번째 명령의 표준 입력으로 대체
  • | 사용
  • ex. # ls -l /etc | more
  • ex. # ps -ef | grep bash
  • ex. # ls -l | grep filea

필터

[user@localhost 220117]$ ls /bin /usr/bin | sort | less

/bin 디렉토리와 /usr/bin 디렉토리의 목록을 sort 명령으로 하나의 목록으로 만들어 less 명령으로 목록을 확인한다.

uniq

표준 입력이나 하나의 파일명 인자로부터 정렬된 데이터 목록을 입력 받아 중복된 내용 제거

[user@localhost 220117]$ ls /bin /usr/bin | sort | uniq | less

중복된 내용을 같이 보고 싶다면 -d 옵션 사용

[user@localhost 220117]$ ls /bin /usr/bin | sort | uniq | less

wc - 라인, 단어 개수 및 파일 크기 출력

Word Count

[user@localhost 220117]$ wc ls-output.txt 
  1689  15518 101015 ls-output.txt

순서대로 파일에 들어있는 라인 수, 단어 개수, 파일 크기

[user@localhost 220117]$ ls /bin /usr/bin | sort | uniq | wc -l
1689

-l 옵션을 사용하여 목록의 라인 수를 출력할 수 있다.

grep - 패턴과 일치하는 라인 출력

파일의 텍스트 패턴을 찾을 때 사용

[user@localhost 220117]$ ls /bin /usr/bin | sort | uniq | grep zip
bunzip2
bzip2
bzip2recover

zip이라는 글자가 포함된 프로그램을 목록에서 찾는다.

head/tail - 파일의 처음/끝 부분 출력

기본으로 10줄 출력, -n 옵션으로 길이 조절

[user@localhost 220117]$ head -n 5 ls-output.txt 
ls: cannot access /bin/usr: No such file or directory
/usr/bin:
total 149060
-rwxr-xr-x. 1 root root      41488 Aug 20  2019 [
-rwxr-xr-x. 1 root root     107848 Oct  2  2020 a2p
[user@localhost 220117]$ tail -n 5 ls-output.txt 
-rwxr-xr-x. 1 root root     100096 Nov  6  2016 zipsplit
-rwxr-xr-x. 1 root root       2041 Apr 11  2018 zless
-rwxr-xr-x. 1 root root       2859 Apr 11  2018 zmore
-rwxr-xr-x. 1 root root       5343 Apr 11  2018 znew
lrwxrwxrwx. 1 root root          6 Jan 10 11:57 zsoelim -> soelim

파이프라인과 사용하여 다음과 같이 목록을 확인할 수 있다.

[user@localhost 220117]$ ls /usr/bin | tail -n 5
zipsplit
zless
zmore
znew
zsoelim

tail 명령어는 실시간으로 파일을 확인할 수 있는 -f옵션을 지원하기 때문에 로그 파일이 기록되는 동안 최근 내용을 확인할 때 편리하다.

tee - 표준 입력에서 데이터를 읽고, 표준 출력과 파일에 출력

표준 입력으로부터 데이터를 읽어서 표준 출력과 하나 이상의 다른 파일에 동시에 출력한다.

[user@localhost 220117]$ ls /usr/bin | tee ls.txt | grep zip
bunzip2
bzip2
bzip2recover
funzip
gpg-zip
gunzip
gzip
mzip
unzip
unzipsfx
zip
zipcloak
zipdetails
zipgrep
zipinfo
zipnote
zipsplit

디렉토리의 목록을 ls.txt에 저장하고 grep 명령어를 사용한다.
작업이 진행되고 있을 때, 중간 지점의 파이프라인 내용을 알고 싶을 때 편리하다.

참고

[리눅스 커맨드라인 완벽 입문서] - 윌리엄 E. 샤츠 주니어

0개의 댓글