私はGNU画面の設定を調べ、次の設定を次の場所に配置しました~/.screenrc
。
bind l eval 'exec ls'
今すぐ入力すると、現在のディレクトリで実行されますC-a l
。ls
今まではそんなに良くなった。しかし、問題は、プロセスを終了してターミナルに戻るには、追加のEnterキーを押す必要があることです。追加のEnterキーを押さないようにするにはどうすればよいですか?
答え1
と入力すると、ウィンドウで実行されているプログラムに関係なく、現在のウィンドウで実行され、C-a l
出力が表示されます。ls
ウィンドウで実行されているシェルを使用してこれを実行し、シェルがプロンプトを表示すると、プロンプトのls
後に出力が表示されます。 Shellはls
Screenによって直接実行されるため、何が起こっているのかわかりません。プロンプトに入力した場合は、これまで入力した内容がそのまま残り、Enterキーを押すまで待ちます。後でEnterキーを押すと、C-a l
入力したコマンドが実行されます。最後のプロンプトに何も入力しなかった場合、これは空のコマンドなので、シェルは新しいプロンプトを表示します。
BashまたはzshでCtrl+を押すと、Lプロンプトと現在の入力行が再び表示されます。
これを回避するには、^L
画面内で実行されているアプリケーションに挿入します。プロンプトを表示するシェルであることを願っています。複数のコマンドを実行するには、明示的にシェルを呼び出す必要があります。あなたは!
渡す必要がありますFDPAさもなければ^L
殻に入らない。
bind l exec ! sh -c 'ls /; screen -X stuff ^L'
ls
このコマンドは常にScreenの現在のディレクトリで実行され、シェルでディレクトリを変更しても変更されないため、あまり役に立ちません。ls
シェルでキーを実行するには、画面バインディングの代わりにシェルの現在のディレクトリにシェルバインディングを設定します。