반응형



$ cat a.txt > result.log 2>&1

위 명령어로 알아보는 표준 입력/출력/에러, 리다이렉트.



파일 디스크립터.

 - 0 : 표준 입력.

 - 1 : 표준 출력.(출력 디스크립터)

 - 2 : 표준 에러.(출력 디스크립터)


표준입력.

 - 기본은 키보드 입력.

 - 표준 입력 장치 변경시 < 기호 사용.


$ cat a.txt

 - cat 뒤에 나오는 첫번째 인자의 파일을 출력. a.txt 파일 내용을 출력.

 - cat 뒤에 아무것도 입력하지 않고 실행하면? 표준입력장치(키보드)로 부터 입력받은 값을 출력.( <&0 이 생략 된 것임.)

$ cat

input test

input test

print word

print word


=

$ cat <&0

input test

input test

print word

print word



$ cat a.txt     = a.txt 파일을 열어서 출력.

$ cat < a.txt  = 표준 입력을 키보드가 아닌 a.txt 로 바꿔서 출력.

 - 결과는 동일하지만 동작 방식이 다름.



표준 출력.

 - 기본은 화면.

 - 표준 출력 장치 변경시 > 기호 사용.


$ cat a.txt

 - a.txt 의 내용이 화면에 출력.


$ cat a.txt > result.log

 - a.txt 의 내용을 result.log 파일에 출력.

 - 표준 출력 장치를 파일로 변경. 

 - 출력 디스크립터를 입력하지 않으면 기본적으로 표준 출력 디스크립터로 인식. (= $ cat a.txt 1> result.log)



표준 에러.

 - 기본 출력은 화면.


$ cat err.txt

cat: err.txt: 그런 파일이나 디렉터리가 없습니다


$ cat err.txt 1> result.log

cat: err.txt: 그런 파일이나 디렉터리가 없습니다

 - 표준 출력을 파일로 지정했기 때문에 에러는 화면에 그대로 출력.


$ cat err.txt 2> result.log

 - 출력 디스크립터를 표준 에러로 설정 후 파일로 출력.

 - 에러 내용이 result.log 파일에 출력됨.



표준 출력/에러를 한 파일에 출력하기.

$ cat a.txt > result.log 2>&1

 - > : 표준 출력 장치 변경.(result.log 파일로 변경)

 - 2> : 표준 에러 출력 장치 변경.(&1 로 변경)

 - &1 : 표준 출력 장치 참조.(& : 참조, result.log 파일)


 - 다음과 같이 사용해도 결과를 같을 것임.

    $ cat a.txt 2> result.log 1>&2



주의.

 - 입/출력 장치 변경 시 <, > 기호에 붙여서 사용해야 함.

 - $ cat a.txt 2 > result.log : a.txt 파일과 2 파일 내용을 result.log 파일에 출력하게 됨.

      (cat: 2: 그런 파일이나 디렉터리가 없습니다 에러 발생.)

 - $ cat a.txt > result.log 2> &1 : -bash: syntax error near unexpected token `&' 에러 발생.

 - $ cat a.txt > result.log 2> 1 : 표준 에러를 1 파일에 출력.




반응형

'OS > Linux' 카테고리의 다른 글

awk 예제.  (2) 2014.03.24
vi 단축키 모음  (0) 2014.03.24
리소스(resource) 부하 테스트  (1) 2013.11.22
탭 자동완성 설정.  (1) 2013.11.14
[Cent OS] mysql 설치.  (0) 2013.08.16

+ Recent posts