
上下キーが cmd と同じになるように Bash をカスタマイズするにはどうすればよいですか?
例えば
$echo command1
$echo command2
$echo command3
$echo command4
Bash と cmd の両方で、、、を押すとが↑実行されます。↑↑ENTERecho command2
ただし、その後に cmd で下矢印キーを押すと、その後のコマンドに直接移動しますecho command3
。つまり、 です。Bash で下矢印キーを押しても何も起こりません。cmd は時点の履歴を保持しますが (Web ブラウザーの [戻る] ボタンと [進む] ボタンに似ています)、Bash は保持しません。
cmd の場合も同様に、cmd で上矢印キーを 2 回押すと が戻りますecho command1
が、Bash で同じ操作を行うと が戻りますecho command3
。
以前順番に入力した一連のコマンドを省略したい場合がよくあります。cmd では、履歴をスクロールしてシーケンスの最初のコマンドまで戻り、、、、、、、... と入力できるので非常に便利↓です。ENTER↓ENTER↓ENTER
~/.inputrc
しかし、Bash で同様の方法を見つけることができません。これを実現するために、何らかの方法で他のファイルを変更することは可能ですか?
答え1
個人的には、bash の履歴に慣れているので、それをしたくないのですが、人々がそうしたい理由はわかります。私は以前、職場の同僚のためにこれを調べましたが、その同僚は *nix を初めて使い、xterm で DOS のような機能を必要としていましたが、その時も今も、解決策はないようです。
もう一度徹底的に検索してみましたが、以下の点を除いて明らかなことは何も見つかりませんでした。
- ドセムこれはあなたが求めているものとは少し違います。
- シェルスクリプトを使用して Linux のコマンドラインを DOS のように動作させるしかし、リンクはやや断続的であるようで、おそらくこれはあなたが本当に望んでいるものではないでしょう。このリンクは、代用するカスタム スクリプトを使用した、DOS コマンド用の Unix コマンド。
不思議なことに、cmdをbashのようにする方法はたくさんあります。例えば、Windows コマンドプロンプト用の Bash 履歴のような機能、しかし悲しいことにその逆ではありません。
主な問題は、(過度に)簡単に言えば、カーソルキーの機能(およびそれが履歴とどのように相互作用するか)がBashのソースコードに組み込まれており、スクリプト、エイリアス、シェル関数ではその事実を上書きできないことです1。必要なのは書き直しbash には、さまざまな [切り替え可能な?] カーソル キー機能が組み込まれており、いわば「DOSBash」のようなものです。
ニッチな市場が満たされるチャンスがあり、最終的には誰かがそのニーズを満たすことになるかもしれませんが、私はあまり期待しないほうがいいと思います。
1もし私が間違っていて、単純なリソース ファイルの変更によってカーソル キーの機能をオーバーライドすることが可能であれば、どなたかが私に正しいことを教えてくだされば幸いです。
答え2
私が使っているトリックは、単に同じ回数繰り返すことです↑。
$ echo command1
$ echo command2
$ echo command3
$ echo command4
echo command 2
からまでのシーケンスを繰り返したい場合は、まで 3 回押して、 までもう一度 3 回echo command4
押して、 までもう一度 3 回押して、 までもう一度 3 回押します。↑echo command2
echo command3
echo command4
したがって、N 回押して履歴の N 項目に戻った場合↑、もう一度 N 回押すと、実行した新しいコマンドが挿入されるため、そのたびに次のコマンドに進みます。