STDIN 리디렉션에 대한 단일 실제 용도를 생각하기가 어렵습니다. cat < /etc/passwd
STDIN 리디렉션의 예이지만 cat을 쓸모 없게 사용하는 것만큼 어리석습니다. 저는 15년 동안 Linux를 사용해 왔지만 STDIN 리디렉션이 필요했던 때는 생각나지 않습니다. 누구든지 실제 사례가 있습니까?
답변1
여러 가지 사용 사례가 있으며 이것이 그 중 하나입니다. 커널 패치를 적용합니다:
cd linux-3.16.2 && patch -p1 < patch-3.16.2-3
답변2
아 선생님이시군요...! ! !
mysql -uUSERNAME -p < sqlfile.sql
sort < domain_list.txt > sorted_domain_list.txt
텍스트의 단어 수를 계산합니다.
root@debian:/home/mohsen# wc -c << EOF
> This is a simple lookup program
> for good (and bad) restaurants
> in Cape Town.
> EOF
90
답변3
나는 당신이 프로그램의 표준 입력을 파일로 리디렉션하기 위해 구문을 사용하는 것에 대해 구체적으로 요구하고 있다고 가정합니다. 질문이 좀 모호해서 이렇게 질문드립니다. 결국 stdin도 리디렉션됩니다.cmd < file
cmd1 | cmd2
cmd2
- 프로그램이 파일에서 데이터를 읽도록 해야 하는 경우 프로그램은 입력 파일 이름 인수를 허용하지 않습니다. 당신이 지적했듯이 둘 다 예입니다
cat < file
sort < file
<
아니요그리고 말할 수 있기 때문에 필요합니다. 좋은 예는 fkraiem이 명령을 파일에 넣은 다음 말하는 예입니다.cat file
sort file
ed
ed parameter_file < commands_file
- 프로그램이 파일에서 데이터를 읽도록 해야 할 때 입력 파일 이름 인수가 주어지면 프로그램은 stdin에서 읽을 때와 다르게 동작합니다. 내가 아는 한 가지 예는
wc
출력이 어디에 있는지인데, 출력은 스크립트에서 사용하기가 훨씬 어렵습니다. IMNSHO, 이것은 버그이지만 존재합니다.wc -l < filename
number_of_lines
wc -l filename
number_of_lines filename
wc
텍스트 파일의 값으로 작업을 수행하려는 경우:
var1 var2도 읽어보세요… 하다 코드 사용법변수 1, 변수 2,등… ︙ 완료<문서
답변4
특정 파일을 특정 명령에 대한 입력으로 보내려면 표준 입력 리디렉션이 필요한 경우가 많습니다. 이는 주로 임시 결과를 파일에 저장하는 스크립트에서 발생합니다. 상황에 따라 파이프(임시 파일이 필요하지 않음) 또는 표준 입력 리디렉션을 사용하는 임시 파일(종료 상태를 통해 이식 가능한 방식으로 오류를 제어하는 것이 더 쉽다는 장점)을 사용할 수 있습니다.
일부 명령은 이제 입력을 인수로 허용할 수 있으며, 이 경우 일반적으로 표준 입력 리디렉션이 필요하지 않습니다. 하지만 흥미롭게도 입력이 제공되는 방식에 따라 달라질 수 있으므로 쓸모 없게 사용하는 것이 cat
실제로 유용할 수도 있습니다. 예를 들어보겠습니다: gzip
.
$ echo foo > text
$ gzip -k text
$ file text.gz
text.gz: gzip compressed data, was "text", last modified: Thu Sep 18 00:38:18 2014, from Unix
여기에서 파일의 타임스탬프를 가져옵니다 text
. 그런 다음 text
파일 이름을 인수로 제공하는 대신 리디렉션을 사용합니다.
$ gzip < text > text.gz
$ file text.gz
text.gz: gzip compressed data, last modified: Thu Sep 18 00:38:18 2014, from Unix
여전히 동일한 타임스탬프를 얻지만 원본 파일 이름은 더 이상 압축 파일에 저장되지 않습니다(gone was "text"
). 이제 아무 쓸모도 없어 보이는 파이프를 사용해 보겠습니다 cat
.
$ cat text | gzip > text.gz
$ file text.gz
text.gz: gzip compressed data, last modified: Thu Sep 18 00:43:46 2014, from Unix
이번에는 타임스탬프가 변경되었습니다. 파일의 타임스탬프가 아니라 gzip이 수행된 날짜/시간입니다 text
.
따라서 원하는 내용과 명령 유형에 따라 동일해 보이지만 실제로는 약간 다른 결과를 제공하는 3가지 솔루션이 있습니다.
참고: 또 다른 예는 lpr
인쇄 명령입니다. 프린터 대기열에서 파일 이름이 누출되는 것을 원하지 않으면 파일 이름 대신 리디렉션을 인수로 사용할 수 있습니다.