표준 입출력 장치
- 정보를 받아들이는 장치 : 표준 입력 장치
- 정보를 출력하는 장치 : 표준 출력 장치
- 오류 메시지를 내보내느 장치 : 표준 오류 장치
파일 디스크립터(File Descriptor)
- 리눅스는 장치도 파일로 관리.
- 쉘은 작업 중 필요한 파일에 일련번호를 붙여서 관리.
- 이를 '파일 디스크립터(File Descriptor)라고 함.
- 표준 입출력 장치도 파일로 관리되고 있으며,
입출력 장치를 변경할 때는 이 파일 디스크립터를 사용함.
표준 입출력 장치의 파일 디스크립터 |
파일 디스크립터 |
파일 디스크립터 대신 사용하는이름 |
정의 |
0 |
stdin |
명령어의 표준 입력 |
1 |
stdout |
명령어의 표준 출력 |
2 |
stderr |
명령어의 표준 오류 |
미
리다이렉션(Redirection)
- 표준 입출력 장치를 파일로 바꾸는 것을 '리다이렉션'이라고 함.
출력 리다이렉션 |
- 출력의 방향을 바꾸는 출력 리다이렉션은 두가지 방법이 있음. - 저장할 파일이 이미 존재하는 파일일 경우, 기존 파일의 내용을 유지할 것인지 여부. - '>' 은 기존 파일의 내용을 삭제하고 새로 결과를 저장할 때. - '>>' 은 기존 파일의 내용 뒤에 결과를 추가할 때. |
파일 덮어쓰기 '>' |
- 표준 출력 파일을 바꾸는 특수 문자. - 기능 : 파일 리다이렉션(덮어쓰기) - 형식 : 명령 1 > 파일 이름 명령 > 파일 이름 - 형식의 '1'은 파일 디스크립터의 1번을 의미. - 1번이 표준 출력(화면)이므로 이를 대신하여 지정한 파일을 대신해 표준 출력이 파일로 바뀌는 것을 의미. - 파일 디스크립터 1은 생략 가능하며, 보통 생략된 형식을 사용 - 쉘은 '>'을 사용한 리다이렉션에서 지정한 이름의 파일이 없으면 파일을 생성하여 명령의 수행 결과를 저장. - 만약 지정한 이름의 파일이 있으면 이전의 내용이 없어지고 명령의 수행 결과로 대체되므로, 출력 리다이렉션을 사용할 때는 먼저 같은 이름의 파일이 있는지 확인. - 예상치 않게 파일 내용을 덮어쓰는 상황을 예방하는 방법으로는 set 명령을 사용해서 예방할 수 있음. -> set -o noclobber -> set +o noclobber(해제) - 일반적으로 cat 명령은 파일 내용을 화면으로 출력할 때 사용하지만, cat 명령은 표준 입력으로부터 입력을 받아 표준 출력으로 보낼 수 있음. cat 명령의 결과를 파일로 리다이렉션하면 키보드의 입력을 새로운 파일로 저장할 수 있음. ex) user1@ubuntu:~/ch4$ cat > out1 => 표준 입력을 받아 out1에 저장 Ubuntu Linux => 내용 입력 I love Linux ^D => 입력을 종료(Ctrl + d) user1@ubuntu:~/ch4$ cat out1 => 파일 내용 확인 Ubuntu Linux I love Linux |
파일에 내용 추가하기 '>>' |
- '>>'는 명령의 실행 결과를 지정한 파일의 끝에 덧붙이는데 사용. - 기능 : 파일에 내용을 추가함. - 형식 : 명령 >> 파일 이름 - 지정한 파일이 없으면 파일을 생성하고, 파일이 있으면 기존 파일의 끝에 명령의 실행 결과를 추가. |
오류 리다이렉션 |
- 명령 실행 중 발생하는 오류 메세지를 기본적으로 화면에 출력. - 표준 출력과 표준 오류 모드 기본 장치가 화면으로 지정되어 같은 것처럼 보이지만 사실은 다르게 관리. - 파일 디스크립터를 보면, 표준 출력은 1번, 표준 오류는 2번 장치 파일. - '>' 는 '1>'과 같은 것으로, 오류 메세지를 리다이렉션 할려면 '2>' 으로 하여야함. |
'2>' |
- 기능 : 표준 오류 메시지를 파일에 저장. - 형식 : 명령 2> 파일 이름 - '>2'는 2번파일, 즉 stderr파일로 나갈 내용을 지정할 파일에 저장하라고 쉘에 알려주는 것. - 오류 리다이렉션에서는 파일 디스크립터 번호를 생략할 수 없음. |
오류 메세지 버리기
- 오류 메세지가 귀찮아서 무시하고 싶을 때는, 리눅스의 특수 파일인
'/dev/null'을 사용하면 됨.
- '/dev/null' 파일은 버리고 싶은 내용을 담는 장치 파일로,
이 파일에 전달된 모든 내용은 시스템에서 사라지고 복구 할 수 없음.
표준 출력과 표준 오류를 한 파일로 리다이렉션하기
1) 명령의 정상 실행 결과를 파일로 리다이렉션. 2) 그 명령 전체의 오류 메시지를 1번파일(표준 출력 파일, '&1'이라고 표현함)로 리다이렉션 |
- '1)'을 실행하면서 표준 출력이 먼저 변경되어 정상적인 실행결과가 파일로 저장됨. - 표준 출력이 변경된 다음이므로 '2)'에서는 오류 메시지를 1번 파일로 보내기만 하면 됨. - '2)' 는 '2>&1' 과 같이 지정. 2번 파일을 1번으로 리다이렉션하라는 뜻. '2>'와 '&1' 사이에 공백이 있으면 안 됨. |
입력 리다이렉션 |
- '<'는 표준 입력 장치 파일을 리다이렉션 하는 기능을 제공하는 특수 문자. |
'<' |
- 기능 : 표준 입력을 바꿈. - 형식 : 명령 0< 파일 이름 명령 < 파일 이름 |
cat 명령어 |
- 파일의 내용이나 키보드에서 입력을 받아 화면에 출력하는 것. - cat 명령은 파일을 읽어서 출력하는 기능 - 표준 입력을 자동으로 파일로 리다이렉션한 것. - '<' 를 생략한것 |
사용 예 |
user@ubuntu:~/ch4$ cat out1 => 파일 내용을 출력함('<' 생략) Ubuntu Linux I Love Linux. user@ubuntu:~/ch4$ cat < out1 => 표준 입력을 리다이렉션함('<' 사용) Ubuntu Linux I Love Linux. user@ubuntu:~/ch4$ cat 0< out1 => 표준 입력을 리다이렉션함('0<' 사용) Ubuntu Linux I Love Linux. |
'OS > Linux - Ubuntu' 카테고리의 다른 글
[Linux - 리눅스] Linux 구조 및 기본 명령어 (0) | 2015.01.02 |
---|---|
[Linux - 리눅스] 쉘 환경 설정 (0) | 2015.01.01 |
[Linux - 리눅스] 쉘의 종류 및 변경, 특수 문자 사용하기 (0) | 2014.12.24 |
[Linux - 리눅스] vi 환경설정 (0) | 2014.12.24 |
[Linux - 리눅스] vi 명령모드, 입력모드, 마지막 행 모드, 네임드 버퍼 등등 명령키 (0) | 2014.12.23 |