入力したすべての端末コマンドを保存し、ログブックの履歴のように表示する方法はありますか?
これは自動的に行われます。 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=...
を実行します。
端末でhistory
と入力すると、以前に実行されたすべてのコマンドを表示できます。
出力をいくつかの行に切り捨てることができます(5は行数です)。
history 5
文字列(つまりmv
)を含むコマンドのみを表示する場合、これを実行できます。
history | grep mv
!
に続けてエントリ番号を入力すると、コマンドを呼び出すことができます。
次のような歴史があるとしましょう。
1 ls -la
2 mkdir foo
3 mv bar.txt foo
mkdir foo
を実行するには、!2
と入力できます。!-1
または!!
を使用できます!-2
を使用できますルート権限が必要なために失敗するコマンド(つまり、touch /etc/foo
)を実行する場合、Sudo !!
を使用して、最後のコマンドをルートとして実行できます。
!man
と入力すると、man
で始まる最後のコマンドが実行されます。!?man?
と入力すると、man
を含む最後のコマンドが実行されます(必ずしもbegin行ではありません)コマンドにタイプミスがある場合は、この方法で修正できます。 cat .bash_hi
を.bash_hi
に置き換えるために.bash_history
と入力するとしましょう。私は^hi^history^
と入力するだけです。
次のように入力します。
history > print.txt
現在の作業ディレクトリにprint.txtという新しいファイルが作成されます。
最近のコマンドも必要なことがよくあります。私の開発ノートや、これらのようなstackexchangeサイトに投稿するには...これは非常に有用であることが証明されており、無関係な行番号を削除します。
history | cut -c 8- | tail
または、エイリアスとして使用する場合は、行番号を削除し、すぐにインデントします(コード引用マークダウンの必要に応じて)
alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\} / /gi'"
https://github.com/dvorka/hstr を試してみてください。これにより、単純な閲覧、ナビゲーション、「提案」が可能になります。 Bash履歴の「ボックススタイル」フィルタリング:
簡単にできます bound to Ctrl-r および/または Ctrl-s