«process-substitution» 태그된 질문

프로세스 대체 프로세스의 통신 형태로 명령의 입력 또는 출력을 파일로 표시 할 수 있습니다 (예 :`<(cmd)`또는`> (cmd)`).

5
공정 대체 및 파이프
다음을 이해하는 방법이 궁금합니다. 명령의 표준 출력을 다른 표준의 표준 입력으로 파이프하는 것은 강력한 기술입니다. 그러나 여러 명령의 표준을 파이프해야하는 경우 어떻게해야합니까? 여기에서 프로세스 대체가 시작됩니다. 다시 말해, 프로세스 대체가 파이프가 할 수있는 모든 작업을 수행 할 수 있습니까? 대체 프로세스는 무엇을 할 수 있지만 파이프는 할 수 없습니까?

2
프로세스 대체가 파이프 인 / dev / fd / 63이라는 파일을 생성하는 이유는 무엇입니까?
이 특정 예제의 맥락에서 명명 된 파이프를 이해하려고합니다. &lt;(ls -l)터미널에 입력 하고로 출력을 얻습니다 bash: /dev/fd/63: Permission denied. 을 입력 cat &lt;(ls -l)하면 디렉토리 내용을 볼 수 있습니다. 나는 교체하는 경우 cat와를 echo, 내가 터미널 이름을 얻을 생각 (또는인가?). echo &lt;(ls -l)출력을로 제공합니다 /dev/fd/63. 또한이 예제 출력은 명확하지 않습니다. ls …

