bashでプロセスを終了せずにエスケープする方法はありますか? [コピー]

bashでプロセスを終了せずにエスケープする方法はありますか? [コピー]

たとえば、入力すると、sudo apt-get update数分後に長いコンテンツのリストが表示されます。

この迷惑な更新を削除し(元のコマンドを終了せずに)bashコマンドラインを再制御するには、

これを行うためのショートカットキーやこれに似たものはありますか?

答え1

apt-get一時的に停止してCtrl-Z再起動できます。働くバックグラウンドでbg注文する

$ apt-get foo bar ...
^Z
bash: suspended apt-get
$ bg
bash: continued apt-get
$

apt-getただし、これを行うと、端末から出力が継続されます。それいいえコマンドを開始したら、コマンドを停止できます(デバッガを使用したダーティ核を除く)。ただし、ここで他のコマンドを実行できます。ジョブが停止すると、まだ存在しますが実行されないため、進行しませんが、出力も表示されません。

あなたが役に立つと思うことができるものscreenまたはtmux注文する。同じ物理端末内で異なる端末を使用して複数のセッションを実行できます。 Xを使用している場合は、別のターミナルエミュレータを実行するか、現在のタブ内に新しいタブを作成できます。どちらかapt-get update一方のシェルで実行し、別のシェルに切り替えて操作を続行できます。

答え2

この特定のコマンドでは、通常、ほとんどの場合、エラーなしで動作すると仮定できます。この場合、次のように実行することをお勧めします。

  sudo apt-get update > ~/.aptget.update.log &

括弧を使用してすべての出力を非表示にすることもできます。

  (sudo apt-get update > ~/.aptget.update.log &)

この行は、使いやすくするためにエイリアスとして使用できます。

  alias apt-update="(sudo apt-get update > ~/.aptget.update.log &)"

これにより、「apt-update」のみを使用してコマンドを実行できます。これを~/.bashrcファイルに入れると、ログインするたびに自動的に実行されます。

その後、カスタムメッセージを追加して実行中の操作を思い出させることもできます。

  alias apt-update="echo \"Running apt-get update in the background. Wait a few moments for it to finish.\" || (sudo apt-get update > ~/.aptget.update.log &)"

関連情報