web-dev-qa-db-ja.com

ターミナルで実行されたコマンドの履歴を表示する

入力したすべての端末コマンドを保存し、ログブックの履歴のように表示する方法はありますか?

69
rgr

これは自動的に行われます。 Bashはコマンドを~/.bash_historyに保存します。履歴を見たい場合は、次のいずれかを使用してこのファイルの出力を印刷します。

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

または、bashの組み込みコマンドを使用できます。

history

履歴を消去するには、ファイルを削除して一時履歴を消去します。

rm ~/.bash_history && history -c

履歴サイズのデフォルトは500コマンドです。ただし、~./bashrcに次の行を追加して、これを増やすことができます。

HISTSIZE=<number of entries, -1 for unlimited>

これはすぐには有効になりませんが、新しく開始されたセッションにのみ有効です。これを適用するには、.bashrcファイルにリソースを追加します。

. ~/.bashrc

または、現在のセッションでHISTSIZE=...を実行します。

88
s3lph

端末でhistoryと入力すると、以前に実行されたすべてのコマンドを表示できます。


出力をいくつかの行に切り捨てることができます(5は行数です)。

history 5

文字列(つまりmv)を含むコマンドのみを表示する場合、これを実行できます。

history | grep mv

!に続けてエントリ番号を入力すると、コマンドを呼び出すことができます。

次のような歴史があるとしましょう。

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • mkdir fooを実行するには、!2と入力できます。
  • 最後のコマンドを実行するには、!-1または!!を使用できます
  • 最後から2番目を実行するには、!-2を使用できます

ルート権限が必要なために失敗するコマンド(つまり、touch /etc/foo)を実行する場合、Sudo !!を使用して、最後のコマンドをルートとして実行できます。


  • !manと入力すると、manで始まる最後のコマンドが実行されます。
  • !?man?と入力すると、manを含む最後のコマンドが実行されます(必ずしもbegin行ではありません)

コマンドにタイプミスがある場合は、この方法で修正できます。 cat .bash_hi.bash_hiに置き換えるために.bash_historyと入力するとしましょう。私は^hi^history^と入力するだけです。


出典:https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands- and-expansions-on-a-linux-vps

31
Helio

次のように入力します。

history > print.txt

現在の作業ディレクトリにprint.txtという新しいファイルが作成されます。

9
Bilal

最近のコマンドも必要なことがよくあります。私の開発ノートや、これらのようなstackexchangeサイトに投稿するには...これは非常に有用であることが証明されており、無関係な行番号を削除します。

history | cut -c 8- | tail

または、エイリアスとして使用する場合は、行番号を削除し、すぐにインデントします(コード引用マークダウンの必要に応じて)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"
3
Frank Nocke

https://github.com/dvorka/hstr を試してみてください。これにより、単純な閲覧、ナビゲーション、「提案」が可能になります。 Bash履歴の「ボックススタイル」フィルタリング:

enter image description here

簡単にできます bound to Ctrl-r および/または Ctrl-s

0
Martin Dvorak