上矢印を使用して前のコマンドを実行する


11

上矢印を使用して前のコマンドを実行するには、どのようなセットアップが必要ですか?Macでは、上矢印キーを使用して、実行したばかりのコマンドを再実行できますが、bashシェルでは機能しないようです。

8.04を使用します(コンパイラーのバージョンの問題により、最新のディストリビューションを使用できません)。

追加されました

Mac上のVMWare Fusionを使用した新規インストールなので、何も変更しませんでした。


3
デフォルトの構成では、上矢印は完全に機能します。何かを変更しましたか?
enzotib

@enzotibが言うように、bashはデフォルトでこれを行いますが、他のいくつか、例えばshはそうしません!
ロリーアルソップ

回答:


10

履歴が有効になっていることを確認してください。次のコマンドを実行して、現在のステータスを確認できます。

set -o

出力には以下を含める必要があります(history on行に注意してください):

histexpand      on
history         on
ignoreeof       off

これが有効になっていない場合は、を実行する必要がありますset -o history。この変更を永続的にするには、以下に追加する必要があります~/.bashrc

set -o history

前のコマンドを実行する場合は、次のコマンドも実行できます。

!!

Bashのマニュアルページから:

Event Designators
   An event designator is a reference to a command line entry in the history list.

   !      Start a history substitution, except when followed by a blank, newline,
          carriage return, = or ( (when the extglob shell option  is
          enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command line minus n.
   !!     Refer to the previous command.  This is a synonym for `!-1'.
   !string
          Refer to the most recent command starting with string.
   !?string[?]
          Refer to the most recent command containing string.  The trailing ? 
          may be omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.  Repeat the last command, replacing string1 with
          string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

Bashを使用している場合は、デフォルトのショートカットを使用して履歴をナビゲートすることもできます。

  • Ctrl+ P:前のコマンド
  • Ctrl+ N:次のコマンド

    履歴を操作するためのコマンドprevious-history(Cp)履歴リストから前のコマンドを取得し、リスト内に戻ります。next-history(Cn)履歴リストから次のコマンドを取得し、リスト内を前方に移動します。


1
セットアップが正しいことを確認しましたが、上矢印キーが機能しません。ただし、Ctrl-P / Nを使用して同じ結果を得ることができます。ありがとう。
prosseek

@prosseekその場合、あなたは変更しました/etc/inputrc~/.inputrc?また、使用している端末で上下矢印はどのエスケープシーケンスを生成しますか?確認するには、を実行catし、空の行で上矢印と下矢印を押し、Ctrl + Cを押してcatを終了します。ここで生成され^[[A^[[Bます。
ガイラ

@geirha:〜/ .inputrcファイルがなく、/ etc / inputrcを変更しませんでした。エスケープシーケンスについては、画面に何も表示されませんでした。
prosseek

@prosseek矢印キーが端末にまったく届かないようです。おそらく、VMWareインターフェースがそれらをフィルターで除外しているのでしょう。
ガイラ

13

実際にbashを使用していることを確認してください。よくある落とし穴は、ユーザーおよびグループ(GUI)アプリケーションのuseradd代わりに、adduserまたはユーザーとグループ(GUI)アプリケーションで新しいユーザーを作成することです。前者では、デフォルトのシェルセットは/bin/shです。ファイル名を指定して実行 chshCHアンジュSHエル)は、必ずそれがに設定されます作ります/bin/bash


1

ターミナルで次を入力します。

gedit  ~/.inputrc

次に、コピーして貼り付けて保存します。

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

これで、ターミナルでインクリメンタル検索を実行できます。前のコマンドを見つけるために必要なことは、最初の2文字または3文字を入力するだけで、上矢印を押すとすぐに表示されます。

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