bashとansiエスケープコード

bashとansiエスケープコード

私はこのようなことをしたい:

user@myserver$echo -en "\rSome text to overwrite same line command is on"

問題は、私が終わった結果は次のようなことです。

Some text to overwrite same line command is onuser@myserver$

これにより、echo -e次のような結果が得られます。

Some text to overwrite same line command is on

user@myserver$

コンソールがスクロールされていることを除いて大丈夫です。私のtmuxコンソールウィンドウの高さは1行しかないので、スクロールしたくありません。文字列の右側にスペースを埋めようとしましたが、動作しません。

答え1

$ echo -en "\rSome text"

ここでは\rカーソルを行の先頭に戻すので多くのことはしませんが、コマンドラインでEnterを押すと、カーソルはすでにプロンプ​​トの次の行の先頭にあります。単純なエコーのように、出力は独自のラインにあります。

$ echo foo
foo

したがって、同じコマンドラインをうまく上書きすることはできません(少なくとも新しいコマンドラインを実行する前には不可能です)。ただし、表示された最後の行にのみ興味がある場合は、これを行う必要はありません。予防しなければならないNextプロンプトを印刷します。read続行する前に、いくつかの入力(Enterキーを押す)を待つことができます。カーソルは_後ろに残りますbar

$ echo -n foo bar ; read
foo bar_

答え2

努力する

echo -en "\rSome text to overwrite same line command is on\n"

関連情報