Latest web development tutorials

셸 입력 / 출력 리디렉션

대부분의 UNIX 시스템은 터미널 입력에서 명령을 수용하고 출력 터미널로 다시 전송됩니다 생성. 일반적으로 로컬 입력에서 읽은 명령은 기본적으로,이 터미널 될 일이, 표준 입력을했다. 마찬가지로, 명령은 일반적으로이 터미널이며, 기본적으로 표준 출력에 출력을 기록합니다.

다음과 같이 리디렉션 명령 목록입니다 :

명령 설명
명령> 파일 출력을 파일로 리디렉션합니다.
명령 <파일 파일에 입력을 리디렉션합니다.
명령 >> 파일 출력은 첨부 된 파일로 리디렉션합니다.
N> 파일 파일로 리디렉션 n 개의 파일의 파일 기술자.
N >> 파일 파일 기술자 n은 파일을 리디렉션하는 추가적인 방법을 제기합니다.
N> & m 출력 파일 m 및 n은 병합된다.
N <& m 입력 파일 m 및 n은 병합된다.
<< 태그 입력으로의 시작 태그와 종료 태그의 태그의 태그 콘텐츠.

파일 기술자 0은 표준 입력 (STDIN)이 1은 표준 출력 (STDOUT), 2는 표준 오류 출력 (STDERR)입니다, 보통합니다.


출력 재 지정

달성하기 위해 특정 기호를 삽입하는 명령 사이에 일반적으로 리디렉션합니다. 특히, 이와 같은 기호는 다음 구문에 표시된 :

command1 > file1

위의 명령은 Command1 및 다음 출력을 파일 1에 저장된 콘텐츠를 실행합니다.

이미 존재하는 어떤 콘텐츠가 새로운 콘텐츠로 대체 될 않습니다 FILE1. 이 파일의 마지막에 새로운 내용을 추가하려면 >> 연산자를 사용합니다.

는 사용자 파일 (사용자)에 명령의 출력을 리디렉션합니다 완료 다음 명령을 실행합니다 :

$ who > users

실행 후, 출력 지정된 파일에 대한 디폴트 표준 출력 장치 (단말기)로부터 리다이렉트 된 때문이고, 말단에 어떠한 출력도 없다.

해당 파일의 내용을 볼 cat 명령을 사용할 수있다 :

$ cat users
_mbsetupuser console  Oct 31 17:35 
tianqixin    console  Oct 31 17:35 
tianqixin    ttys000  Dec  1 11:33 

출력 리디렉션 파일의 내용을 덮어 씁니다, 다음의 예를 참조하십시오

$ echo "本教程:www.w3big.com" > users
$ cat users
本教程:www.w3big.com
$

당신이 덮어 쓰기 파일의 내용을 원하지 않는 경우, 당신은 예를 들어, 파일에 추가 >>을 사용할 수 있습니다 :

$ echo "本教程:www.w3big.com" >> users
$ cat users
本教程:www.w3big.com
本教程:www.w3big.com
$

입력 리디렉션

그리고 출력 재 지정과 같은 파일에서 입력을 할 수 있습니다 유닉스 명령은 구문은 다음과 같습니다

command1 < file1

따라서, 키보드로부터 입력을 얻을 수있는 원래의 필요 내용을 읽을 명령 파일로 전송됩니다.

참고 : 기호보다 더 큰 출력 리디렉션 (>), 입력 리디렉션 미만 (<).

그런 다음, 상기 실시 예는, 다음 명령을 실행 행 사용자 파일의 수를 계산해야

$ wc -l users
       2 users

또한 사용자에게 입력 파일을 리디렉션 할 수 있습니다 :

$  wc -l < users
       2 

주 : 상기 두 가지 예의 결과는 다르다 : 첫 번째 예, 출력 파일명 것, 두 번째는 단지 표준 입력으로부터 판독 알고 있지 때문이다.

command1 < infile > outfile

