Shell - 4.Bash shell과 Rules (2)
참고 강의 : TTABAE-LEARN
Contents
- 4-1. Redirection
- 4-2. Pipeline
4-1. Redirection
Communication channel
- 프로그램 & 유저가 소통하는 방식 : “코드”
- input = stdin (0)
- output = stdout (1) , stderr (2)
Redirection
ex) 계정에게 메일 보내기
mailx [계정명]
- 키보드로 입력을 함
$ mailx -s "TEST MAIL" seunghan96@localhost
# 우리의 입력을 기다리는 중... (stdin)
# 다 입력한 이후, Ctrl+d를 누르면 됨!
-
키보드 입력대신, 미리 저장해둔 파일의 내용을 보내는 법은?
-
redirection 사용하기!
-
0(키보드) 대신 message.txt로! ->
0<message.txt
( 참고 : 0,1은 생략 가능함 )
-
$ echo "this is my mail. bye" > message.txt
$ mailx -s "TEST MAIL2" seunghan96@localhost 0<message.txt
메일 잘 받았는지 확인하기
$ su - seunghan96
$ mailx
# 2개의 이메일이 도착한 것을 확인할 수 있음
# 1 누르면 첫 번째 메일, 2 누르면 두 번째 메일 확인 가능
에러(2)/정상적(1) 메세지를 다른 곳으로!
$ date 1>date.out
# date.out이라는 파일이 생성되며, (있었다면 overwrite) 그 안에는 현재 날짜.시간정보 포함
$ date 1>>date.out
# overwrite말고 append하기
# 만약 date.out이라는 파일이 없었다면, 새로 생성
$ ls nofile.txt 2>date.error
# 에러 문구가 date.error 파일에 저장됨
에러 & 정상적 메시지 한번에
$ ls yesfile nofile
# 하나는 정상 출력
# 하나는 에러 출력
$ ls yesfile nofile 2> /dev/null
# 하나는 정상 출력
# 하나는 에러로써 null에 저장
4-2. Pipeline
- 명령의 실행 결과 -> 다음 명령의 입력
- 기호 :
command1 | command 2 | ...
example
-
1)
ls -l
: 모든 파일 list 확인-> 총 몇개의 파일이 있을까?
-
2)
wc -l hosts
: hosts라는 파일이 총 몇개의 line으로 구성되어있는지 확인 -
3) 1 & 2를 합쳐서, 총 몇개의 파일이 있을지 확인
ls -l | wc -l