私は数週間前にUbuntu virtualboxマシンを作成し、それ以降プロジェクトの作業を続けています。
1週間前にターミナルで入力したコマンドの構文を見つけたいと思いますが、ターミナルウィンドウを開いて閉じ、マシンを何度も再起動しました。
history
マシンを作成した後に入力した最初のコマンドに戻るコマンドを取得するにはどうすればよいですか?
または、すべてのコマンドがUbuntuに保存されている別の場所はありますか?
私は数週間前にUbuntu virtualboxマシンを作成し、それ以降プロジェクトの作業を続けています。
1週間前にターミナルで入力したコマンドの構文を見つけたいと思いますが、ターミナルウィンドウを開いて閉じ、マシンを何度も再起動しました。
history
マシンを作成した後に入力した最初のコマンドに戻るコマンドを取得するにはどうすればよいですか?
または、すべてのコマンドがUbuntuに保存されている別の場所はありますか?
回答:
すべてのコマンドを取得できる場合とできない場合があります。実行したコマンドの数と履歴制限の設定方法によって異なります。
ただし、履歴リストはここに保存されています
/home/<YOUR_USERNAME>/.bash_history
関連する質問(複数のシェル履歴を処理するため):
history
と、現在のシェルの履歴が最新のものとして表示され、それ以前のその他すべてのシェル(以前のセッションのシェルを含む、パワーサイクルを含む)の履歴が表示されます。すべてのシェルインスタンスは、終了時に履歴を保存します.bash_history
。その時点の前に、インスタンスはそこに自動的に保存しません。
デフォルトで~/.bash_history
は、過去のいくつかのコマンドが含まれていますが、すべてのコマンドが記録され、無期限に保持される場所はありません(bash
Ubuntuのデフォルトのシェルであるを使用する場合)。
あなたがしたい場合は、すべてに入力したコマンド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}
は、現在実行されているコマンドが含まれます。
update_terminal_cwd
は履歴ファイルにもログを記録します。これは、ユーザーが実行しないが、自動的に実行されるコマンドです。
また、以前のコマンド履歴を検索する方法にも興味があるかもしれません。を押してCtrl+r
から一致させる文字を入力すると、コマンドラインで履歴を逆検索できます。一致するコマンドが複数ある場合は、Ctrl+r
もう一度押します。逆検索を終了するには、を押しCtrl+g
ます。
履歴の制限が設定されている場合にのみ戻ることができます。そのポイントに達すると、履歴が上書きされ始めます。ただし、将来の履歴サイズを大きくすることは可能です。これを.bashrcに入れて値を指定します(私の値は1000に設定されています):
export HISTSIZE=1000