파일에서 읽은이 infile, 다음 Command1을 실행, 입력 및 출력 모두를 교체 한 다음 OUTFILE 출력을 작성합니다.

깊이 설명 리디렉션

정상적인 상황에서는 각 유닉스 / 리눅스 명령을 실행 세 개의 파일을 엽니 다 :

  • 표준 입력 파일 (표준 입력) : 0으로 표준 입력 파일 기술자는, 유닉스 기본 프로그램은 표준 입력에서 데이터를 읽습니다.
  • 표준 출력 파일 (표준 출력) : 파일 기술자 1 표준 출력, 표준 출력으로 출력 데이터에 유닉스 프로그램 기본값.
  • 표준 오류 (표준 오류) : 2로 열려진 파일 기술자는 유닉스 프로그램은 표준 오류 스트림에 오류 메시지를 기록합니다.

파일에 기본 명령> 파일 리디렉션 표준 출력으로 명령을 <파일은 파일로 리디렉션 표준 입력됩니다.

이 파일에 표준 오류를 리디렉션하려는 경우, 당신은 쓸 수 있습니다 :

$ command 2 > file

당신이 파일 열려진 파일의 끝에 추가하려는 경우, 당신은 쓸 수 있습니다 :

$ command 2 >> file

2는 표준 오류 파일 (표준 오류)를 나타냅니다.

이 파일로 리디렉션 표준 출력과 표준 에러 후 병합 할 경우, 당신은 쓸 수 있습니다 :

$ command > file 2>&1

或者

$ command >> file 2>&1

당신은 표준 입력과 표준 출력을 재 지정하려는 경우, 당신은 쓸 수 있습니다 :

$ command < file1 >file2

명령 명령의 표준 입력은 파일 1로 연결, 파일 2에 표준 출력을 리디렉션합니다.


여기에 문서

여기에 문서 쉘 대화 형 쉘 스크립트 또는 프로그램에 입력을 리디렉션하는 데 사용되는 특수 리디렉션 방법입니다.

다음과 같이 그것의 기본 형식은 다음과 같습니다

command << delimiter
    document
delimiter

입력으로서 명령의 두 단락에 송신되는 콘텐츠 (문서)의 역할이다.

참고 :

  • 구분 기호를 종료하면, 상단 그리드 기입해야합니다 공백 및 탭 들여 쓰기를 포함한 모든 문자를 사용할 수 없습니다 다시 앞의 문자를 가질 수 없습니다.
  • 시작 분리 전후의 공백은 무시됩니다.

화장실 -l 명령으로 명령 행 컴퓨팅 여기에 문서의 행 수 :

$ wc -l << EOF
    欢迎来到
    本教程
    www.w3big.com
EOF
3          # 输出结果为 3 行
$

우리는 여기서, 예를 들면, 스크립트에 사용되는 문서 수

#!/bin/bash
# author:本教程
# url:www.w3big.com

cat << EOF
欢迎来到
本教程
www.w3big.com
EOF

위의 스크립트, 출력의 구현 :

欢迎来到
本教程
www.w3big.com

을 / dev / null 파일

당신이 명령을 실행하지만, 화면에 출력을 표시하지 않도록하려는 경우는 / dev / null로 출력을 리디렉션 할 수 있습니다 :

$ command > /dev/null

당신이 파일에서 읽으려고한다면, 무엇을 읽을 수는 / dev / null는, 그 내용은 폐기 될 기록, 특수 파일입니다. 그러나 / 디바이스 / 널 파일 그것이 "출력을 금지"효과로서 작용한다 그것에 명령의 출력을 재 매우 유용하다.

당신은 표준 출력과 표준 에러를 보호하려는 경우, 당신은 쓸 수 있습니다 :

$ command > /dev/null 2>&1

참고 : 0 2는 표준 오류 출력 (STDERR)이며, 1은 표준 출력 (STDOUT)이며, 표준 입력 (STDIN)입니다.