プログラムがパイプされる前に開始されます。

プログラムがパイプされる前に開始されます。
man -k . | fzf -e --tiebreak=begin | awk '{print $1}' | xargs man -Tpdf | zathura -
# searches for a man page and then outputs it as pdf to zathura

このコマンドを使用すると、ユーザーはマニュアルページを選択してそのページを表示できます。ユーザーが選択するのを待っている間、zathuraはブランキングを開始し、zathuraが入力を受け取ることを除いてうまくいきます。焦点をzathuraから端末に戻してから、zathuraに戻す必要があるのは本当に面倒です。

私はスクリプトに初めて触れたので、私が知らない解決策があるかもしれないと思いました。

そうでないことをお勧めしますifne

ベストアンサー1

これがパイプからパイプに同時にコマンドを実行する点です。

順次実行されるコマンドの場合は、無限のサイズのパイプが必要な場合、または出力を一時ファイルに保存する必要があります。

を使用すると、zsh次のことができます。

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

(デフォルトの解析モードが不要で、入力なしで実行したくないため、ここにGNU固有の-rオプションが追加されました)。-d '\n'xargsman

ここでは、一度返される出力を=(cmd)含めずに一時ファイルのパスに展開されます(3番目の形式)。cmdcmdプロセスの交換)に限定されますzsh。コマンドが返されると、一時ファイルは自動的に削除されますzathura

おすすめ記事