셸은 작업 중 필요한 파일에 일련번호를 붙여서 관리하며 이를 '파일 디스크립터'라고 한다.
표준 입출력 장치도 파일로 관리되기 때문에 파일 디스크립터가 부여되어 있다.
입출력 장치를 변경할 때는 이 파일 디스크립터를 사용한다.
파일 디스크립터 | 파일 디스크립터 대신 사용하는 이름 | 정의 |
0 | stdin | 명령의 표준 입력 |
1 | stdout | 명령의 표준 출력 |
2 | stderr | 명령의 표준 오류 |
표준 입출력 장치를 바꾸기 위해서는 아래의 특수문자를 사용한다.
- 특수 문자 >, <, >>
표준 입출력 장치를 파일로 바꾸는 것을 '리다이렉션'이라고 하는데, 리다이렉션을 어떻게 하는지 자세히 알아보자.
* 출력 리다이렉션
출력의 방향을 바꾸는 출력 리다이렉션은 두 가지 방법이 있다.
두 방법의 차이는 출력 결과를 저장할 파일이 이미 존재하는 파일일 경우, 기존 파일의 내용을 유지할 것인지의 여부이다.
기존 파일의 내용을 삭제하고 새로 결과를 저장할 때는 '>' 를, 기존 파일의 내용 뒤에 결과를 추가할 때는 '>>' 를 사용한다.
- 파일 덮어쓰기 : '>'
표준 출력 파일을 바꾸는 특수문자는 '>' 이다.
기능 : 파일 리다이렉션(덮어쓰기)을 한다.
형식 : 명령 1 > 파일명 (여기서 1은 위의 파일 디스크립터 1 번을 의미한다.
명령 > 파일명
첫번째 형식의 경우 지정한 파일을 1번 파일로 간주하겠다는 것이다. '1'번이 표준 출력(화면)이므로 이를 대신하여
지정한 파일을 사용한다는 것은 결과적으로 표준 출력이 파일로 바뀌는 것을 의미 한다.
파일 디스크립터 '1'은 생략 가능하며, '1'이 생략된 것이 두 번째 형식이다.
셸은 '>'를 사용한 리다이렉션에서 지정한 파일명의 파일이 없으면 파일을 생성하여 명령의 수행 결과를 저장한다.
만약 해당 파일이 있으면 기존 내용이 없어지고 명령의 수행 결과로 대체 되므로 출력 리다이렉션을 사용할 때는 먼저
해당 이름의 파일이 있는지 확인해야 한다.
ex) ls -al : 명령의 결과가 화면으로 출력된다.
ls -al > out1 : 명령의 결과를 out1 파일에 저장한다.
cat out1 : 파일 내용을 확인해 본다.
date > out1 : date 명령의 결과를 out1 파일에 저장한다. 단, 기존 내용을 없애고 덮어쓴다.
** 아래와 같이 set 명령을 사용하면 파일 내용을 덮어쓰는 것을 예방할 수 있다.
set -o noclobber : 덮어쓰는 것을 방지하는 명령
ls -al > out1 이라고 하게 되면 덮어쓸 수 없다는 문구와 함께 덮어쓰지 않는다.
set +o noclobber : 위의 설정을 해제하여 덮어쓸 수 있게 된다.
일반적으로 cat 명령은 파일의 내용을 화면에 출력할 때 사용된다. 그러나 cat 명령은 표준 입력으로 부터 입력을 받아
표준 출력으로 보낼 수도 있다.
다음 예와 같이 cat 명령의 결과를 파일로 리다이렉션하면 키보드의 입력을 새로운 파일로 저장할 수 있다.
새로운 파일을 생성하는 것이다.
ex) [user1@localhost junsu]$ cat > out1 : 표준 입력을 받아 out1에 저장한다.
CentOS Linux : 내용을 입력한다.
I love Linux : 내용을 입력한다.
^D : 입력을 빠져나감
위와 같이 작업한 후
cat out1 이라고 파일 내용을 확인하면 아래와 같이
CentOS Linux
I love Linux
라고 입력한 값이 나타난다.
- 파일에 내용 추가하기 : >>
표준 출력을 리다이렉션하는 두 번째 특수문자는 '>>' 이다. '>>'는 명령의 실행 결과를 지정한 파일의 끝에 덧붙인다.
기능 : 파일에 내용을 추가한다.
형식 : 명령 >> 파일명
'>>'를 사용한 출력 리다이렉션에서는 지정한 파일명의 파일이 없으면 파일을 생성하고, 있으면 그 파일의 끝에 명령을 추가함.
ex) [user1@localhost junsu]$ cat out1 : 기존 파일 내용 확인하기
CentOS Linux
I love Linux
[user1@localhost junsu]$ date >> out1 : 내용을 추가함
[user1@localhost junsu]$ cat out1 : 내용 다시 확인해 보기
CentOS Linux
I love Linux
2019. 11. 02. (토) 14:31:14 KST : 추가한 내용이 마지막에 들어간다.
'컴퓨터 세상 > LiNuX' 카테고리의 다른 글
입/출력 방향 변경 - 입력 리다이렉션 (0) | 2022.02.02 |
---|---|
입/출력 방향 변경 - 오류 리다이렉션 (0) | 2022.02.02 |
셸 사용법 - 출력 명령, 특수 문자 사용 (0) | 2022.01.25 |
셸 기본 사용법 - 셸 변경, 셸 내장 명령 (0) | 2022.01.18 |
셸(Shell) 이란 (0) | 2022.01.14 |