14. Shell 입 출력 재 설정

5070 단어
대부분의 유 닉 스 시스템 명령 은 터미널 에서 입력 을 받 고 출력 을 터미널 로 보 냅 니 다.하나의 명령 은 보통 표준 입력 이라는 곳 에서 입력 을 읽 습 니 다. 기본 적 인 상황 에서 이것 은 마침 터미널 입 니 다.마찬가지 로 하나의 명령 은 보통 출력 을 표준 출력 에 기록 합 니 다. 기본 적 인 상황 에서 이것 도 터미널 입 니 다.다음 명령 목록 으로 방향 을 바 꿉 니 다:
                                   
command > file                      file。
command < file                      file。
command >> file                           file。
n > file                            n         file。
n >> file                           n               file。
n >& m                            m   n   。
n 

출력 방향 변경
방향 을 바 꾸 는 것 은 일반적으로 명령 사이 에 특정한 기 호 를 삽입 해서 이 루어 진다.특히 이런 기호의 문법 은 다음 과 같다.
command1 > file1

이 명령 은 command 1 을 실행 하고 출력 한 내용 을 file 1 에 저장 합 니 다.파일 1 에 존재 하 는 모든 내용 이 새로운 내용 으로 대 체 될 것 임 을 주의 하 십시오.새 내용 을 파일 끝 에 추가 하려 면 >> 연산 자 를 사용 하 십시오.
실례
다음 who 명령 을 실행 합 니 다. 명령 의 전체 출력 을 사용자 파일 로 바 꿉 니 다 (users).
$ who > users

실행 후 터미널 에서 정 보 를 출력 하지 않 았 습 니 다. 이것 은 출력 이 기본 표준 출력 장치 (터미널) 에서 지정 한 파일 로 바 뀌 었 기 때 문 입 니 다.cat 명령 으로 파일 내용 을 볼 수 있 습 니 다. (cat 명령 은 파일 을 연결 하고 표준 출력 장치 에 인쇄 하 는 데 사 용 됩 니 다.)
$ cat users
_mbsetupuser console  Oct 31 17:35 
tianqixin    console  Oct 31 17:35 
tianqixin    ttys000  Dec  1 11:33 

입력
출력 재 설정 과 마찬가지 로 유 닉 스 명령 도 파일 에서 입력 을 가 져 올 수 있 습 니 다. 문법 은 다음 과 같 습 니 다.
command1 < file1

