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)

figure2


Redirection

figure2

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 | ...

figure2


example

  • 1) ls -l : 모든 파일 list 확인

    -> 총 몇개의 파일이 있을까?

  • 2) wc -l hosts : hosts라는 파일이 총 몇개의 line으로 구성되어있는지 확인

  • 3) 1 & 2를 합쳐서, 총 몇개의 파일이 있을지 확인

    • ls -l | wc -l

Categories:

Updated: