GNU/Linux >> Linux の 問題 >  >> Linux

コンソール アプリケーション (Linux) で印刷された文字を消去するにはどうすればよいですか?

言語の選択について謝罪する必要はないと思います。 PHP は、コンソール アプリケーションに最適な言語です。

これを試してください:

<?php
for( $i=0;$i<10;$i++){
  print "$i \r";
  sleep(1);
}
?>

「\r」は、行を新しいテキストで上書きします。改行するには "\n" を使用できますが、既にご存知だと思います。

お役に立てれば!これが Linux で機能することはわかっていますが、Windows やその他のオペレーティング システムで機能するかどうかはわかりません。


以前に印刷された文字を消去するには、3 つのオプションがあります:

  • echo chr(8) . " "; 後ろの文字をエコーし​​、カーソルを 1 つ後ろに移動し、スペースで文字を上書きします。 chr(8) を使用できます 複数の文字を後ろに移動するには、連続して複数回。

  • echo "\r"; カーソルを現在の行の先頭に戻します。行を新しいテキストに置き換えることができます。

  • 3 番目のオプションは、ANSI エスケープ コードを使用してカーソル位置の行と列を設定し、置換文字を出力することです。すべての端末で機能するとは限りません:

  function movecursor($line, $column){
      echo "\033[{$line};{$column}H";
  }

\r うまくいきました。

今後の参考として、\b は Linux の PHP では機能しません。興味があったので、他の言語でもいくつかの実験を行いました (これは Linux で行いました - 結果が Windows/Mac で同じになるかどうかはわかりません)。

\b で動作します...

  • パール
  • ルビー
  • Tcl - コード puts -nonewline "Hello\b" を使用

\b では動作しません

  • PHP - コード print "Hello\b"; Hello\b を出力します
  • Python - コード print "Hello\b" Hello<new line> を出力します . print "Hello\b", と同じ結果

Linux
  1. コマンドラインを使用してLinuxをシャットダウンまたは再起動する方法

  2. コマンドラインを使用してLinuxを再起動する方法

  3. 現在印刷されているコンソール行を消去します

  1. LinuxでBASHコマンドライン履歴をクリアする方法

  2. LinuxターミナルでJSONファイルをきれいに印刷する方法

  3. Linux でコンソールのキーマップを変更するには?

  1. LinuxにSpotifyアプリケーションをインストールする方法

  2. Linux グループ名を 1 行の出力ではなく複数行に出力する方法

  3. Linuxで特殊文字を入力するには?