вложенная замена процесса сопровождается каналом: “плохой дескриптор файла”

Если Вы - пользователь Emacs существует Режим музы, который обеспечивает разметку languagte (стиль Wiki).

Используя музу можно опубликовать файл к HTML, PDF, DocBook, ЛАТЕКСУ, и т.д.

2
05.10.2017, 00:07
2 ответа

Я смог воспроизвести использование поведения zsh 4.3.10 (i686-pc-linux-gnu).

% cat <(funjoin  <(cat demo) <(cat demo)) | head -1 
join: /proc/self/fd/11: No such file or directory

Я вырыл в руководство и самое близкое, которое я нашел к этой проблеме, была Замена Процесса главы в man zshexpn и MULTIOS в man zshmisc.

Обе главы предлагают помещение вовлечения обходного решения фигурные скобки вокруг части команды.

Я попробовал это

% { cat <(funjoin  <(cat demo) <(cat demo)) } | head -1
1

и это работает.

Я не смог полностью grok что семантика { } находится в zsh. Руководство объясняет это просто как список команд. Я также не полностью понимаю то, что точно делает этот MULTIOS. Это, казалось, не имело никакого значения, было ли это включено или отключено.

Я пытался поместить фигурные скобки в различные места, включая в теле функции funjoin, но единственное место, где это работает правильно, вокруг внешнего cat.

1
27.01.2020, 22:14

Я не могу воспроизвести это под zsh_5.0.0-2ubuntu3_amd64.deb на Linux, но /proc/self/fd/11 походит на довольно высокое количество. Это только перестало работать с head -1? Как насчет head -10? Делает вывод

cat <(ls -l /proc/self/fd ; my_join_fn  <(cat demo.txt) <(cat demo.txt)) | head -1

привести к освещению?

1
27.01.2020, 22:14
  • 1
    Спасибо, я добавил информацию к своему сообщению, которое рассматривает Ваши вопросы. –  kjo 21.08.2013, 19:37

Теги

Похожие вопросы