出力をキャプチャすると、fzfの動作が変わります。

出力をキャプチャすると、fzfの動作が変わります。

次のコマンドは期待どおりに機能します。

find ~ -type f | fzf -m --preview-window=up:30% --header "ctrl-f: selected all and exit" --bind "enter:execute(less {})" --bind "ctrl-f:select-all+accept"

ただし、コマンドの最後に>outfile.txtまたはを追加すると、操作を含むすべてのオプションは無視されます。これは既知のバグですか?回避策がありますか?| xclip--bindexecute

答え1

--bindジョブを含むすべてのオプションはexecute無視されます。

私はそうは思わない。それは私のテストで動作し始めましたless。リダイレクトされたstdoutを継承するため、期待どおりに動作しますfzfless標準入力が異なるものであっても、端末からキーストロークを読みます(したがって、入力をリダイレクトすることは問題になりません)。ただし、標準出力に印刷します(したがって出力をリダイレクトするのは問題です)。less印刷された内容を確認して出力をリダイレクトするには、標準出力として明示的fzfless指定します。/dev/tty

find ~ -type f \
| fzf -m --preview-window=up:30% --header "ctrl-f: selected all and exit" \
--bind "enter:execute(less {} >/dev/tty)" \
--bind "ctrl-f:select-all+accept" >outfile.txt

関連情報