이렇게 하면 키보드 에서 입력 을 가 져 와 야 하 는 명령 이 파일 로 옮 겨 져 내용 을 읽 습 니 다.메모: 출력 재 설정 은 번호 (>) 보다 크 고 입력 재 설정 은 번호 보다 작 습 니 다 (
실례
이 어 위의 인 스 턴 스 를 통 해 users 파일 의 줄 수 를 집계 하고 다음 명령 을 실행 해 야 합 니 다. (Linux wc 명령 은 글자 수 를 계산 하 는 데 사 용 됩 니 다. wc 명령 을 이용 하여 파일 의 Byte 수, 글자 수, 열 수 를 계산 할 수 있 습 니 다. 파일 이름 을 지정 하지 않 거나 주어진 파일 이름 이 "-"이면 wc 명령 은 표준 입력 장치 에서 데 이 터 를 읽 습 니 다.)
$ wc -l users
       2 users

users 파일 로 입력 을 바 꿀 수도 있 습 니 다:
$  wc -l < users
       2 

메모: 위의 두 가지 예 는 결과 가 다 릅 니 다. 첫 번 째 예 는 파일 이름 을 출력 합 니 다. 두 번 째 예 는 표준 입력 에서 내용 을 읽 는 것 만 알 기 때 문 입 니 다.
command1 < infile > outfile

입력 과 출력 을 동시에 바 꾸 고 command 1 을 실행 하 며 파일 infile 에서 내용 을 읽 은 다음 출력 을 outfile 에 기록 합 니 다.
방향 을 바 꾸 어 심도 있 게 설명 하 다.
일반적으로 유 닉 스/리 눅 스 명령 이 실 행 될 때마다 세 개의 파일 을 엽 니 다. • 표준 입력 파일 (stdin): stdin 의 파일 설명 자 는 0 이 고, 유 닉 스 프로그램 은 기본적으로 stdin 에서 데 이 터 를 읽 습 니 다. • 표준 출력 파일 (stdout): stdout 의 파일 설명 자 는 1 이 며, 유 닉 스 프로그램 은 기본적으로 stdout 에 데 이 터 를 출력 합 니 다. • 표준 오류 파일 (stderr): stderr 의 파일 설명 자 는 2 이 며, 유 닉 스 프로그램 은 stderr 흐름 에 잘못된 정 보 를 기록 합 니 다.
기본적으로 command > file 은 stdout 을 file 로, command < file 은 stdin 을 file 로 재 설정 합 니 다. stderr 를 file 로 재 설정 하려 면 이렇게 쓸 수 있 습 니 다.
$ command 2 > file

stderr 가 file 파일 의 끝 에 추가 되 기 를 원한 다 면 이렇게 쓸 수 있 습 니 다.
$ command 2 >> file

2 표준 오류 파일 (stderr) 을 표시 합 니 다. stdout 과 stderr 를 합 친 후 file 로 다시 설정 하려 면 이렇게 쓸 수 있 습 니 다.
$ command > file 2>&1

  

$ command >> file 2>&1

이 & 는 > 뒤에 고정 적 인 의미 가 없 는 &, 재 설정 대상 은 파일 이 아니 라 파일 설명자 입 니 다. 다시 말 하면 2 > 1 은 stderr 를 현재 경로 에서 파일 이름 이 1 인 regular file 로 재 설정 하 는 것 을 의미 하 며, 2 > & 1 은 stderr 를 파일 설명자 가 1 인 파일 (즉/dev/stdout) 로 재 설정 하 는 것 을 의미 합 니 다.이 파일 은 stdout 이 file system 에서 비 치 는 것 입 니 다. & > file 은 특수 한 용법 입 니 다. > & file 로 쓸 수도 있 습 니 다. 두 사람의 뜻 은 똑 같 습 니 다. 모두 등가 입 니 다.
>file 2>&1

여기 & > 또는 > & 를 전체 로 보고 분리 하 는 것 은 단독 적 인 의미 가 없다.
stdin 과 stdout 에 대한 방향 을 바 꾸 려 면 이렇게 쓸 수 있 습 니 다.
$ command < file1 >file2

command 명령 은 stdin 을 file 1 로 재 설정 하고 stdout 을 file 2 로 재 설정 합 니 다.
Here Document
Here Document 는 Shell 에서 입력 을 대화 식 Shell 스 크 립 트 나 프로그램 으로 재 설정 하 는 특수 한 재 설정 방식 입 니 다. 기본 적 인 형식 은 다음 과 같 습 니 다.
command << delimiter
    document
delimiter

두 delimiter 사이 의 내용 (document) 을 입력 으로 command 에 전달 하 는 역할 을 합 니 다. 주의: • 끝 에 있 는 delimiter 는 반드시 대문자 로 써 야 합 니 다. 앞 에 문자 가 있어 서 는 안 되 며, 뒤에 도 빈 칸 과 tab 들 여 쓰기 가 포함 되 어 서 는 안 됩 니 다. • 시 작 된 delimiter 앞 뒤의 빈 칸 은 무시 합 니 다.
실례
명령 행 에서 wc - l 명령 을 통 해 Here Document 의 줄 수 를 계산 합 니 다:
$ wc -l << EOF
        
        
    www.runoob.com
EOF
3          #       3  

우리 도 Here Document 를 스 크 립 트 에 사용 할 수 있 습 니 다. 예 를 들 어:
#!/bin/bash

cat << EOF
    
    
www.runoob.com
EOF

이상 스 크 립 트 를 실행 하고 출력 결과:
    
    
www.runoob.com

/dev/null 파일
명령 을 실행 하고 싶 지만 화면 에 출력 결 과 를 표시 하지 않 으 려 면 출력 을/dev/null 로 바 꿀 수 있 습 니 다.
$ command > /dev/null

/dev/null 은 특별한 파일 입 니 다. 기록 한 내용 은 모두 버 려 집 니 다. 이 파일 에서 내용 을 읽 으 려 고 시도 하면 아무것도 읽 을 수 없습니다. 그러나/dev/null 파일 은 매우 유용 합 니 다. 명령 의 출력 을 다시 지정 하면 '출력 금지' 효과 가 있 습 니 다. stdout 과 stderr 를 차단 하려 면 이렇게 쓸 수 있 습 니 다.
$ command > /dev/null 2>&1

좋은 웹페이지 즐겨찾기