오래된 습관에 따라 나는 항상 "왼쪽에서 오른쪽으로" 방향을 바꿉니다.
cat file | bar
foo | bar
"오른쪽에서 왼쪽으로" 리디렉션할 수 있다는 것을 알았습니다. 그러나 두 번째 형식(예: 한 프로그램에서 다른 프로그램으로)에 대해 이것을 수행하는 것이 가능합니까?
bar < file
bar ??? foo
또한 "왼쪽에서"와 "왼쪽에서"를 언제 사용해야 하는지에 대한 규칙이 있는지 궁금합니다. "올바른 시작", 또는 단지 선호도의 문제이거나 가장 짧거나 가장 우아한 경우입니다.
답변1
IIUC, Bash를 사용할 수 있습니다프로세스 교체두 번째 형태의 기능을 시뮬레이션합니다.
$ echo foobar | grep bar
foobar
$ grep bar <(echo foobar)
foobar
이것이 작동하려면 사용된 명령이 파일을 인수로 받아들일 수 있어야 합니다. grep
그렇죠?
답변2
|
일반적으로 파이프 사이의 명령은 하위 쉘에서 실행되는 것으로 생각할 수 있습니다 .
그래서
foo | bar
고려될 수 있다
(foo) | (bar)
따라서 리디렉션이 상황에 어떻게 적용되는지 이해하는 것이 도움이 될 수 있습니다.
foo < bar | baz
동등하다
(foo < bar) | (baz)
즉, 입력은 foo
파일이 되고 bar
출력은 입력이 됩니다 baz
.
프로세스 교체는 동일한 리디렉션 규칙을 따릅니다.
foo <(echo bar) | baz
동등하다
( foo <(echo bar) ) | (baz)