Articles of процесс замещение

Синтаксис подстановки процесса. Прямая / правая скобка против заднего / левого кронштейна

tldp перечисляет два синтаксиса для замещения процесса. >(command_list) и <(command_list) В чем разница, если таковая имеется?

Стойкие замены процесса?

Есть ли способ принять подстановку процесса, например, <(grep foo some/file) , и сохранить его в «файлоподобном объекте» на диске (напоминающем fifo), чтобы каждый раз, когда эта вещь открывалась для чтения через какой-то процесс P команда grep foo some/file (или что-то еще) будет запускаться заново, а результат возвращается как содержимое, считываемое процессом P ?

Как запустить chrome из командной строки с помощью замены процесса?

Я использую следующую команду без успеха – $ google-chrome <(grep "simple" SimpleDoc.txt) Если я просто сделаю grep , я получу – $ grep "simple" SimpleDoc.txt Very simple doc that contains plaintext. Я также написал скрипт python под названием showFileContents.py для проверки замещения процесса, и он работает – #! /usr/bin/python import sys arg1 = sys.argv[1] f […]

Почему на выходе «echo 123> (cat)» есть «/ dev / fd / 63»?

echo 123 | cat 123 делает то, что я ожидал, обе команды запускаются внутри одной оболочки. но когда я соединяю их с > (…) Выражение который соединяет вывод одной команды в оболочке со второй в подоболочке, я получаю следующее: echo 123 >(cat) 123 /dev/fd/63 это также верно и для других значений: echo 101 >(cat) 101 […]

Как читать из stdin при замене процесса?

Я хотел бы отправить stdout в несколько команд , однако я не уверен, как я читаю со стандартного ввода в замещение процесса? Мои попытки: $ echo foo >(cat /dev/stdin) >(cat /dev/stdin) foo /dev/fd/63 /dev/fd/62 $ echo foo >(cat -) >(cat -) foo /dev/fd/63 /dev/fd/62 $ echo foo >(cat <&3) >(cat <&3) 3<&0 foo /dev/fd/63 /dev/fd/62 […]

Как подождать подпроцесс, используемый для перенаправления ввода-вывода?

Рассмотрим следующий фрагмент сценария Bash: exec 3> >(sleep 1; echo "$BASHPID: here") do-something-interesting exec 3>&- wait $! echo "$BASHPID: there" При выполнении он производит: a.sh: line 4: wait: pid 1001 is not a child of this shell 1000: there 1001: here Как изменить строку wait так, чтобы она действительно wait завершения 1001 ? Другими словами, […]

bash ждет процесса в подстановке процесса, даже если команда недействительна

Я пытаюсь написать скрипт утилиты errpipe с простым api, который запускает stderr через фильтр. Сначала я попытался реализовать его, используя функцию замещения процесса bash. #!/bin/bash com="$1" errpipe="$2" $com 2> >(1>&2 $errpipe) Проблема заключается в том, что вывод выглядит странно, когда com не существует. Если я напечатаю sh-3.2$ ./errpipe foo cat я получил sh-3.2$ ./errpipe foo […]

Как реализовать подстановку процесса (используя скрипт bash) в оболочке, которая не имеет этого?

Я видел, как Fish shell реализует замену процесса как функцию: # === Fish shell lang: function psub mkfifo $the_pipe cat >$the_pipe & echo $the_pipe # remove pipe when bg job is done end # Example: diff (echo abc | psub) (echo def | psub) Полный код: https://github.com/fish-shell/fish-shell/blob/master/share/functions/psub.fish Я пробовал несколько часов, чтобы повторно выполнить его […]

Изменить местоположение замещения процесса zsh '= ()'

zsh по-видимому, использует /tmp/zshXXXXXX для хранения временных файлов, созданных подстановкой процесса, используя =() . Например, $ echo =(echo test) /tmp/zsh4RmpQZ Тем не менее, я хотел бы изменить местоположение в /run чтобы использовать мое монтирование tmpfs . Есть ли опция конфигурации в zsh для изменения (по умолчанию) местоположения временного файла в подстановке процесса с помощью =() […]

Как открыть файл с заменой процесса из php?

Вот что я пытался сделать сам: $ type 1.sh #!/bin/bash -eu php -r 'var_dump(file_get_contents($_SERVER["argv"][1]));' — <(echo 1) $ ./1.sh PHP Warning: file_get_contents(/dev/fd/63): failed to open stream: No such file or directory in Command line code on line 1 Warning: file_get_contents(/dev/fd/63): failed to open stream: No such file or directory in Command line code on line […]