리눅스 장치, 파일 디스크립터
표준 입출력 장치
- 정보를 받아들이는 장치 : 표준 입력 장치
- 정보를 출력하는 장치 : 표준 출력 장치
- 오류 메시지를 내보내는 장치 : 표준 오류 장치
파일 디스크립터
파일 디스크립터 | 이름 | 정의 |
0 | stdin | 표준 입력 |
1 | stdout | 표준 출력 |
2 | stderr | 표준 오류 |
리다이렉션
- 표준 입출력 장치를 파일로 바꾸는 것
출력 리다이렉션
- 명령어에 '>' 은 기존 파일의 내용을 삭제하고 새로 결과를 저장할 때
ex) cat > file2.txt << ZZZ
표준 출력 파일을 바꾸는 문자
명령 1> 파일이름
명령 > 파일이름
명령 1에서 1은 파일 디스크립터 1 을 의미. 생략 가능
쉘은 '>'을 사용한 리다이렉션에서 지정한 파일의 이름이 없으면 파일을 생성하여 명령의 수행 결과를 저장.
지정한 이름의 파일이 있으면 이전의 내용은 없어지고 명령의 수행 결과로 대체된다.
예상치 않게 파일 내용을 덮어쓰는 상황을 예방하는 방법으로는 set 명령을 사용해서 예방할 수 있음.
set-o noclobber
set+o noclobber (해제)
일반적으로 cat 명령은 파일 내용을 화면으로 출력할 때 사용하지만,
cat 명령은 표준 입력으로부터 입력을 받아 표준 출력으로 보낼 수 있음.
cat 명령의 결과를 파일로 리다이렉션하면 키보드의 입력을 새로운 파일로 저장할 수 있음.
ex) cat > out1 -> 표준 입력을 받아 out1 에 저장
>hello
>world
^D(Ctrl+D) 종료
cat out1
hello
world
명령어에 '>>' 기존 파일의 내용 뒤에 결과를 추가할 때
'>>'는 명령의 실행 결과를 지정한 파일의 끝에 덧붙이는데 사용.
파일에 내용을 '추가'함.
사용방법
명령 >> 파일이름
지정한 파일이 없으면 파일을 생성하고, 파일이 있으면 기존 내용에 마지막에 추가함.
ex) cat << EOF > file1.txt
> hello
> world
> EOF
cat 에 hello, world 를 넣고 해당하는 내용을 file1.txt 에 넣는다는 뜻. > 은 기존에 cat에 들어간 내용을 지우고 새로운 파일 file1.txt 에 넣는다는 뜻
EOF 는 end of file 파일의 마지막에 넣는다는 뜻(다른 문구를 넣어도 된다.)
오류 리다이렉션
명령 실행 중 발생하는 오류 메세지를 기본적으로 화면에 출력
표준 출력과 표준 오류 모드 기본 장치가 화면으로 지정되어 같은 것처럼 보이지만 사실 다르게 관리함.
파일 디스크립터에서 표준출력은 1번 표준 오류는 2번 장치 파일.
'>'는 '1>' 과 같은 것, 오류 메세지를 리다이렉트하려면 '2>' 해야함.
'2>'
표준 오류 메시지를 파일에 저장.
명령 2> 파일이름
'2>'는 2번 파일, stderr 파일로 나갈 내용을 지정할 파일에 저장하라고 쉘에 알려줌.
오류 리다이렉션은 숫자 생략 불가능 '2(생략 불가능)>'
오류 메세지 버리기
/dev/null 로 버리면 된다.
'/dev/null' 파일은 버리고 싶은 내용을 담는 장치 파일로, 이 파일에 전달된 모든 내용은 시스템에서 사라지고 복구 할 수 없음.
표준 출력과 표준 오류를 한 파일로 리다이렉션 하기
1) 명령의 정상 결과를 파일로 리다이렉션명령 > file1
2) 명령 전체의 오류 메세지를 1번파일(표준출력파일 &1 이라고도함)로 리다이렉션명령 2>&1
입력 리다이렉션
'<' 는 표준 입력장치
표준 입력을 바꿈
명령 0< 파일이름
명령 < 파일이름
cat 명령어
- 파일의 내용이나 키보드에서 입력을 받아서 화면에 출력하는 것
- cat 명령은 파일을 읽어서 출력
- 표준 입력을 자동으로 파일로 리다이렉션한 것
- '<' 을 생략
cat out1
hello
world
cat < out1
hello
world
cat 0< out1
hello
world
'OS > Linux' 카테고리의 다른 글
awk, tr 조합 (0) | 2023.07.14 |
---|---|
Linux 스케줄러 (0) | 2022.11.04 |
Linux Signal (0) | 2022.08.10 |
리눅스 명령어 정리 중.. (0) | 2022.07.25 |
Linux (CentOS 6) 서비스 등록 (0) | 2022.07.25 |
Comment