Программа запускается до передачи в

Немного короче, если имеется больше типов файлов, с использованием раскрытия фигурных скобок

cp -r source_directory/*.{png,jpg,jpeg} target_directory

Это выдает ошибку всякий раз, когда файл определенного типа не существует. см.https://serverfault.com/a/153893
Добавьте 2>/dev/null, чтобы скрыть эти ошибки
Добавьте || :, чтобы не вызывать код выхода

.

cp -r source_directory/*.{png,jpg,jpeg} target_directory 2>/dev/null || :

1
12.04.2021, 06:00
3 ответа

Возможно, я что-то здесь упускаю — Я никогда не слышал оfzf(или zathura, если уж на то пошло ). прежде чем я увидел этот вопрос, и у меня нет их в моей системе для тестирования. Но ... разве смысл fzfне в том, чтобы выбрать элемент из списка? Позвольте мне перефразировать это :Разве смысл fzfне в том, чтобы выбратьодинэлемент из списка? Разве xargsздесь не перебор? Разве это не логика в основном

select a man page
and then display it

?

Страница fzfна GitHub предлагает использовать $(fzf args). Следующее должно работать:

mp=$(man -k. | fzf -e --tiebreak=begin | awk '{print $1}')  &&  [ -n "$mp" ]  &&
                man -Tpdf "$mp" | zathura - &

прочитать выбранную пользователем справочную страницу -из пользовательского ввода , а затемотобразите его. Нет необходимости в (явном )временном файле. (Добавьте 2> /dev/null, если считаете, что это полезно.)

1
28.04.2021, 22:54

Я «решил» свою проблему, перенаправив вывод в свой каталог /tmp/, а затем zathura прочитал оттуда. Я также поместил все это в сценарий.

   #!/bin/sh
   d=$(date +'%M_%S');
   man -k. | fzf -e --tiebreak=begin | awk '{print $1}' | xargs man -Tpdf > /tmp/man_${d};
   zathura /tmp/man_${d} 2> /dev/null &

РЕДАКТИРОВАТЬ :Не совсем решение, пожалуйста, не используйте это

0
28.04.2021, 22:54

В этом весь смысл конвейерных линий для одновременного запуска команд с конвейерами между ними.

Для последовательного выполнения команд вам потребуются конвейеры бесконечного размера или прибегнуть к сохранению вывода во временных файлах.

С помощью zshэто можно сделать с помощью:

zathura =(
  man -k. |
   fzf -e --tiebreak=begin |
   awk '{print $1}' |
   xargs -rd '\n' man -Tpdf
)

(здесь добавлены параметры -rи -d '\n', специфичные для GNU -, поскольку нам не нужен режим синтаксического анализа по умолчанию xargsи мы не хотим запускать man, если нет ввода ).

Где =(cmd)расширяется до пути к временному файлу, который содержит вывод cmdпосле того, как cmdвернул (третью форму подстановки процесса , характерную дляzsh). Временный файл автоматически удаляется после возврата команды zathura.

2
28.04.2021, 22:54

Теги

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