編集のために番号付き履歴コマンドを呼び出すにはどうすればよいですか?


17

頻繁に変更を検索します history | grep 'string'

履歴のコマンドのリストと履歴行番号を取得します)、たとえば

history | grep 'git'

  755  git status
 1535  git push origin master
 1570  git merge origin/one-146
 1667  git reset --hard origin/master

次のように、コマンドを一度で呼び出して実行できます!nnn

!755
git status
# On branch master
nothing to commit, working directory clean

私の質問は次のとおりです:番号付き履歴コマンドを呼び出して、編集のためにコマンドラインにとどまり、すぐに実行しないで、そのまま実行する方法は!ありますか?

回答:


12

それ以来、これに別のアプローチを採用しました-を使用して ![line-number]:p

これにより、ステートメントが出力され、履歴に追加されますが、実際には実行されません。次に、上矢印を使用して、必要に応じて変更します。

これをhgエイリアス(alias hg='history | grep ')と組み合わせて、テキストに基づいて履歴コマンドを呼び出します。

例:

$ hg checkout

17140   git checkout README.rdoc
17143   git checkout master
17201   git checkout README.rdoc
17204   git checkout master
17923   git checkout .bashrc
18151   git checkout v311

私は、他にこれを使用するctrl- r時々私がいることを与えられた文字列ではなく、1行にだけ出力についてあらゆる可能性の即時のリストを表示することを好むので(逆履歴検索)ctrl- rショー。後hg [string]、私はその後どうなる![line-number]search_stringのようにhg checkout上に示しました。


8

histverify オプションを設定した場合、例えば

shopt -s histverify

その後、すべての履歴置換はすぐに実行されるのではなく、編集のために表示されます。次に、コマンドを実行するには、Enter入力後に1回ではなく2回押す必要があります!755

を使用して、任意のテキストを履歴リストにプッシュできますhistory -s。これと組み合わせてfc -nl、特定の履歴エントリをリストします。

history -s "$(fc -nl 755 755)"

次に、を押しUpて、現在の最新の履歴エントリを呼び出します。


6

Ctrl+ を使用して履歴を検索できますR。履歴エントリが長い場合は、マウス(キーボードではなく、検索を停止する)を使用して、コマンドの一部をコピーして貼り付け、編集し直します。

@rijsgがコメントしたように、(左および右の)矢印または同等のキーを使用して、検索を停止して編集を開始できます。


2
矢印キーまたは同等のコマンド(Ctrl-aたとえば)は、コマンドプロンプトの現在の履歴エントリを実行せずに、検索を停止します。@Michaelが何を望んでいるかによって、これで十分な場合とそうでない場合があります。
njsg

2

コマンドラインでviエディターを使用するように.bashrcファイルを構成すると、コマンドラインの編集がそれほど複雑になりません。

最初に、「set -o vi」が有効になったら、「<esc> k」を押すだけで、そのまま「k」を押して履歴ファイルを上に移動できます。エントリを過ぎたら「j」を使用しますダウンします

注:viを使用する場合、コマンドモードを開始するコマンドと編集の2つのモードがあります。ESCAPEKEYを1回押してから、a、A、i、Iなどを挿入します。

viの単純なカーソルパッド:left = h、down = j、up = k、right = l http://linuxmeister.net/vi/vi-Summary.jpg

http://linuxmeister.net/Notes/bashrc-simple.htmlでこの作業を行うために必要なすべてのエントリを追加しました。

したがって、上記の非常に役立つ情報に基づいて、「history」を使用し、「history」から1行をRECALLし、実行することはできませんでした。(その投稿をありがとう!)

shoptがリストされ、histverifyが「オフ」の場合 すぐに実行されます

.bashrcに追加した場合、またはshopt -s histverifyと入力した場合は、!編集を許可します。例:

history
    1  more .bashrc
    2  history
    3  shopt
    4  . ./.bashrc
    5  shopt | grep hist
    6  history
    7  alias
    8  history
    9  shopt
   10  history

->!5

!5を押すと、次のコマンドが表示されますが、実行されません

### histverifyが「オン」の場合。

shopt | grep hist
cmdhist         on
histappend      on
histreedit      off
histverify      on
lithist         off

LinusとRichardは、UNIXを活用するためにLinuxおよびGNUツールを作成したことを思い出してください。viエディター(Bill Joyが作成)は、UNIXおよびLinuxのすべてのディストリビューションにあるため、マスターするのに最適なツールの1つです。

他のコマンドラインエディタはすべてロードする必要があり、追加のソフトウェアが必要です。Linux(Firefox、Thunderbird、およびOpenOfficeを除く)でGUIを使用することは、1968 VW BeetleでDiesel 4x4をけん引するようなものです。動作しますが、意味がありません。

KerniganがGUIについて言ったことを思い出してください。


-1
echo !number

次に、上矢印を押して単語echoを削除し、残りを編集します。Enterキーを押して実行します。

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