web-dev-qa-db-ja.com

矢印キーなしで前のコマンドを取得する方法

通常、上矢印キーを使用して前のコマンドを取得できます。しかし、これが常に機能するとは限らず、代わりにASCIIシーケンスが得られる場合があります( "^[[A... ")ですが、矢印キーのない古いキーボードにもこの機能があったのでしょうか、当時はどのように機能しましたか?

別の方法はありましたか?

5
Niklas

Emacsモードでは、 Ctrl-P (前)、他の方向は Ctrl-N (次)

viモードでは、 ESC (コマンドモードに移動するには)および k 上がってくれて j 降りて

8
Philippos

シェルで2つの感嘆符を使用してそれを行うことができます:!!

7
echo6667

お気に入りのシェルにhistoryと入力するだけで、履歴全体のダンプがトリガーされます。

ctrl-r +検索したコマンドの最初の文字を入力しています...

5
binarym

言ったように、それはシェルに依存しますが、これらの回答に加えて、別の方法:

historyコマンドは、次のような出力を表示します。

   89  bash --version
   90  source /Library//Developer/CommandLineTools/usr/share/git-core/git-completion.bash
   91  brew install bash-completion
   92  source ~/.bashrc

そして、あなたは例えばすることができます

!89コマンドを再実行するには(bash --version この場合)

2
ChatterOne

最後のコマンドを要求できる層がいくつかあります。

ラインエディター

行エディター(コマンドを入力する場所)は、ksh、bashのライブラリreadline、およびzshのライブラリzleによって直接提供されます。 dashなどの他のシェルには、このキーを理解するための編集ライブラリがない 場合があります(--with-libeditオプションを有効にしてコンパイルした場合を除く)。

Ksh、bash、zshでのこの作業:

Ctrl-P #Emacsモード(前)
Ctrl-N #Emacsモード(次へ)
ESC-k #viモードESCでコマンドモードに、kでアップ
ESC-j #viモードESCでコマンドモードに、jでダウン

歴史

多くのシェルによって提供される履歴システムは、いくつかのショートカットの拡張を可能にします:

!!    # bash and zsh, may be provided by `alias \!\!='fc -e -'` in ksh.
!-1   # bash and zsh only

コマンド

履歴コマンドを取得できるコマンドがいくつかあります。

かなり冗長なコマンドのように(印刷のみ):

history 2 | head -n-1

またはolderしたがって、通常はより移植性の高いfcコマンド(直接再実行):

fc -e - -1

または、おそらくより単純なfc -s -1ですが、zshはfcにそのようなオプションを受け入れません。

コマンドのみprintにする場合は、fc -nl -1 -1を使用します。

編集するには、FCEDITをテキストエディタ(ex、ed、emacs、viなど)に設定し、fcを直接使用します:fc -1

2
Isaac

シェルに依存しますが、いくつかの方法があります:

  • !!
  • Ctrl + P
  • !-1

すべてはEnterを押してコミットする必要があります

0
Robert Riedl