파일을 입력하는 여러 가지 방법

파일을 입력하는 여러 가지 방법

다음 명령의 차이점은 무엇입니까?

$ input.txt > grep foo

$ grep foo < input.txt

$ cat input.txt | grep foo

$ grep foo input.txt

그리고 그것뿐만이 아니다 grep. 다른 명령도 마찬가지다.

답변1

  1. input.txt > grep foo 이는 버그일 수 있습니다. 그것은 작동한다주문하다 input.txt그리고 출력을 이라는 파일로 리디렉션합니다 grep. 이는 foo명령에 대한 인수입니다 input.txt.

  2. grep foo < input.txtfoo입력에서 문자열을 찾습니다 input.txt. grep명령줄에서 파일 이름을 가져오지 않으므로 표준 입력에서 작동합니다. 쉘은 파일의 내용 input.txtgrep.

  3. cat input.txt | grep foo 이는 이전 것과 유사하지만 이제 표준 입력 스트림이 명령이 파일의 내용을 전달하는 grep파이프에 연결됩니다 . 이 명령은 표준 입력 스트림으로 파이프 되는 표준 출력 스트림에 씁니다 .catinput.txtcatgrep

  4. grep foo input.txt 그러면 grep파일이 열리고 그 안에 있는 문자열을 input.txt찾습니다 . foo표준 입력 스트림을 사용하지 않습니다.

일반적으로 말하면:

  • Pipe( |)는 왼쪽의 표준 출력 스트림을 오른쪽의 표준 입력 스트림과 연결합니다.

  • InputRedirect( <)는 파일에서 표준 입력 스트림으로 리디렉션합니다.

  • OutputRedirect( >)는 표준 출력을 파일로 리디렉션합니다.

  • 입력 및 출력 스트림은 예를 들어 를 사용하여 동시에 리디렉션될 수 있으며 commandname <inputfile >outputfile명령은 파이프에 읽고 쓸 수 있습니다 command1 | command2 | command3.

  • 리디렉션과 파이프를 결합할 수 있습니다: cat <input.txt | grep foo >output.txt.

많은 Unix 유틸리티는 입력 파일 이름을 선택적 인수로 사용합니다. 파일 이름이 지정되지 않으면 표준 입력이 사용됩니다.

일부 유닉스 유틸리티오직표준 입력(예 tr: .

Bash 및 기타 셸 (예 ksh:<<<"string"여기에 있는 문자열), 대부분의 쉘은 이해합니다여기 문서(이것을 찾으십시오).

관련 정보