マシンが作成されてからのシェルコマンドの履歴を見つける方法


23

私は数週間前にUbuntu virtualboxマシンを作成し、それ以降プロジェクトの作業を続けています。

1週間前にターミナルで入力したコマンドの構文を見つけたいと思いますが、ターミナルウィンドウを開いて閉じ、マシンを何度も再起動しました。

historyマシンを作成した後に入力した最初のコマンドに戻るコマンドを取得するにはどうすればよいですか?
または、すべてのコマンドがUbuntuに保存されている別の場所はありますか?


2
私の知る限り、あなたはできない。履歴バッファが設定されている限り、戻ることができます。将来、コマンド履歴を無期限に保存するためにインストールできるパッケージについて質問している場合は、おそらく質問を修正する必要があります。
RobotHumans

回答:


26

すべてのコマンドを取得できる場合とできない場合があります。実行したコマンドの数と履歴制限の設定方法によって異なります。

ただし、履歴リストはここに保存されています

/home/<YOUR_USERNAME>/.bash_history

関連する質問(複数のシェル履歴を処理するため):

.bash_historyへの書き込みをすぐに行うことは可能ですか?


3
履歴が1つのターミナル/シェルからのみ保存されるというのは正しくありません。を実行するhistoryと、現在のシェルの履歴が最新のものとして表示され、それ以前のその他すべてのシェル(以前のセッションのシェルを含む、パワーサイクルを含む)の履歴が表示されます。すべてのシェルインスタンスは、終了時に履歴保存します.bash_history。その時点の前に、インスタンスはそこに自動的に保存しません。
エリアケイガン

6

デフォルトで~/.bash_historyは、過去のいくつかのコマンドが含まれていますが、すべてのコマンドが記録され、無期限に保持される場所はありません(bashUbuntuのデフォルトのシェルであるを使用する場合)。

あなたがしたい場合は、すべてに入力したコマンドbashを記録永遠を、あなたはそれを自分で設定する必要があります。たとえば、~/.bashrcファイルに以下を入力して、bashシェルに入力されたすべてのコマンドをファイルに記録できます~/.command_log

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

上記はDEBUG、通常のコマンドが実行される直前に実行されるにトラップを設定します。caller組み込みコマンドは対話型シェルで入力されたかのような何かを経由して実行されているかどうかをテストするために使用されます~/.bashrc。値に${BASH_COMMAND}は、現在実行されているコマンドが含まれます。


macOSでは、この手法update_terminal_cwdは履歴ファイルにもログを記録します。これは、ユーザーが実行しないが、自動的に実行されるコマンドです。
アシッシュア

5

また、以前のコマンド履歴を検索する方法にも興味があるかもしれません。を押してCtrl+rから一致させる文字を入力すると、コマンドラインで履歴を逆検索できます。一致するコマンドが複数ある場合は、Ctrl+rもう一度押します。逆検索を終了するには、を押しCtrl+gます。

http://www.ice2o.com/bash_quick_ref.html


4

履歴の制限が設定されている場合にのみ戻ることができます。そのポイントに達すると、履歴が上書きされ始めます。ただし、将来の履歴サイズを大きくすることは可能です。これを.bashrcに入れて値を指定します(私の値は1000に設定されています):

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