web-dev-qa-db-ja.com

コマンドライン経由で `.bash_history`ファイルを表示するには?

.bash_historyファイルの内容を表示したいのですが、コマンドラインを使用してそこにアクセスする方法がわかりません。

71

実際のファイル自体にアクセスする場合は、お好みのテキストエディターを使用します(emacsを使用しますが、plumaまたはgeditまたはvimを使用できます)。

emacs ~/.bash_history

これが履歴ファイルのデフォルトの場所です。そこに何も見つからない場合は、履歴ファイルの名前を変更している可能性があります。これは$HISTFILE変数に格納されるため、現在の値を確認するために出力します。

echo $HISTFILE

ファイルの代わりに、履歴を表示したいだけの場合は、@ [minerz029]が推奨するようにhistoryを実行できます。 オプションなしのhistoryコマンド は、$HISTFILEの内容と、そのファイルにまだ書き込まれていない現在のシェルで実行されたコマンドを行番号とともに出力するだけです。 。

55
terdon

実際に必要.bash_historyファイルの出力である場合、historyを置き換えます
cat ~/.bash_history以下のすべてのコマンド。

実際に数字のないコマンドが必要な場合は、historyの代わりに次のコマンドを使用します。

history | cut -d' ' -f 4-

それ以外の場合、違いはありません(別のシェルを使用している場合を除く)。


最後の15コマンド

使用できます

history | tail -n 15

履歴の最後の15行のみを取得し、最後に実行されたものを最後に(下部に)印刷します。


コマンドを検索する

または、使用

history | grep "apt-get" | tail -n 15

apt-getを含む最後の15個のコマンドを取得するには、最後に実行されたものが最後に(下部に)出力されます。 apt-getは、検索するコマンド(またはコマンド引数)に置き換えることができます(正規表現でもかまいません)。


履歴をスクロールする

使用できます

history | tac | less

allをスクロールして、最新のコマンドを先頭に実行します。押す q 出る。

同様に、使用

history | grep "apt-get" | tac | less

allをスクロールするには、「apt-get」で実行されたコマンド(引数を含む)を先頭の最新のものから開始します。押す q 出る。

48
kiri

Minerz029の優れた答えに加えて。

繰り返しになりますが、「history」コマンドは、履歴とその隣の数字を出力します。

履歴の出力をgrep、lessなどにパイプできます。

履歴の出力には、出力の横の左側にも数字が表示されます。例えば.

  469  free
  470  ps -fA
  471  ps -fA | grep xend
  472  free
  473  Sudo vi /etc/xen/xend-config.sxp 
  474  cat /etc/default/grub 

この番号を使用すると、コマンドを再実行できます。

例えば473を再実行するには、端末に入力します

 admin@xen1~$ !473

次に、Enterキーを押して、履歴出力の473の横にあるコマンドを繰り返します。

ctrl + rキーを入力してコマンド履歴をインタラクティブに逆方向に検索し、コマンドの内容の一部を入力し始めると、検索と入力が可能になります。見つかったら、Enterキーを押して繰り返すか、[tab]キーを押してコマンドラインにコピーし、最初にコマンドを編集します。

もちろん、最後の2つのオプションはbashシェルで機能します。これらの機能が他のシェルで機能するかどうかはわかりません。ただし、bashはUbuntuのデフォルトのシェルであるため、そこにあるはずです。

15
Matt H

enter image description here

「提案ボックス」のような履歴を試してみることもできます https://github.com/dvorka/hstr -Bash履歴を読み取り、迅速なナビゲーションを可能にします。

1
Martin Dvorak