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アプレットが連携メニューを実現

推薦する

du コマンドを使用して Linux システム ディレクトリのサイズを取得する方法

Linux システムを使用したことがある人なら、Linux システムの ls コマンドは通常、ファイ...

Docker ベースの Redis クラスターの構築方法

Redisイメージをダウンロードする docker pull yyyyttttwww/redis を...

NavicatでMySqlスケジュールタスクを作成する方法の詳細な説明

Navicat で MySql スケジュールタスクを作成する詳細な説明イベントは、MySQL が特定...

MySQL 8.0 Windows zip パッケージ版の詳細なインストール手順

MySQL 8.0 Windows zipのインストール手順は次のように紹介されています。準備する:...

テーブルを開く際のMySQLスレッドの問題の解決方法

問題の説明最近、MySQL5.6.21サーバーがありました。アプリケーションがリリースされた後、同時...

HTML+CSSで充電水滴融合特殊効果コードを実現

目次序文:成し遂げる:要約:まず効果を見てみましょう: 序文:このアイデアは、Bilibili のア...

MySQL NULLがピットを引き起こした

比較演算子でNULLを使用する mysql> 1>NULLを選択します。 +------...

MySQL の大きなデータ テーブルにフィールドを追加する方法

序文フィールドの追加は誰でもよく知っていると思います。簡単に記述できます。MySQL テーブルにフィ...

H5ゲームをnginxサーバーにデプロイする方法の詳細な説明

自己学習型ゲーム開発の道において、最も充実した瞬間は、自分でミニゲームを作り、友達と共有して試しにプ...

MySQLクエリが遅い場合の理由と解決策

Python プログラムを書き、Mysql ライブラリを集中的に操作したためです。データ量が多くない...

Vue における ref と $refs の紹介と使用例

序文JavaScript では、document.querySelector("#demo...

JavaScript でウェブ プレーヤーを実装する

今日は、JavaScript を使用して Web ページ上にプレーヤーを作成する方法を紹介します。誰...

MySQL トランザクション分離はどのように実現されますか?

目次同時シナリオ書き込む読む読む読み取り-書き込みと書き込み-読み取りMySQL のロック行レベルロ...

角度コンテンツ投影の詳細な説明

目次単一コンテンツ投影マルチコンテンツ投影単一条件のコンテンツ投影アプリ-人物-htmlアプリ担当者...