표준 입력으로부터 데이터를 읽고, 표준 출력으로 데이터를 전송하는 명령어의 능력은 파이프라인이라는 기능으로 응용될 수 있다.
파이프 연산자인 | (Shift + 백슬래시키) 를 이용하면 표준 출력들을 다른 명령어의 표준 입력으로 연결시켜준다.
다음과 같이 사용하면, ls 를 통해 표준 출력으로 바로 보내지 않고, less 의 입력으로 보내 페이지 단위로 보게 해준다.
ls -l /usr/bin | less
이제 살펴볼 여러 명령어들은 파이프라인을 더 강력하게 만들어주는 명령어들이다.
uniq : 중복 줄 제거 및 표시
uniq 명령어는 sort 와 연결하여 주로 사용한다.
표준 입력으로부터 아래로 한줄씩 내려가면서, 중복되는 내용이 있으면 하나로 합쳐준다.
한줄씩 스트리밍하게 읽어가기 때문에, 내용 자체가 정렬되지 않았다면 아래에서 같은 내용이 또 나올 수 있는 것이다.
-d 옵션을 줄 경우 중복된 내용을 보여주고, -c 옵션을 사용할 경우에는 중복 횟수를 같이 보여준다.
ls /bin /usr/bin | sort | uniq # /bin 과 /usr/bin 디렉토리의 내용을 전부 입력으로 받아, 정렬 후, 중복 제거
cat test | uniq -c # test 파일을 cat 한 결과를 입력으로 받아, 중복된 라인의 갯수를 셈
wc : 라인, 단어 개수 및 파일 크기 출력
WordCount 의 약자로, 파일에 들어있는 단어 및 라인의 개수와 파일 크기를 표시해준다.
단순히 [ wc file ] 과 같이 사용하면 세가지를 모두 보여주지만, -l 옵션을 사용하면 줄의 수만 보여주기도 한다.
줄의 수를 보여준다는 것은, uniq 와 연계했을 때 전체 원소의 개수를 셀 수 있다는 의미이기도 하다.
이 역시 파이프라인을 통해 uniq 등으로부터 표준 입력으로 받아올 수 있는 것이다.
grep : 입력한 패턴과 일치하는 라인을 출력
모든 출력은 텍스트 형식으로 되기 때문에, 해당 텍스트에서 특정 패턴을 찾고 싶을 때 사용한다.
-i 옵션을 주면 검색할 때 대소문자를 구분하지 않고, -v 옵션은 반대로 일치하지 않는 라인을 출력한다.
아래와 같이 다양한 방식으로 사용되는 아주 훌륭한 명령어이다.. 왜이렇게 좋은 명령어가 많은 것일까 너무 대단하다
ps -ef | grep program
ls ~ | grep py
head / tail : 파일의 처음 혹은 끝부분을 출력
cat 등을 통해 출력하기에 파일의 크기가 너무 큰 경우가 있는데, 이럴 때 head 나 tail 을 통해 일부분만 확인할 수 있다.
판다스 등을 사용해본 사람이라면 익숙하기도 한 명령어이다.
아무 옵션 없이 사용한다면 기본적으로 10줄씩 보여주지만, -n 100 등과 같이 숫자를 조절할 수 있다.
tail 명령어 같은 경우, 로그가 지속적으로 쌓이는 파일에서 최신 로그를 확인할 때 좋다.
특히 -f 옵션을 사용하면, 해당 파일을 지속적으로 감시하며 내용이 추가될 때 마다 실시간으로 출력해주기도 한다.
모든 명령어들은 파이프라인을 통해 여러개를 섞어서 사용하면 정말 유용해진다.
메모리를 최소한으로 사용하며 쉘 상에서 데이터를 분석하고 싶을 때, 이런 명령어들이 아주 효자 역할을 한다.
리다이렉션 기능으로 파일로 저장하거나, 입력으로 받아들이고, 파이프라인으로 데이터를 처리해보도록 하자
'STUDY > Linux' 카테고리의 다른 글
[리눅스] 확장 제어 (0) | 2021.06.30 |
---|---|
[리눅스] 확장 (0) | 2021.06.28 |
[리눅스] 리다이렉션 (0) | 2021.01.25 |
[리눅스] 명령어 알아보기 (0) | 2021.01.23 |
[리눅스] 심볼릭 링크 (0) | 2021.01.22 |