Linuxコマンド履歴の調整方法の詳細な説明

Linuxコマンド履歴の調整方法の詳細な説明

Linux システムの bash history コマンドは、以前に実行したコマンドを記憶し、再入力せずに繰り返すのに役立ちます。

可能であれば、数十ページにおよぶマニュアル ページを読んだり、ファイルを何度も一覧表示したりする必要がなくなり、代わりに history と入力して以前に実行したコマンドを表示できるようになるので、間違いなく満足するでしょう。この投稿では、履歴コマンドに記憶させたい内容を記憶させ、あまり「履歴的価値」のないコマンドを忘れさせる方法について説明します。

コマンド履歴を表示する

以前に実行したコマンドを表示するには、「history」と入力するだけです。長いコマンドのリストが表示される場合があります。記憶されるコマンドの数は、~/.bashrc ファイルに設定されている $HISTSIZE という環境変数によって決まりますが、保存するコマンドの数を増やしたり減らしたりしたい場合は、必要に応じてこの設定を変更できます。

履歴を表示するには、history コマンドを使用します。

$ 履歴
209 ユーネーム -v
210日
211人の変更
……

表示されるコマンドの最大数を確認するには:

$ エコー $HISTSIZE
500

次のようなコマンドを実行すると、$HISTSIZE を変更して永続的にすることができます。

$ エクスポート HISTSIZE=1000
$ echo "HISTSIZE=1000" >> ~/.bashrc

また、履歴がどれだけ保存されるかと、履歴を入力したときに表示される履歴の量にも違いがあります。 $HISTSIZE 変数は表示される履歴の量を制御し、$HISTFILESIZE 変数は .bash_history ファイルに保持されるコマンドの数を制御します。

$ エコー $HISTSIZE
1000
$ エコー $HISTFILESIZE
2000

履歴ファイル内の行数を数えることで、2 番目の変数を検証できます。

$ wc -l .bash_history
2000 .bash_history

ログイン セッション中に入力されたコマンドは、履歴コマンドの出力にはすぐに表示されますが、ログアウトするまで .bash_history ファイルに追加されないことに注意することが重要です。

使用履歴

履歴で見つかったコマンドを再発行する方法は 3 つあります。最も簡単な方法は、特に再利用したいコマンドが最近実行された場合は、通常、! に続いてコマンドを一意に識別するのに十分な数の最初の文字を入力することです。

$ !u
uname -v は、
#37-Ubuntu SMP 2020年3月26日木曜日 20:41:27 UTC

コマンドを繰り返すもう 1 つの簡単な方法は、コマンドが表示されるまで上矢印キーを押してから Enter キーを押すことです。

あるいは、history コマンドを実行して、再実行したいコマンドがリストされている場合は、「!」に続けてコマンドの左側に表示されている番号を入力します。

$ !209
uname -v は、
#37-Ubuntu SMP 2020年3月26日木曜日 20:41:27 UTC

隠された歴史

一定期間コマンドのログ記録を停止する場合は、次のコマンドを使用できます。

$ set +o history

入力したコマンドは、history と入力しても表示されず、セッションを終了したりターミナルを終了したりしても .bash_history ファイルに追加されません。

この設定を解除するには、set -o historyを使用します。

これを永続的にするには、これを .bashrc ファイルに追加できますが、コマンド履歴を使用しないことは一般的に良い考えではありません。

$ echo 'set +o history' >> ~/.bashrc

履歴を一時的にクリアして、履歴を入力したときにそれ以降に入力したコマンドのみが表示されるようにするには、history -c (クリア) コマンドを使用します。

$ 履歴 | 末尾 -3
209 ユーネーム -v
210日
211人の変更
$ 履歴 -c
$ 履歴
1 履歴

注意: history -c を入力した後に入力されたコマンドは、.bash_history ファイルに追加されません。

制御履歴

多くのシステムでは、履歴コマンドのデフォルト設定に $HISTCONTROL という変数が含まれており、同じコマンドを 7 回続けて実行しても、そのコマンドが 1 回しか記憶されないようになっています。また、1 つ以上のスペースが後に続くコマンドを入力すると、そのコマンドがコマンド履歴から省略されることも保証されます。

$ grep HISTCONTROL .bashrc
HISTCONTROL=両方を無視

ignoreboth は「重複するコマンドと空白で始まるコマンドを無視する」ことを意味します。たとえば、次のコマンドを入力したとします。

