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

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

86
Процесс замещения и трубы

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

40
Почему подстановка процесса приводит к файлу / dev / fd / 63, представляющему собой канал?

Я пытаюсь понять именованные каналы в контексте этого конкретного примера. Я печатаю <(ls -l)в своем терминале и получаю вывод как bash: /dev/fd/63: Permission denied. Если я наберу cat <(ls -l), я мог видеть содержимое каталога. Если я заменить catс echo, я думаю , что я получаю имя...

32
Почему `sort <(ls -l)` работает, но `sort <(ls -l)` не работает?

Сегодня я узнаю кое-что о fifo в этой статье: Введение в именованные каналы , в которой упоминается cat <(ls -l). Я сделал несколько экспериментов с использованием sort < (ls -l), которое выскакивает ошибка: -bash: syntax error near unexpected token `('` Затем я обнаружил, что неправильно...

29
Почему подстановка процесса BASH не работает с некоторыми командами?

В некоторых случаях процесс замены не будет работать должным образом. Вот пример: Входные данные: gcc <(echo 'int main(){return 0;}') Выход: /dev/fd/63: file not recognized: Illegal seek collect2: error: ld returned 1 exit status Входные данные: Но он работает, как и ожидалось, когда...

25
Каков переносимый (POSIX) способ добиться замены процесса?

Некоторые оболочки, например bash, поддерживают замену процесса, которая представляет собой способ представления результатов процесса в виде файла, например: $ diff <(sort file1) <(sort file2) Однако эта конструкция не POSIX и, следовательно, не переносимая. Как можно заменить процесс на...

19
Bash: как распространять ошибки при замене процесса?

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

18
В zsh разница между cat <(cat) и cat | кошка против кошки = (кошка)?

Я ожидал cat <(cat)и cat | catсделать то же самое: скопировать строки из стандартного ввода в стандартный вывод. Насколько я понимаю, оба выполняли бы catв подоболочке, перенаправляли catstdout подоболочки во временный именованный канал, а затем выполняли другой catв текущей оболочке с его...

18
Как эмулировать процесс подстановки в Dash?

В bash, я могу использовать Process Замещение и лакомство выход процесса , как если бы это был файл , сохраненный на диске: $ echo <(ls) /dev/fd/63 $ ls -lAhF <(ls) lr-x------ 1 root root 64 Sep 17 12:55 /dev/fd/63 -> pipe:[1652825] к сожалению, замена процесса не поддерживается в dash....

16
Выход замещения процесса вышел из строя

echo one; echo two > >(cat); echo three; Команда дает неожиданный вывод. Я прочитал это: Как замена процесса реализована в Bash? и много других статей о замене процесса в Интернете, но не понимаю, почему он так себя ведет. Ожидаемый результат: one two three Реальный выход: prompt$ echo one;...

14
grep файлы из списка

Я пытаюсь запустить grep для списка из нескольких сотен файлов: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Однако, несмотря на то, что я искал строку, которая, как мне известно, находится в файлах, следующее не ищет файлы: $ grep -i 'foo' <(cat files.txt) $ grep...

14
Как совместить процесс замещения Bash с HERE-документом?

В Bash версии 4.2.47 (1) -релиз, когда я пытаюсь наклеить отформатированный текст, полученный из HERE-dcoument, примерно так: cat <(fmt --width=10 <<FOOBAR (I want the surrounding parentheses to be part of the HERE-document) (Even the preceding unbalanced parenthesis should be part of it....

13
Bash: процесс подстановки и ввода

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

13
Как правильно перехватить код выхода / обработать ошибки при использовании подстановки процесса?

У меня есть скрипт, который анализирует имена файлов в массив, используя следующий метод, взятый из Q & A на SO : unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done < <(find "$@" -type f -name '*.txt' -print0) Это прекрасно работает и прекрасно...

13
Как мне использовать тройник для перенаправления на grep

У меня нет большого опыта использования тройника, поэтому я надеюсь, что это не очень просто. После просмотра одного из ответов на этот вопрос я столкнулся со странным поведением tee. Чтобы вывести первую строку и найденную строку, я могу использовать это: ps aux | tee >(head -n1) | grep syslog...

12
Не удалось открыть файл конфигурации '/ dev / fd / 63', ошибка: нет такого файла или каталога для wpa_supplicant

Когда я делаю это: sudo wpa_supplicant -D nl80211,wext -i wlp4s0 -c <(wpa_passphrase "some ssid" "password") я получил Successfully initialized wpa_supplicant Failed to open config file '/dev/fd/63', error: No such file or directory Failed to read or parse configuration '/dev/fd/63' Есть...

11
Подстановка процессов в GNU Makefiles

В командной строке bash можно выполнить diff, используя псевдо-файлы: diff <(echo test) <(echo test) Добавление этого как есть в Makefile завершается неудачно: all: diff <(echo test) <(echo test) Ошибка (подсказка: / bin / sh указывает на / bin / bash в этой системе): /bin/sh: -c: line...

11
Почему я теряю данные при использовании этой конструкции bash pipe?

Я пытаюсь объединить несколько программ примерно так (пожалуйста, игнорируйте любые дополнительные включения, это тяжелая работа в процессе): pv -q -l -L 1 < input.csv | ./repeat <(nc "host" 1234) Где источник программы повтора выглядит следующим образом: #include <fcntl.h> #include...

11
Порядок вывода с заменой процесса

Это то , что я обычно делаю , чтобы работать grepи wcна файл , без необходимости сканирования дважды <file.txt tee >(grep LITERAL) >(wc -l) >/dev/null Тем не менее, это дает EXEC LITERAL 32 иногда и 32 EXEC LITERAL в другие времена. (Выходные данные grepпредшествуют выходным wcданным в...

11
Почему подстановка процесса <() не работает с ssh -F

У меня есть несколько бродячих виртуальных машин. Чтобы войти в них я выдаю vagrant sshкоманду. Я хочу войти в них с помощью обычной sshкоманды. vagrant ssh-configВыводит соответствующий конфигурационный файл $ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2201...