리다이렉션

2023. 4. 19. 01:53리눅스/리눅스_입문

입출력 리다이렉션과 파이프

표준 출력


명령어로 결과를 모니터에 출력하듯, 명령어 결과를 파일로 리다이렉션하여 저장할 수 있다. '>' (greater than sign 또는 right angle bracket) 기호를 사용한다. 

1 출력 리다이렉션 '>'로 ls.txt 파일에 출력결과를 저장하고 파일 내용확인


ls 명령어 결과물을 '>' 을 이용해서 'ls.txt'파일에 저장하고 '|' 파이프 라인을 연결해서 cat 명령어로 'ls.txt' 파일 내용을 확인해서 ls 명령어 결과가 입력된 것을 확인했다.

 그런데 'ls.txt' 파일에 내용을 추가하고 싶다면 '>>' 문자를 사용하면 된다.

2 '>>' 기호를 이용해서 test1.txt. 내용을 ls.txt에 추가했다.

 

3 test1.txt 에 'English only' 문장이 저장되어 있는 것을  확인하고 ls.txt 마지막에 'English only' 가 추가된 것을 확인했다.


test1.txt 파일을 출력한고 '>>'을 사용해서 'ls.txt'파일 아래에 추가하는 명령을 실행했다. test1.txt의 내용이 ls.txt의 마지막 라인에 추가된 것을 확인했다.

4 lsls.txt 파일을 지우는 명령과 결과화면


cat /dev/null > lsls.txt  : 텍스트 파일의 내용을 모두 삭제하여 빈 파일로 만든다. /dev/null 디바이스 내용을 cat명령으로 읽어서 lsls.txt 파일로 리다이렉션했다.


표준 입력 -> 파일 디스크립터 숫자는 0 
표준 출력 -> 파일 디스크립터 숫자는 1
표준 에러 -> 파일 디스크립터 숫자는 2

2>&1   : 표준 출력(1)이 전달되는 곳으로 표준 에러(2)도 전달하라는 의미이다. 
일반적으로 "명령 수행" > /dev/null 2>&1 로 사용하여 표준 에러 메시지도 /dev/null 디바이스로 전달하는데, 명령 수행에 대한 모든 에러와 표준 출력 메시지를 삭제한다.

5 존재 하지 않는 파일을 읽고 에러메시지 발생하는 것을 확인하고 에러 메시지가 화면에 출력되지 않게 했다.


linuxer.txt 파일이 존재하지 않아서 cat 명령어를 실행했을 때 표준 에러 메시지가 발생한다.
cat linuxer.txt > /dev/null 2>&1  : (2>&1) 은 표준 출력(1)으로 표준 에러(2)도 전달하라고  지정했기 때문에, cat 명령에 의한 에러 메시지도 /dev/null 디바이스로 전달되어 모니터에 아무 메시지도 출력되지 않는다. 모니터에 에러 메시지가 출력되지 않는다

6 존재하지 않는 파일을 삭제하다가 에러 메시지 발생, 에러 메시지를 파일에 저장했다.


존재 한지 않는 linuxer.txt 파일을 삭제하려 해서 에러 메시지가 발생했다.  
rm linuxer.txt > rm_error.txt 2>&1  : rm 명령 결과의 표준 에러도 표준 출력으로 리다이렉션하도록 했으므로 에러 메시지가 rm_error.txt 파일에 저장되고 모니터에 출력되지 않는다.
 
표준 입력(제목)
키보드를 대신해서 파일로부터 입력을 받을 수 있다. '<' (less than sign 또는 left angle bracket)을 사용한다.

7 입력 리다이렉션 사용 결과


입력받은 파일의 내용을 sort 명령으로 알파벳 순서로 정렬하여 화면에 출력한다. 


'리눅스 > 리눅스_입문' 카테고리의 다른 글

jobs, ps, kill  (0) 2023.04.21
파이프, 파일 퍼미션  (0) 2023.04.20
파일 복사, 디렉터리 이동  (0) 2023.04.19
ls 명령어로 시간 포맷 변경, cd 명령어  (0) 2023.04.18
1.1 리눅스와 쉘  (0) 2023.04.17