본문 바로가기
기타

[Ubuntu] 파이핑 명령어

by 자몽먹은토끼 2024. 9. 23.
728x90
반응형

파이핑 명령어는 기호로 | 를 사용한다.

python과 연결짓자면 의미는 동일하다. 랭체인 시에도 사용했던 것 처럼

a | b 에서 a의 결과 값을 b로 넘겨주는 체인 역할과 동일하다.

 

 

 

먼저 아래의 코드를 살펴보자.

date 명령어를 사용하면 현재 시간이 출력되고, 이를 리디렉션을 통해 txt 파일로 저장해보면 txt 파일에 현재 시간이 저장된다.

(참고)  2024.09.23 - [기타] - [Ubuntu] 리눅스 Standard Input/Output/Error

 

새로 보이는 cut 명령어는 파이썬에서의 split과 동일한 명령어 같다.

-d (--delimiter) 옵션은 뭘 기준으로 split할 것인지, -f (--field) 옵션은 split중에 몇 번째 걸 가져올지

 

따라서 위 명령어에서는 날짜 텍스트에서 띄어쓰기 기준으로 나눈 후에 첫번째 덩이를 가져오게 된다.

그래서 출력된 결과가 2024. 으로 나온 것을 확인할 수 있다.

 

 

 

그럼 date 명령어와 cut 명령어를 어떻게 txt 파일에 저장하지 않고 한번에 처리할 수 있을까? 

 

파이핑 기호를 사용하면 된다. 랭체인 연결하듯이 결과값을 넘겨주면 된다.

date 명령어의 출력 결과를 cut 명령어의 input으로 들어간다. 이때 옵션에 맞도록 명령어를 적용하면

출력 결과 2024. 를 확인할 수 있다.

 

이 출력결과를 txt 파일로 저장하고 싶다면 배웠던 리디렉션을 붙여주면 된다.

date | cut --delimiter " " --field 1 > year.txt

이렇게 하면 year.txt 파일에 2024. 이 들어간다.

 

 

 

한번 순서를 바꿔 볼까

date > year.txt | cut --delimiter " " --field 1

리디렉션을 앞으로 위와 같이 옮겨보면, year.txt에는 date의 결과 값이 들어가게 되고

출력은 아무것도 되지 않는다.

왜냐하면 txt 로 이미 출력값이 들어갔는걸? 그러면 cut의 input으로는 아무것도 들어간게 없게 된다.

 

 

 

 

txt 파일로도 저장되고, cut 명령어의 입력으로도 들어가게 하려면 ?

date ____   cut 명령어
         |___   date.txt

date의 결과값을 위와 같이 cut 명령어와 리디렉션, 두가지에 모두 전달해야 한다.

이때 아래로의 가지를 새로 뻗도록 하는 명령어가 따로 있다.

바로 tee 명령어이다.

date | tee date.txt | cut --delimiter " " --field 1

위와 같이 코드를 작성하게 되면 date의 결과값이 tee 명령어의 입력으로 들어가 txt 파일이 만들어지고,

tee 명령어를 통해 다른 가지가 만들어졌으니, 그 뒤에 있는 cut명령어로도 date의 결과값이 들어가게 된다.

따라서 터미널 창에 2024. 이 출력된다.

 

728x90
반응형