리오집사의 기억저장소

05. 쉘 사용하기 [입출력 방향 바꾸기]

[리다이렉션(redirection)]

>표준 입출력 장치
  -표준 입력 장치 : 리눅스에서 셸이 작업을 수행하는 데 필요한 정보를 받아들이는 장치
  -표준 출력 장치 : 실행 결과를 내보내는 장치
  -표준 오류 장치 : 표준 출력과 별도로 오류 메시지를 내보내는 장치

 파일 디스크립터  /  대신 사용하는 이름 /  정의
 0                        /stdin                         /명령어의 표준 입력
 1                        /stdout                       /명령어의 표준 출력
 2                        /stderr                       / 명령어의 표준 오류


셸은 작업 중 필요한 파일에 일련번호를 붙여서 관리하고 이를 '파일 디스크립터' 라고 한다.
입출력 장치를 변경할 때는 이 파일 디스크립터를 사용한다.
표준 입출력 장치를 파일로 바꾸려면 특수 문자 >,<.>> 등을 사용하고,
표준 입출력 장치를 파일로 바꾸는 것을 리다이렉션이라고 한다.



[출력 리다이렉션] : 출력의 방향을 바꾸는 것.
>    : 기존 파일의 내용을 삭제하고 새로 결과를 저장할 때
    명령 1> 파일 이름   <-여기서 1은 파일 디스크립터 1번 의미. 지정한 파일을 1번 파일, 즉 표준 출력으로 바꾸겠다는 의미이다.
    명령 > 파일이름      <-보통 1을 생략하고 이런 식으로 사용한다. ex) ls -al > out1 , date > out1

         p.s )  > 명령어는 덮어쓰게 되는데, set 명령을 사용하면 예상치 않게 파일 내용을 덮어쓰는 상황을 예방 가능.

>>  : 기존 파일의 내용 뒤에 결과를 추가할 때
    명령 >> 파일 이름   <-지정한 파일이 없으면 파일을 생성하고, 파일이 있으면 기존 파일의 끝에 명령의 실행 결과를 추가한다.



[오류 리다이렉션] :
명령 실행 과정에서 셸이 화면에 출력하는 메시지는 정상적인 실행 결과, 명령 실행 중 발생하는 오류 메시지, 두가지이다.
표준 오류도 기본적으로 화면에 출력되며 리다이렉션이 가능하다.
    명령 2> 파일이름      <- >는 1>와 같은 것이므로, 파일 디스크립터 번호 2를 꼭 써주어야 한다.  ex) ls /abc 2> ls.err

표준 출력과 표준 오류를 한 번에 리다이렉션 하기 위해서는 >와 2>를 함께 사용하면 된다.
    ex)  ls ./abc > ls.out 2> ls.err   <-ls로 생성된 파일을 확인해보면 둘 다 생성되고, cat으로 내용 찍어보면
                                                         ls.err에만 에러 메시지가 적혀있는걸 확인할 수 있다.

표준 출력과 표준 오류를 한 파일로 리다이렉션하는 방법  ex) ls ./abc > ls.out 2>&1
  ①명령의 정상 실행 결과를 파일로 리다이렉션(>)
  ②그 명령 전체의 오류 메시지를 1번 파일(표준 출력 파일, &1이라고 표현)로 리다이렉션(2>)



[입력 리다이렉션]
    명령 0< 파일 이름
    명령 < 파일이름 


반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band