web-dev-qa-db-ja.com

履歴からコマンドを実行する方法はありますか?

例えば:

[root@ip-10-0-7-125 ~]# history | grep free
  594  free -m
  634  free -m | xargs | awk '{print "free/total memory" $17 " / " $ 8}'
  635  free -m
  636  free -m | xargs | awk '{print "free/total memory" $9 " / " $ 10}'
  736  df -h | xargs |  awk '{print "free/total disk: " $11 " / " $9}'
  740  df -h | xargs |  awk '{print "free/total disk: " $11 " / " $8}'
  741  free -m | xargs | awk '{print "free/total memory: " $17 " / " $8 " MB"}'

もう一度コマンドを入力せずに636コマンドを実行する方法があるのか​​と思っているだけです。履歴636のように、何かに加えて数値を入力するだけです。

111
The One

Bashでは、!636 大丈夫だろう。

193
user164825

はい、それは「歴史の拡大」と呼ばれています。見る

LESS='+/^HISTORY EXPANSION' man bash

詳細については。

感嘆符とそれに続く数字の使用は、おそらく最も簡単な使用法です。

!636

ただし、履歴番号を知らなくても、最後に実行したコマンドを直接実行することもできます。

!!

または、次の2つのコマンドを実行することもできます。

!-2

ただし、私が最もよく使用する形式は、最後のコマンドの最後の引数を繰り返すことです。

echo this text goes into a file > /tmp/afile.txt
cat !$

または、ファイルを検査しているとしましょう。タブ補完を使用して、次のことを行うことができます。

ls -l /really/long/path/to/some/file
less !$

繰り返しますが、詳細についてはmanページをお読みください

LESS='+/^HISTORY EXPANSION' man bash
80
Wildcard

最初に履歴を残したくない場合は、番号などをメモしてください。

bash(そしておそらく他の人):

ctrl-r something 

ctrl-r =「インタラクティブな逆検索」)(something =前のコマンドの一部)

somethingを含む最新の履歴行が表示されます。前のものを取得するには、前の行を取得するたびに、もう一度ctrl-r(単独)を実行します。

例:

ctrl-r  10

'10'(例では$10を含む行の場合)を含む最新の履歴行を表示し、探している履歴行を取得するまでctrl-rを再度表示します

必要な行が表示されたら、Enterを実行して実行します(または、arrow keysbackspacectrl-aを使用して編集して、行の先頭、ctrl-eで最後に到達、ctrl-k:カーソルから行の末尾まで「キル」(=削除+バッファに保存)、ctrl-y:でバッファから、以前にキルされたビットなどを復元します)

前方検索(ctrl-s)、を行う場合は、最初にXONを無効にする必要があります: https://stackoverflow.com/を参照) a/791800/18415

"実行するだけでXON/XOFFを無効にする

stty -ixon

"(そして、端末をフリーズせずにctrl-sを使用できるようになります)

14
Olivier Dulac

組み込みのシェルfcを使用できます。

fc -s 636
8
Steven Penny

HSTR -hhbashの対話型コマンド選択用のzshコマンドがあり、Ctrl-R逆検索よりも優れています。

hh interactive history command example

インタラクティブなので、実行前にコマンドを検索および編集できます。

Ubuntuでは、次の1行でhhをインストールできます。

Sudo add-apt-repository ppa:ultradvorka/ppa && Sudo apt-get update && Sudo apt-get install hh && hh --show-configuration >> ~/.bashrc

または段階的に:

Sudo add-apt-repository ppa:ultradvorka/ppa
Sudo apt-get update
Sudo apt-get install hh

Fedora、RHEL、またはCentOSにhhをインストールします。

Sudo dnf|yum install hstr -y

homebrewを使用するmacOSの場合:

brew install hh

...次にそれを設定します:

hh --show-configuration >> ~/.bashrc

これにより、デフォルトのCtrl-R動作が置き換えられます。

hh --show-configurationを実行して、Bashプロファイルに何を追加するかを決定します。

Githubのプロジェクトホームページで利用可能なその他の構成オプション: https://github.com/dvorka/hstr

3
modlin