본문 바로가기
OS/Linux Server

[Shell Programming] 4. Bash shell의 Rules(2)

by Haengsin 2022. 2. 21.

Bash shell의 Rules(2)

 

1. Redirection

(1) Communication Channels

프로그램이 키보드를 통해 입력을 받고 터미널을 통해 출력하여 사용자에게 보여줌.

 

- 표준 입력 : Keyboard - 0번은 키보드로 연결

- 표준 출력 : Terminal  - 1번이 키보드로 연결

- 표준 에러 : Terminal  - 2번이 키보드로 연결

 

배쉬 셸은 번호를 붙여서 관리 함.

이것의 방향을 바꿔버린 다는 것이 Redirection 의 개념.

 

(2) Redirection 

보통 입력은 키보드를 통해서 이루어진다. 하지만, 파일을 이용해서 입력을 받을 때, 이것을 "파일 리다이렉션" 이라 한다.

$ echo "This is TEST" > test.txt
$ mailx -s "Test Mail" centos@localhost 0< test.txt
// 키보드를 통해서 입력 받았던 상태가 test.txt 파일을 통해서 입력받는 형태로 바뀐다.
// 0< 대신 < 으로 0을 생략해도 된다.
$ mailx -s "Test Mail" centos@localhost < test.txt

 

명령어를 입력하면 일반적으로 결과를 터미널을 통해 사용자에게 출력한다.

예시 date

이것을 터미널이 아닌 파일을 통해 출력할 수 있다.

$ date 1> date.out
$ date > date.out

그러나, 이전의 것을 그대로 둔 채, 기존 내용에 추가를 하고 싶다면 '>>' 를 이용하면 된다.

$ date >> date.out

다음으로, 에러 메시지의 방향을 바꿔보자.

$ ls a.txt 
// 해당 파일이 없으므로 에러 메시지가 터미널에 출력된다.

$ ls a.txt 2> error.txt
에러 메시지가 파일에 출력된다.

 

 

2. Pipeline 

여러 개의 명령어를 조합해서 사용할 수 있는 기능. 명령어1의 실행 결과를 명령어2에 넣어주는 것.

- 명령의 실행 결과를 다음 명령의 입력으로 전달.

- 리눅스의 명령어를 조합하여 사용

- 기호 : command1 | command2 | command3

$ ls -l | wc -l
// ls -l 명령어의 결과를 wc -l 에 전달.
// 즉, 현재 디렉토리의 파일의 개수를 Count 한다.


$ ls -l | more
// ls -l 의 결과를 한 페이지 씩 출력.

$ cat /etc/passwd | cut -d: -f 1 | sort | wc -l
// /etc/passwd 파일 내용을 출력
// 그 결과를 cut -d: (':'을 분리 문자) -f 1 (-f 첫 번째 필드를) 출력
// 그 결과를 sort
// 그 결과를 count

$ alias usercount='cat /etc/passwd | cut -d: -f 1 | sort | wc -l
$ usercount
// 위의 내용을 alias에 저장하여 사용해도 편리함.

 

 

● Reference

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