Linux/Shell Script

[Shell Script] 4. Bash shell과 Rules 2

JhBeom 2023. 4. 20. 13:52

이번 포스트는 따배님의 Shell script 강의 제4강에 대한 정리를 해보겠다. 본 포스팅은 아래의 유튜브를 참조하여 만들었다.

https://www.youtube.com/watch?v=lhtdmcYllfA&list=PLApuRlvrZKog2XlvGJQh9KY8ePCvUG7Je&index=5&ab_channel=TTABAE-LEARN 

굉장히 잘 가르치시니 반드시 시청해보자

다만 내가 오늘 사용할 명령어 목록은 유튜브와 다른 것이다.

 

목차:

  1. Redirection
  2. 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 문자만 나열하는 명령어로 완성된다.

 

파이프라인은 향후 많이 사용할 일이 있으니 알아두는 것이 좋다.