端末の最初の行にコマンドラインプロンプトを保持する方法


4

画面の上部にコマンドラインを保持し、その下のコマンドの出力を確認する必要があります。どのプラットフォームで利用可能なツールを使用してこれを達成するにはどうすればよいですか?

現在、ls foo -l結果を実行した場合、私が使用したすべての端末エミュレーターで次のようになります。

$ ls foo -l
hi.txt
bye.txt
$ command prompt is here

これを見てみたい:

$ command prompt is here
$ ls foo -l
hi.txt
bye.txt



私はすでに半分分あなたのコメントの前に投票を撤回しました@ l0b0
phuclv

1
複数のコマンドがどのように機能すると期待していますか?コマンド+出力を前のコマンドの上/下に印刷するか、最後のコマンドと出力を上書きする必要がありますか?
l0b0

ウィンドウのタイトルを最後のコマンドに設定して、ターミナル出力をそのままにしておくのはどうですか?
Xen2050

回答:


0

Linux、Bash。

Bashはstderr(ファイル記述子2)を使用して、コマンドプロンプトとコマンドラインを出力します。tmux2つのシェルを上下に表示するために使用します(または2つのGUIウィンドウ、ターミナルエミュレータを上下に配置するだけです)。下部ではinvokeを呼び出しttyます。これ以降、下のシェルを直接使用しないでください。上部では、ファイル記述子1を下部のttyにリダイレクトします(例:)exec 1>/dev/pts/2

Ctrl+ Lは上部をclearクリアし、下部をクリアします。各部分は複数行です。tmuxの機能のおかげで、サイズを変更できます(つまり、境界線を上下に移動できます)。

これを使用して、コマンドをディスプレイの下部に表示します。

trap 'printf "%s\n" "-----$ $BASH_COMMAND"' DEBUG

ソリューションをテストしたところ、ターミナルウィンドウは次のようになりました。

kamil@foo:~$ ls -l /proc/$$/fd
kamil@foo:~$ uname -r
kamil@foo:~$ cat /etc/issue
kamil@foo:~$ 

──────────────────────────────────────────────────────────────────────
-----$ ls --color=auto -l /proc/$$/fd
total 0
lrwx------ 1 kamil kamil 64 Sep  9 20:42 0 -> /dev/pts/3
l-wx------ 1 kamil kamil 64 Sep  9 20:42 1 -> /dev/pts/2
lrwx------ 1 kamil kamil 64 Sep  9 20:42 2 -> /dev/pts/3
lrwx------ 1 kamil kamil 64 Sep  9 21:13 255 -> /dev/pts/3
-----$ uname -r
4.15.0-33-generic
-----$ cat /etc/issue
Ubuntu 18.04.1 LTS \n \l

(注:--color=automy lsはエイリアスであるため表示されます)。

対話型ツール(テキストエディターなど)の誤動作が予想されるため、呼び出し中に変更を元に戻すことをお勧めします。例:

1>&2 nano

一部のシェル(例zsh:)は10、コマンドラインに別のファイル記述子を使用します。これにより、stderrを下(またはさらに別の3番目)のttyにリダイレクトし、コマンドラインを上に保持できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.