端末にはデータが保存されていますか?


9

これは私が長い間知りたかったことですが、実際に質問することはありませんでした。

Linuxディストリビューションで提供されているターミナルでは、コマンドの履歴全体を矢印キーを使用して確認できることを知っています(他の方法がある場合、私はそれを認識していません)。これはどのように行われますか?

端末がすべてのキーストロークを記録する場所はありますか?それはある種のバッファですか?しかし、再び、それがバッファであった場合、しばらくするとクリアされますか?

このシステムはどのように機能しますか?


書き込み履歴はすべて、以前に使用されるコマンドを取得するには...
Sukupa91

OPはhistoryコマンドについて尋ねるのではなく、古いコマンドを記憶するこのシステム全体がどのように機能するかを尋ねています。
Tarun

申し訳ありませんが私はそれが間違ってました...
Sukupa91

2
この例外に注意してください。コマンドがスペースで始まる場合、コマンドは履歴に残りません。
Rinzwind 2013年

@Rinzwind、スペースで開始すると、履歴に追加されます。
GC 13年

回答:


10

これはコマンド履歴であり、端末ではなくシェルの機能です。

Ubuntu(および他のほとんどのLinuxディストリビューションではないにしても多く)では、インタラクティブな使用のためのデフォルトのシェルはBash(/bin/bash)です。Bashは履歴を保持します~/.bash_history。これは、の最後のコマンドのリストです。シェルを開くと(通常はターミナルを開くことにより)、このファイルが読み取られ、このシェルの内部履歴に読み込まれます。シェルを閉じると、変更がファイルに書き戻されます。デフォルトでは、これは最後の500コマンドに制限されています。

これが正確に機能する方法の動作を変更できるいくつかの変数とシェルオプションがあります。詳細については、bashのマンページ(man bash)をご覧ください。単にHISTORYを検索します(で入力/^HISTORYして確認しEnter、で次の検索にジャンプしますn

また、履歴を移動する方法は、次の方法だけではUpありませんDown

  • たとえば、Ctrl+ Rと前のコマンドの一部を押すと、bashは一致するコマンドを履歴内で逆方向に検索します。最初の一致が探しているものと一致しない場合は、Ctrl+を繰り返し押しRます。(bashのマンページの「履歴を操作するためのコマンド」を参照)

  • コピー/etc/inputrc~/.inputrcして線やコメントを解除history-search-forwardし、history-search-backwardそれらインチ コマンドの最初の文字を入力してを押すとPgUp、bashは同じ文字で始まる履歴のコマンドのみを表示します。(この変更が行われた後に開かれたシェルでのみ機能します)

  • !!シェルでコマンドの代わりに入力すると、最後のコマンドが繰り返されます(詳細については、bashのマンページの「履歴の拡張」を参照してください)。


1
そして、履歴を残したくない場合はunset HISTFILE、〜/ .bashrcに入れてください。その後、履歴はメモリにのみ保持され、新しいシェルが呼び出されるたびにクリアされます。
CVn 2013年

10

コマンド履歴は通常、ユーザーごとに.bash_historyホームディレクトリのファイルに保存されます。つまり、すべてのユーザーは、自分が実行した独自のコマンドセットを持っています。

複数のターミナルセッションが開いている場合、矢印キーを押すと異なるコマンドが表示されることがありますが、すべてのターミナルウィンドウを閉じると、異なるターミナルセッションの履歴が共通の~/.bash_historyファイルにマージされます。

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