Вопросы с тегом «process-substitution»

Подстановка процессов - форма межпроцессного взаимодействия, которая позволяет вводу или выводу команды отображаться в виде файла (например: `<(cmd)` или `> (cmd)`).

5
Процесс замещения и трубы
Мне было интересно, как понять следующее: Передача стандартного вывода команды в стандартную команду другого является мощной техникой. Но что, если вам нужно передать стандартный вывод нескольких команд? Это где процесс замены приходит. Другими словами, может ли процесс замещения делать то, что может делать канал? Что может заменить процесс, а труба …

2
Почему подстановка процесса приводит к файлу / dev / fd / 63, представляющему собой канал?
Я пытаюсь понять именованные каналы в контексте этого конкретного примера. Я печатаю &lt;(ls -l)в своем терминале и получаю вывод как bash: /dev/fd/63: Permission denied. Если я наберу cat &lt;(ls -l), я мог видеть содержимое каталога. Если я заменить catс echo, я думаю , что я получаю имя терминала (или это?). …

2
Почему `sort <(ls -l)` работает, но `sort <(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 …

2
Каков переносимый (POSIX) способ добиться замены процесса?
Некоторые оболочки, например bash, поддерживают замену процесса, которая представляет собой способ представления результатов процесса в виде файла, например: $ diff &lt;(sort file1) &lt;(sort file2) Однако эта конструкция не POSIX и, следовательно, не переносимая. Как можно заменить процесс на POSIX- дружественный метод (т. Е. Тот, который работает в /bin/sh) ? примечание: …

4
Bash: как распространять ошибки при замене процесса?
Я хочу, чтобы мои сценарии оболочки не работали всякий раз, когда выполняемая с ними команда не выполняется Обычно я делаю это с: set -e set -o pipefail (как правило, я добавляю set -uтакже) Дело в том, что ничего из вышеперечисленного не работает с заменой процесса. Этот код выводит «ok» и …

1
В zsh разница между cat <(cat) и cat | кошка против кошки = (кошка)?
Я ожидал cat &lt;(cat)и cat | catсделать то же самое: скопировать строки из стандартного ввода в стандартный вывод. Насколько я понимаю, оба выполняли бы catв подоболочке, перенаправляли catstdout подоболочки во временный именованный канал, а затем выполняли другой catв текущей оболочке с его stdin, перенаправленным в канал. Вместо этого cat &lt;(cat)позволяет …

4
Как эмулировать процесс подстановки в Dash?
В bash, я могу использовать Process Замещение и лакомство выход процесса , как если бы это был файл , сохраненный на диске: $ 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. Какой …

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 …

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 …

2
Bash: процесс подстановки и ввода
Следующая строка очевидна: echo "bla" | foo | bar Но приведенные ниже делают то же самое? echo "bla" | bar &lt;(foo) echo "bla" | bar &lt; &lt;(foo) Что из того fooи barчитать "бла" из stdin и почему? Я имею в виду, что, конечно, я могу просто написать код и проверить …

4
Как правильно перехватить код выхода / обработать ошибки при использовании подстановки процесса?
У меня есть скрипт, который анализирует имена файлов в массив, используя следующий метод, взятый из Q &amp; A на SO : 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 …


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.