シェルバックグラウンドでプログラムを使用してファイルを開く

シェルバックグラウンドでプログラムを使用してファイルを開く

バックグラウンドbashシェルでプログラム(例:evince)を起動するコマンドは次のとおりです。

evince &

しかし、バックグラウンドで証拠のあるいくつかのファイルを開くにはどうすればよいですか?どちらも期待どおりにevince myfile.pdf &機能しませんevince & myfile.pdf。最初はこのようなものを出力します[2] 5356 が、次の行でシェルはロックを返し、2番目は空の証拠スペースを開きます。

では、どの構文を使用できますか?

ベストアンサー1

時々、プログラムを起動すると、いくつかのメッセージが印刷されます。バックグラウンドで起動すると、メッセージが表示されるようにフォアグラウンドに戻すまでプログラムがロックされます。解決策は、プログラムがバックグラウンドで実行され続けるようにstdoutとstderrをリダイレクトすることです。 1つの方法は次のとおりです。

evince myfile.pdf >~/evince.errs 2>&1 &

evince上記のコードは、表示したいメッセージを含むファイルをホームディレクトリに作成します。

evinceのメッセージが重要ではないと確信している場合は、ファイルを生成せずにそのメッセージを削除できます。

evince myfile.pdf >/dev/null 2>&1 &

上記のコマンドのいずれかを実行した後、シェルは同様のメッセージを生成し、シェル[1] 1234プロンプトが表示されます。 Graemeが提案したようにシェルプロンプトが表示されない場合は、もう一度Enterを押します。

おすすめ記事