[Shell Script] 4. Bash shell과 Rules 2
이번 포스트는 따배님의 Shell script 강의 제4강에 대한 정리를 해보겠다. 본 포스팅은 아래의 유튜브를 참조하여 만들었다.
굉장히 잘 가르치시니 반드시 시청해보자
다만 내가 오늘 사용할 명령어 목록은 유튜브와 다른 것이다.
목차:
- Redirection
- Pipeline
먼저 알아야 할 것은 입력과 출력에 대한 개념이다.
우리는 보통 입력을 할 때 무엇을 사용하는가? 키보드를 사용한다.
그래서 우리는 파일에 무언가를 넣을 때 키보드로 직접 문자들을 사용하여 입력을 수행한다.
echo는 출력을 도와주는 명령어이다. 만약 내가 echo 후에 특정 문자열을 키보드로 입력하면 그 문자가 나의 스크린에 출력이 된다.
근데 "1>" 라는 키워드를 사용하면 신기하게도 우측에 있는 파일로 입력을 집어넣을 수 있다.
3번째 줄을 보면 "hello world" 를 > 기호를 사용하여 message.txt 라는 곳으로 입력하라고 했다. (1> 기호를 사용하던 > 기호를 사용하던 똑같다. 귀찮으니까 1을 생략한다.)
그리고 message.txt에 들어있는 내용을 확인하면 hello world라는 내용이 들어있다.
위의 예시는 message.txt를 cat 명령어에게 입력으로 주는 것이다. 사실상 cat message.txt랑 똑같은 커멘드이긴 하지만...
< 기호는 0<과 같은 의미이다.
만약 >> 이나 <<을 사용하면 내용을 덮어씌우는 것이 아니라 내용을 추가할 수 있다.
자세한 내용은 영상을 참조하자
2. 파이프라인
파이프라인이란 명령의 실행결과를 그 다음 명령의 입력으로 전달하는 것이다. 금을 정재해내는 과정이라고 생각하면 된다.
금을 만들려면 먼저 원석을 가지고 불에 녹인다. 이렇게 1차로 걸러지는 금을 가지고 또 정재해서 금을 가진다. 그걸 가지고 또 정재하고... 또 정재하고.... 이런 방식을 14k, 18k, 24k 금이 만들어진다. 바로 이 정재의 과정이라 생각하면 편하다.
명령어1 | 명령어2 | 명령어3
이런 방식으로 사용한다.
이러면 명령어 1에서 나온 결과값을 명령어 2의 입력값으로 가진다. 그리고 명령어 2 실행후의 결과값을 명령어 3의 입력값으로 가진다.
예를들어 wc -l은 총 라인수를 출력해준다.
그리고 ls -l 은 디렉터리를 리스트화해서 보여준다.
예시를 보자
ls -l 후에 나온 총 리스트는 19개이다. 그 19개의 줄을 계산하는 명령어가 wc -l이다.
그래서 최종 결과값은 19가 되는 것이다.
ls -l에서 나온 출력값을 wc -l의 입력값으로 받아낸 것이다.
다른 예시를 보자
ls 를 치면 본래 나오는 목록이 꽤나 많다.
ls -l을 하면 19개의 목록이 나올 것이다.
그런데 만약 ls -l 에서 파이프라인을 넣고 txt 문자열을 찾는 명령어를 쓰면 txt 문자만 나열하는 명령어로 완성된다.
파이프라인은 향후 많이 사용할 일이 있으니 알아두는 것이 좋다.