$ echo これを試す
$ 日付
$ 日付
$ 日付
$パスワード
$ 履歴

履歴コマンドは次のようなレポートを出力します。

$ 履歴
$ echo これを試す
$ 日付
$ 履歴

連続する日付コマンドは 1 つに削減され、スペースでインデントされたコマンドは省略されることに注意してください。

歴史を無視する

特定のコマンドを無視して、history を入力したときにそれらのコマンドが表示されないようにし、.bash_history ファイルに追加されないようにするには、$HISTIGNORE 設定を使用します。例えば:

$ export HISTIGNORE=”history:cd:exit:ls:pwd:man”

この設定により、history コマンドの出力と .bash_history ファイルから、すべての history、cd、exit、ls、pwd、man コマンドが無視されます。

この設定を永続的にしたい場合は、.bashrc ファイルに追加する必要があります。

$ echo 'HISTIGNORE="history:cd:exit:ls:pwd:man"' >> .bashrc

この設定は、以前に実行したコマンドを振り返るときに、コマンド履歴を表示するときに表示したくないコマンドでリストが乱雑にならないことを意味します。

過去のコマンドを覚える、無視する、忘れる

コマンド履歴は、最近使用したコマンドを記憶したり、最近行った変更を思い出すのに役立つので便利です。また、特に再作成する必要のない多数のパラメータを持つコマンドの再実行も容易になります。履歴設定をカスタマイズすると、コマンド履歴の使用がより簡単かつ効率的になります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux で履歴コマンドを表示および実行する方法
  • Linux のコマンドライン履歴を隠す方法を教えます
  • Linuxのシェル履歴コマンド記録機能
  • Linux コマンドラインで他のユーザーと通信する方法
  • Linux には make コマンドがありません (make: *** ターゲットが指定されておらず、makefile または make コマンドのインストール方法が見つかりません)
  • Linux telnetコマンドの使用
  • Linux gzip コマンドのファイル圧縮実装原理とコード例

<<:  Web インタビュー Vue カスタム コンポーネントと呼び出しメソッド

>>:  WeChatアプレットが連携メニューを実現

推薦する

要素タイムラインの実装

目次コンポーネント - タイムラインカスタムノードスタイルカスタムタイムスタンプコンポーネント - ...

MySQLクエリ文の実行プロセスを理解するための記事

序文要件を満たす特定のデータをデータベースから取得する必要があります。Select ABC FROM...

aタグ疑似クラスの機能と記述順序は何ですか?

a タグ疑似クラスの役割: 「:link」: 訪問されていないタグの状態。 「:visited」: ...

MySQLカバーインデックスの詳しい説明

コンセプトインデックスにクエリ要件を満たすすべてのデータが含まれている場合、それはカバーリング イン...

MySQLデータ復旧のさまざまな方法の概要

目次1. はじめに2. 直接回復2.1 mysqldumpバックアップの完全リカバリ2.2 xtra...

JavaScriptクロージャの原理と機能の詳細な説明

目次導入クロージャの使用カレー作りパブリック変数の実装キャッシュカプセル化(属性のプライベート化)閉...

Reactの二次連携を実現する方法

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

GNU Parallelの具体的な使用法

それは何ですか? GNU Parallel は、1 台以上のコンピュータでコンピューティング タスク...

MYSQL インストールの解凍バージョンと発生したエラーと解決策

1 インストールMYSQL 公式サイトから対応する解凍バージョンをダウンロードし、必要なディレクトリ...

複合主キーと複数列インデックスに遭遇した場合の MySQL 行ロックの詳細な説明

背景今日、他のプロジェクト チームと協力してシス​​テムのストレス テストを実施しているときに、プロ...

Linux でジャンプ サーバー経由でリモート サーバーに接続し、ファイルを転送する方法

最近、Linux ホストに環境を展開する際に多くの問題に遭遇しました。最初の問題は、ジャンプ サーバ...

Nginx 構成 PC サイトとモバイル サイトの分離によるリダイレクトの実現

PCサイトとモバイルサイトの分離設定にはnginxを使います。私のPCサイトとモバイルサイトは、SE...

IE アドレスバーのアイコン表示問題を解決する 3 つの手順

<br />この Web ページ制作スキル チュートリアルは、Web サイトのアイコンを...

NestJsはMongooseを使用してMongoDBを操作する

最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...

Linuxで静的ネットワーク接続を構成する方法

Linux システムのネットワーク接続を構成するのは難しい場合があります。幸いなことに、多くの新しい...