![이미 파일을 처리하는 명령으로 파일의 입력 리디렉션에 "](https://rvso.com/image/97241/%EC%9D%B4%EB%AF%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94%20%EB%AA%85%EB%A0%B9%EC%9C%BC%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%9E%85%EB%A0%A5%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%EC%97%90%20%22.png)
정기적으로 다음 구문을 보았습니다.
awk 'stuff' <file
sort <file
문제는 나는 보통 다음과 같이 쓴다는 것입니다.
awk 'stuff' file
sort file
그리고 일이 완벽하게 작동합니다. 따라서 두 구문이 대략 동일하다면(또는 동일합니까?) 구문을 사용하면 어떤 이점이 있습니까 <file
?
편집하다
기존 스레드는 내 질문 중 일부를 다루고 있습니다(사용은 <
쉘이 파일을 여는 것을 의미함).첫 번째그리고그 다음에명령에 대한 표준 입력으로 전달하지만 일부는 남아 있다고 생각합니다.
- POSIX 준수?
file
논쟁 의 본질에 관한 모호함을 없애기 위한 것입니까 ?- 특정 유형의 쉘에만 해당됩니까?
- 더 이상 사용되지 않는 것으로 간주됩니까?
- 성능면에서 눈에 띄는 차이가 있습니까?
- 하나를 다른 하나에 대해 사용하는 모든 예를 환영합니다.
답변1
명령이 표준 입력(양식 command <file
) 또는 인수 목록의 명명된 파일에서 읽기를 지원하는 경우 둘 중 하나가 작동합니다. 구문 이 상당히 이식 가능하도록 tcsh
지원합니다 . command <file
주어진 명령이 인수 목록(또는 표준 입력)의 파일을 읽을 수 있는지 여부는 명령에 따라 다릅니다. ed(1)
예를 들어 표준 입력에서 명령을 읽으므로 표준 입력에서 파일을 읽을 수 없습니다.
C 수준에서 표준 입력이나 명명된 파일을 읽는 명령은 다음과 같은 작업을 수행합니다.
#include <err.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fhandle;
// option processing here ...
if (argc == 0 || strncmp(*argv, "-", (size_t) 2) == 0) {
fhandle = stdin;
} else {
if ((fhandle = fopen(*argv, "r")) == NULL)
err(1, "could not open '%s'", *argv);
}
// read from fhandle here, which is either from stdin or a file ...
}
일부 명령은 command -
표준 입력에서 읽기를 나타내는 형식을 요구하고 다른 명령은 인수 목록이 비어 있을 때 자동으로 (위의 코드에서와 같이) 그렇게 합니다. 그렇지 않으면 두 경우 모두 코드가 를 처리하게 되며 fhandle
입력이 어디서 오는지 신경 쓰지 않습니다(오류 메시지에 파일 이름이 포함되어야 하지만 추가 변수에 걸릴 수 있는 경우 제외).