2
정렬 <(ls -l)`은 작동하지만 정렬 <(ls -l)`은 왜 실패합니까?
오늘은이 기사 FIFO에 대해 뭔가를 배우고 : 소개 명명 된 파이프에 언급, cat &lt;(ls -l). 을 사용하여 몇 가지 실험을 sort &lt; (ls -l)했는데 오류가 발생합니다. -bash: syntax error near unexpected token `('` 그런 다음 명령에 여분의 공간을 잘못 추가했습니다. 그러나 왜이 추가 명령이 실패로 이어질까요? 리디렉션 기호가 (?

1
일부 명령에서 BASH 프로세스 대체가 작동하지 않는 이유는 무엇입니까?
때때로 프로세스 대체가 예상대로 작동하지 않습니다. 예를 들면 다음과 같습니다. 입력: gcc &lt;(echo 'int main(){return 0;}') 산출: /dev/fd/63: file not recognized: Illegal seek collect2: error: ld returned 1 exit status 입력: 그러나 다른 명령과 함께 사용하면 예상대로 작동합니다. grep main &lt;(echo 'int main(){return 0;}') 산출: int main(){return 0;} 다른 명령과 …

2
프로세스 대체를 달성하기위한 이식 가능한 (POSIX) 방법은 무엇입니까?
과 같은 일부 쉘 은 프로세스 출력을 파일로 표시하는 방법 인 프로세스 대체 를 bash지원 합니다. $ diff &lt;(sort file1) &lt;(sort file2) 그러나이 구조는 POSIX 가 아니므로 이식성이 없습니다. 어떻게 대체가 달성 될 처리 할 수있는 POSIX 친화적 인 방식으로 (즉, 작동 하나 /bin/sh) ? 참고 :이 질문은 두 개의 …

4
bash : 프로세스 대체에서 오류를 전파하는 방법?
명령으로 실행될 때마다 쉘 스크립트가 실패하기를 원합니다. 일반적으로 나는 다음과 같이합니다. set -e set -o pipefail (일반적으로 나는 set -u또한 추가 ) 문제는 위의 어느 것도 프로세스 대체와 함께 작동하지 않는다는 것입니다. 이 코드는 "ok"를 출력하고 리턴 코드 = 0으로 종료하지만 실패하고 싶습니다. #!/bin/bash -e set -o pipefail cat &lt;(false) …

1
zsh에서 cat <(cat) vs cat | 고양이 대 고양이 = (고양이)?
내가 예상 cat &lt;(cat)과 cat | cat같은 일을 : 표준 출력 stdin에서 라인을 복사합니다. 내 이해는 둘 다 cat서브 쉘에서 실행 하고 서브 쉘 cat의 stdout을 임시 명명 된 파이프로 cat리디렉션 한 다음 stdin이 파이프로 리디렉션 된 현재 쉘에서 다른 것을 실행 한다는 것입니다. 대신 cat &lt;(cat)터미널에 입력 할 수 …

4
대시에서 프로세스 대체를 에뮬레이트하는 방법?
에서 bash프로세스 대체를 사용하고 프로세스 출력을 디스크에 저장된 파일 인 것처럼 처리 할 수 ​​있습니다. $ echo &lt;(ls) /dev/fd/63 $ ls -lAhF &lt;(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -&gt; pipe:[1652825] 불행히도에서 프로세스 대체는 지원되지 않습니다 dash. Process Substitution대시 로 에뮬레이트하는 가장 좋은 방법은 무엇입니까 ? 출력을 …

2
프로세스 대체 출력이 순서를 벗어났습니다
그만큼 echo one; echo two &gt; &gt;(cat); echo three; 명령은 예기치 않은 출력을 제공합니다. 나는 이것을 읽었습니다 : bash에서 프로세스 대체가 어떻게 구현됩니까? 인터넷에서의 프로세스 대체에 관한 많은 기사가 있지만 왜 이런 식으로 작동하는지 이해하지 못합니다. 예상 출력 : one two three 실제 출력 : prompt$ echo one; echo two …

5
목록에서 grep 파일
몇 백 개의 파일 목록에 대해 grep을 실행하려고합니다. $ head -n 3 &lt;(cat files.txt) admin.php ajax/accept.php ajax/add_note.php 그러나 파일에서 찾은 문자열을 파악하고 있지만 다음은 파일을 검색하지 않습니다. $ grep -i 'foo' &lt;(cat files.txt) $ grep -i 'foo' admin.php The foo was found 파일 -f에서 패턴 을 읽을 플래그에 익숙 합니다. …

3
Bash의 프로세스 대체를 HERE 문서와 결합하는 방법은 무엇입니까?
Bash 버전 4.2.47 (1)-릴리스에서 HERE-dcoument와 같은 형식의 텍스트를 연결하려고 할 때 cat &lt;(fmt --width=10 &lt;&lt;FOOBAR (I want the surrounding parentheses to be part of the HERE-document) (Even the preceding unbalanced parenthesis should be part of it. FOOBAR ) # I want this paranthesis to end the process substitution. 다음과 같은 …

2
배쉬 : 프로세스 대체 및 표준 입력
다음 줄은 분명합니다. echo "bla" | foo | bar 그러나 아래의 것들도 동일합니까? echo "bla" | bar &lt;(foo) echo "bla" | bar &lt; &lt;(foo) 의 어떤 foo과 barstdin을 왜에서 "즐"를 읽어? 물론 코드를 작성하고 확인할 수는 있지만 동작이 정의되어 있는지 또는 내가 의존해서는 안되는 기능을 활용하고 있는지 확실하지 않습니다.

4
프로세스 대체를 사용할 때 종료 코드를 캡처하고 오류를 올바르게 처리하려면 어떻게합니까?
SO의 Q &amp; A에서 가져온 다음 방법을 사용하여 파일 이름을 배열로 구문 분석하는 스크립트가 있습니다 . unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done &lt; &lt;(find "$@" -type f -name '*.txt' -print0) 이것은 훌륭하게 작동하며 모든 유형의 파일 이름 변형을 완벽하게 처리합니다. 그러나 때로는 존재하지 …

3
티를 사용하여 grep으로 리디렉션하는 방법
티를 사용한 경험이 많지 않기 때문에 이것이 기본적이지 않기를 바랍니다. 이 질문에 대한 답변 중 하나를 본 후 나는 이상한 행동을 보았습니다 tee. 첫 번째 줄과 찾은 줄을 출력하려면 다음을 사용할 수 있습니다. ps aux | tee &gt;(head -n1) | grep syslog USER PID %CPU %MEM VSZ RSS TTY STAT …


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.