Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

Linuxのhistoryコマンドを微調整してもっと便利に使う方法

historyコマンドとは

LinuxやUNIXのコマンドラインインターフェースにある程度慣れている方なら、historyコマンドを使ったことがあるでしょう。このコマンドを使うと、これまでにコマンドラインで実行したコマンドの履歴を検索できます。

基本的な使用例は以下のとおりです。

# history | grep "kill"

このコマンドを実行すると、過去に実行したコマンド履歴の中から「kill」というキーワードを含むコマンドを検索できます。ただしこれはごく基本的な使い方で、historyコマンドにはいくつか制限事項があります。ここでは、より効果的に活用するための調整方法を紹介します。

複数ターミナル同時利用時に履歴が消える問題を解決

筆者がよく悩まされる制限の一つが、2つのターミナルセッションを同時に開いていると、先に開いたセッションで実行したコマンド履歴が、後から閉じたセッションの履歴によって上書きされ消えてしまうという点です。これはあまり賢い仕様とは言えません。そこで、この問題を修正してみましょう。

まずアカウントにログインし、シェルターミナルを起動します。ユーザーのホームディレクトリには「.bashrc」というファイルがあるはずです。存在しない場合は新しく作成してください。次のようなコマンドでファイルを開きます(userは自分のユーザー名に置き換えてください)。

# vim /home/user/.bashrc

.bashrcファイルに、以下の2行をそのまま追加します。

shopt -s histappend
PROMPT_COMMAND='history -a'

これで問題解決です。histappendオプションにより履歴が上書きではなく追記モードで保存され、PROMPT_COMMANDの設定によってプロンプトが表示されるたびに履歴が即座にファイルへ書き込まれます。以降は単一セッションでも同時セッションでも、すべてのコマンドが履歴ファイルに記録され、上書きで失われることはありません。

重複コマンドを履歴に残さない設定

もう一つおすすめしたいのが、コマンド履歴から重複を取り除く設定です。同じコマンドが何度も記録されなくなるため、限られた履歴件数の中により多くの情報を素早くアクセスできるようになります。再び.bashrcファイルを開き、以下の行を新しい行として追加してください。

export HISTCONTROL="ignoredups"
export HISTIGNORE="&:ls:[bf]g:exit"

ファイルを保存してエディタを終了します。これで、新しいコマンドを履歴に追加する前に、すでに同じコマンドが記録されているかどうかがチェックされるようになります。なおHISTIGNOREでは、「&」(直前のコマンドと同一のもの)、「ls」、「bg」、「fg」、「exit」を履歴に記録しないよう指定しています。不要なコマンドがあれば、この行を編集して自由に調整できます。

タイプミスを自動補正する

最後に紹介するのは、スペルチェック機能の追加です。以下の行を.bashrcに追加しましょう。

shopt -s cdspell

保存して終了すれば完了です。この設定を有効にすると、cdコマンドでディレクトリ名を入力する際の軽微なタイプミス(文字の入れ替わりや不足・過剰など)を自動的に検出し、正しいディレクトリ名に補正してくれるようになります。入力ミスによる「No such file or directory」エラーに悩まされることが大幅に減るでしょう。

Linuxのhistoryコマンドに関するガイドがお役に立てば幸いです。他にもLinuxのヒントやテクニック、ガイド記事をぜひチェックしてみてください。

  1. KDEのクリップボードウィジェットでクリップボード履歴をバックアップする方法

    最近のクリップボードマネージャーの多くには「履歴」機能が搭載されており、過去にコピーした項目を選んで、好きな場所に再貼り付けできます。ただし、この履歴は保存できる件数に上限があり、一定数を超えると古いものから順に破棄されていきます。後で参照したいクリップボードの内容を残しておくには、いちいちアクティブなクリップボードに戻してから、メモアプリなどに一つずつ手動で入力する必要がありました。そこで今回は、クリップボード履歴を任意のフォルダ内のプレーンテキストファイルにバックアップできる、ちょっとした「裏技」をご紹介します。注意: このチュートリアルではKDEデスクトップのクリップボードウィジェットを

  2. Linux PCを高速化する5つの方法|GRUB短縮からデスクトップ環境変更まで

    Linuxは強力なOSエコシステムとして、初期状態から優れた速度を発揮することが最大の魅力の一つですが、さらに高速化できるならそれに越したことはありません。本記事では、システムの速度に影響する要素を解説し、実際に動作を速めるための効果的な方法を複数ご紹介します。 スレッドスケジューリング 当初、Linuxはラウンドロビン方式の単純なスケジューリングアルゴリズムでタスクを処理していました。その後、Linuxはスレッドスケジューリングを継続的に改良し、「Completely Fair Scheduler(CFS)」と呼ばれる高度で拡張性の高い設計へと進化しました。 CFSは仮想実行時間(vir