端末出力の出力順序を変更する標準的な方法はありますか?つまり:
~/Developer $ command0
-bash: comman0: command not found
~/Developer $ command2
-bash: command2: command not found
~/Developer $ command3
-bash: command3: command not found
~/Developer $
次のように表示されます。
~/Developer $
-bash: command3: command not found
~/Developer $ command3
-bash: command2: command not found
~/Developer $ command2
-bash: comman0: command not found
~/Developer $ comman0
常に下部にプロンプトを表示することが直観にずれていると考えており、出力を表示するより効率的な方法は出力の順序を変更することです。これをどのように実装しますか?具体的には、OSX端末プログラムの出力部分はどこで定義されていますか?
ベストアンサー1
Bashでは、上部に現在のプロンプト/コマンドが表示され、下部に出力が表示されますが、スクロールまたは前のコマンドは表示されません。
PROMPT_COMMAND='tput cup 0 0; tput el; tput el1'
この関数は前のコマンドを下に配置しますが、各コマンドを個別にパイプする必要があります。残念ながらexec > >(f)
、この問題は個々のコマンドではなく bash 全体をリダイレクトするので、解決する方法はありません。機能は次のとおりです。
f () { tee ~/.STDIN | wc -l | xargs expr 1 + | xargs tput il && cat ~/.STDIN; }
次に、次のように各コマンドを実行します。
command args |f
出力を保存し、長さ+1などの空行を作成し、出力を再挿入します。必要に応じて、最後に偽のヒントや地平線を示す線を表示できます。例えば
printf '%*s' $COLUMNS | tr ' ' _;
関数全体のゴミですが、自動代替として、前の $PROMPT_COMMAND の末尾にコマンドを追加することで、ややランダムな11行を消去できます。
PROMPT_COMMAND='tput cup 0 0; tput el; tput el1; tput il 11'
tput -S
複数のバイナリ呼び出しを防ぐためにそれを使用することもできます。
$PROMPT_COMMAND
私はそれから得たhttps://github.com/swirepe/alwaysontop。