파이핑 명령어는 기호로 | 를 사용한다.
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. 이 출력된다.
'기타' 카테고리의 다른 글
[Ubuntu] Text Editor nano 편집기 (0) | 2024.09.24 |
---|---|
[Ubuntu] 리눅스 디렉토리 관리 (0) | 2024.09.23 |
[Ubuntu] 리눅스 Standard Input/Output/Error (0) | 2024.09.23 |
[Ubuntu] 리눅스 명령어 메뉴얼 (0) | 2024.09.23 |
[Ubuntu] 리눅스 명령어 구조 (0) | 2024.09.22 |