端末で自分も知らない無限ループを実行する

端末で自分も知らない無限ループを実行する

任意のソースから次のコードを端末にコピーして実行しました。

while sleep 1;
  do tput sc;
  tput cup 0 $(($(tput cols)-29));
  date;
  tput rc;
done &

このコードは、端末の右上に実行されている時計を表示します。スニペットは本当にうまくいき、まさに私が望むように動作しましたが、今ループを終えて時計を取り除きたいです。

そして上記のコードを理解する必要があります。コマンドが何をしているのかを知っているので、いくつかのアイデアがありますが、tputまだ接続できないことがたくさんあります。

答え1

jobsセッションでコマンドを実行してアクティブなバックグラウンドジョブを一覧表示し、次に入力してフォアグラウンドにインポートできますfg <job number>。次にCtrl+を入力してCこの無限ループを停止します。

このシナリオは、コードスニペットを実行する端末にのみ適用されます。


説明する:

tput sc- カーソル位置を保存します。

tput cup 0 $(($(tput cols)-29))- カーソルを0Y軸、(count of screen columns minus 29)X軸の位置に移動します。

date- 現在の日付のみを印刷してください。

tput rc- カーソル位置を復元します。

while sleep 1; ... do ... ; done- ループ遅延1秒。

シェルのループの詳細については、help while入力してフォローしてください。while人 1 tputまたはtldp tput ドキュメントtputがどのように機能するかをご覧ください。

関連情報