端末からパイプされたコマンドを分離する方法は?

端末からパイプされたコマンドを分離する方法は?

メインプログラムを標準的な方法で実行し、グラフィックアプリケーションが実行されたら端末から切り離すようにしたいと思います。この例では、fzfファイルからパスを読み取り、選択したファイルとフォルダをmpvメディアプレーヤーに提供します。

fzf < paths.txt | mpv --playlist=-

&コマンドに追加すると、fzf対話的に実行されません。

fzf < paths.txt | mpv --playlist=- &

mpvたとえ--terminal=noフラグは単に端末の入出力を無効にし、接続されたmpvプロセスをそのまま維持します。

[...] 端末と stdin/stdout/stderr の使用を無効にします。これにより、メッセージ出力が完全に削除されます。

--really-quietとは異なり、入力および端末の初期化も無効になります。

答え1

&コマンドの後に置くと、2番目の部分だけでなくコマンド全体にも適用されます。

最後の部分をバックグラウンドで実行したい場合は、次のようにします。

fzf < paths.txt | { mpv --playlist=- & }

mpv私が見つけることができない理由で、これはシェルタスクリストに追加されませんでした。しかし、あなたのユースケースには適しているようです。

関連情報