오른쪽에서 왼쪽으로 리디렉션

오른쪽에서 왼쪽으로 리디렉션

오래된 습관에 따라 나는 항상 "왼쪽에서 오른쪽으로" 방향을 바꿉니다.

  1. cat file | bar
  2. foo | bar

"오른쪽에서 왼쪽으로" 리디렉션할 수 있다는 것을 알았습니다. 그러나 두 번째 형식(예: 한 프로그램에서 다른 프로그램으로)에 대해 이것을 수행하는 것이 가능합니까?

  1. bar < file
  2. 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)

관련 정보