입력 리디렉션을 사용한 프로세스 교체

입력 리디렉션을 사용한 프로세스 교체

프로세스 대체와 결합된 입력 리디렉션을 이해하려고 합니다. bash3개를 사용하고 있어요

tr는 다음과 같습니다

$ tr "o" "a" <(echo "Foo")
tr: extra operand `/dev/fd/63'
Try `tr --help' for more information.

왜 이것이 작동하지 않는지 이해한다고 생각합니다. 프로세스 대체는 표준 입력만 읽는 <( )파일 설명자를 생성합니다 .tr

올바른 리디렉션으로 작동하게 하려면 어떻게 해야 합니까?

나는 단순히 파이프를 사용할 수 있다는 것을 알고 있습니다.

$ echo "Foo" | tr "o" "a"
Faa

그러나 나는 더 나은 이해를 얻기 위해 노력하고 있습니다. man bash의 도움으로 몇 가지를 시도했지만 실제로 <&무엇을 하고 있는지 잘 모르겠습니다.

프로세스 대체를 올바르게 사용하는 방법은 무엇입니까 tr?

답변1

너희들은 정말 친하다:

tr "o" "a" < <(echo "Foo")

대체는 <()파일 설명자를 생성하고 경로를 셸에 붙여넣습니다. 이해하기 쉽도록 다음을 실행하십시오.

<(echo blubb)

오류가 표시됩니다.

-bash: /dev/fd/63: Permission denied

그렇기 때문에 단순한 파이프이기 때문에 /dev/fd/63쉘에 붙여넣고 실행할 수 없습니다. 위의 예 /dev/fd/63에서는 파이프에 쓰는 명령과 입력 리디렉션을 통해 파일 설명자에서 읽는 명령 입니다 .trecho "Foo"<tr

답변2

찾았어요배쉬 퀴프 설명시리즈는 이러한 모든 것에 대해 더 많이 배우기에 좋습니다.

특히 위에 링크된 기사는 모두 입력 리디렉션에 관한 것입니다.

위의 특정 예를 해결하려면 다음을 수행하십시오.

> tr "o" "a" <<< $(echo "Foo")
Faa

관련 정보