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

推薦する

Linux システムでのユーザー管理の概要

目次1. ユーザーとユーザーグループの重要性1) ユーザーの存在意義2) ユーザーグループの重要性2...

Tomcat のプレースホルダーによるポート設定方法 (パラメータ指定方式)

仕事で必要になったため、インターネットで多くの情報を見つけましたが、それらはすべてコピーアンドペース...

Vueはデータを初期状態にリセットします

場合によっては、データ内のデータを再利用する必要がありますが、データ内のデータはさまざまなフォーム、...

MySQL コール初心者が犯しがちな 11 の間違いのまとめ

序文セキュリティ部門からSQLインジェクションやXSS攻撃の脆弱性などに関する警告メールを頻繁に受け...

Docker を使用して Nginx+Flask+Mongo アプリケーションをデプロイする

サーバーにはNginx、データベースサポートにはMongo、Python言語のWebフレームワークに...

React、Angular、Vueの3つの主要なフロントエンド技術の詳細説明

目次1. 反応する基本的な使い方注目すべき機能クラスコンポーネント仮想DOMライフサイクルメソッドJ...

MySQL ストアド プロシージャの in、out、inout パラメータの例と概要

ストアドプロシージャ1. ストアドプロシージャを作成し、グローバル変数を表示する mysql>...

Nginx ロードバランシング/SSL 構成の実装

負荷分散とは何ですか?ドメイン名が複数の Web サーバーを指している場合は、nginx ロード バ...

MySQLのマスタースレーブレプリケーションと読み取り書き込み分離を理解するための記事

目次導入1. MySQL マスタースレーブレプリケーション1. MySQLレプリケーションタイプ2....

docker で PostgreSQL データベースをインストールして永続化する方法

Dockerのインストール手順をスキップする1. postgresqlイメージを取得する docke...

Linux CentOS 7.4 で mysql5.7.20 のパスワードを変更する方法

MySQL がバージョン 5.7 にアップグレードされた後、セキュリティが大幅に向上しました。しかし...

MySQL DATEDIFF 関数を使用して 2 つの日付間の時間間隔を取得する方法

説明する2 つの日付間の時間間隔を返します。文法DateDiff(間隔、日付1、日付2 [、週の最初...

JSを使用して画像を効果的に圧縮する方法

目次序文変換関係具体的な実装file2DataUrl(ファイル、コールバック) file2Image...

さまざまなHTTPリターンステータスコードの詳細な説明

サイト上のページを表示するためのリクエストがサーバーに送信されると(たとえば、ユーザーがブラウザでペ...

MySQL での置換例の詳細な説明

MySQL での置換例の詳細な説明replace into は insert と似ていますが、rep...