コンソールアプリケーション/スクリプトが出力テキストを表示すると、ターミナル入力入力が新しい行に移動します。

コンソールアプリケーション/スクリプトが出力テキストを表示すると、ターミナル入力入力が新しい行に移動します。

現状:アプリケーション/スクリプトがターミナルからバックグラウンドプロセスから始まり、コンソールに出力を提供する場合(つまり、STDOUTなので出力リダイレクトなし)、ターミナルに何かを入力すると、実行中のプロセスはターミナルに何かを出力します。また、同時に、プロセスの出力は私が入力する内容に「追加」され、入力と出力が視覚的に歪みます。

望ましい結果:バックグラウンドプロセスが端末に出力を表示するたびに、「今まで入力した」入力を次の行にスキップできるかどうかを知りたいです。つまり、入力テキストは常に進行中のプロセスとは別に、最後の行に自動的に表示されます。出力)。

基本的に私は、「のようなものを達成する方法を探しています。履歴同期"コマンドはCiscoデバイスのIOSで許可されています(より良い例ここ)を有効にすると、入力中に「システム関連」出力が表示されるたびに、これまで入力したすべての内容が新しい行(常に最後の行)に配置されます。

追加: 視覚的に入力テキストと出力テキストが混在していても、コマンドを入力し続け、Enterキーを押すと正常に機能することがわかります。把握するのは難しいです。正確に出力結果がパニックになったときに何を入れましたか?

私はGnomeと一緒にDebian Jessieを使用しているので、デフォルトのGnome端末と一緒にBashを使用していますが、仮想コンソールを使用すると(CTRL + ALT + F1以降など)、同じ動作が発生します。

これを行うには非常にシンプルでよく知られており、確実な方法があるかどうかはわかりませんが、1時間のうちより良い部分を検索しましたが、役に立たなかったので、これを考える必要がない場合は申し訳ありません。わかります。

または、この機能(存在する場合)は、使用される端末アプリケーションによって異なりますか?

コメントありがとうございます。

ベストアンサー1

1つのオプションは、バックグラウンドでの作業中にSTDOUTとSTDERRをファイルにリダイレクトすることです。

ls &> job.txt &
[1] 13160
[1]+  Done                    ls &>job.txt

次に、実行中のタスクを確認してください。

jobs
[1]+  Running                 yes &>/dev/null &

また、フォアグラウンドに配置し、割り込みまたは表示してステータスをjob.txt確認することもできます(出力をバッファリングしないと仮定)。

fg 1

操作が完了したら、次のコマンドが完了した後に端末から通知を受け取る必要があります(bashではコマンド入力は中断されません)。

私の考えでは、あなたがこれをやらない理由があると思います。バックグラウンドで利用可能でCrtlI z/ Oをリダイレクトできるかどうかはわかりません。

おすすめ記事