Latest evidence-based health information
Ipad

Bashの基本:シェルのコマンド履歴の使い方(およびスクラブ方法)

Bashの基本:シェルのコマンド履歴の使い方(およびスクラブ方法)
Bashの基本:シェルのコマンド履歴の使い方(およびスクラブ方法)

Linuxでコマンドラインを使い始めるユーザーの多くは、Bourne Again Shell(Bash)を使用している可能性が高いでしょう。BashはMac OS Xのデフォルトシェルであり、WindowsユーザーはWindows Subsystem for Linuxを通じてBashを使用できます。

Bash はほとんど設定なしでも問題なく動作しますが、シェルをより便利にする機能がいくつかあります。その一つが historyコマンドです。

過去を振り返る

ウェブブラウザの履歴を見たことがあるなら、履歴の仕組みは既によくご存知でしょう。Bashの履歴は、コマンドラインで入力されたコマンドの履歴を保存します。これは、以前どのように操作したか思い出せない時などに便利です。

bashの履歴 アレックス・キャンベル

最近入力したコマンドを表示する履歴コマンド。pacmanコマンドのスペルミス(14)と、それに続くコマンドラインへのパスワード入力(15)に注目して ください

過去のコマンド一覧を表示するには、 コマンドラインでhistoryと入力するだけです。現在のシェルセッション中に入力されたコマンド一覧(  historyを含む)が表示されます。

Bashの履歴機能は、矢印キーによるナビゲーションも提供します。Bashシェルを開いて上矢印キーを押すと、以前に入力したコマンドがコマンドラインに表示されます。 

Bashは、シェルセッションが終了するまで履歴をメモリに保持し、終了時にディスクに書き込みます(ファイルは通常、/home/(user)/ .bash_history にあります)。- aスイッチを使用して、現在の履歴を手動で履歴ファイルに追加することもできます 。

$ 履歴 -a

-nスイッチを使用すると、ファイルから現在のセッションに履歴を追加することもできます。履歴ファイルでメモリ内の履歴を上書きしたい場合は、-rスイッチを使用してください。最後に、 -wスイッチを使用すると、履歴ファイルを上書きできます。

歴史を記憶の穴に送る

入力したすべてのコマンドの履歴を保存するのは、Gmailアカウントのすべてのメッセージを保存したり、ブラウザの履歴をそのまま残したりするのと同じように便利です。しかし、これらの膨大なデータをそのまま放置しておくと、セキュリティリスクにつながる可能性があります。私自身、前回のコマンドが失敗したため、無意識のうちにコマンドラインにパスワードを入力してしまった経験があります。SSHやデータベース接続を利用する上級ユーザーの場合、これらのコマンドではパスワードをコマンドライン引数として渡すことができます。

明確な履歴 アレックス・カンパベル

メモリ内の Bash の履歴をクリアするには、コマンドを 1 つだけ実行します。

プライバシーについて少し心配なユーザーにとって、Bash 履歴ファイルは、ユーザーが自分のコンピューターをどのように使用しているかに関するメタデータの宝庫です。 

幸いなことに、 -cスイッチを使えばメモリから履歴を削除できます 。ただし、注意が必要です。メモリから履歴を消去しても、履歴ファイルは消去されません 。先ほど説明した-wスイッチを覚えていれば 、このツールはまさにその役割を果たします。履歴ファイルを消去するには、 -cスイッチでメモリを消去し、 -wスイッチで(ほぼ)空のファイルをディスクに書き込むだけです。

$ 履歴 -c 
$ 履歴 -w

作業が終わるたびに履歴ファイルを消去するのは少し面倒ですが、変数HISTFILESIZEを0に設定することで、追加の行が書き込まれないようにすることもできます。変更を保存するには、設定を~/.bash_profileにエコー出力します。

$ echo “HISTFILESIZE=0” >> ~/.bash_profile

-dスイッチに続けてコマンドの参照行 (コマンド リストの左側に表示されます) を指定すると、Bash 履歴の 1 つのエントリを削除できます。

$ 履歴 -d 42

これは、誤ってパスワードを入力したことに気づき、その間違いを 1 つ消去する必要がある場合に最適です。

オプションの履歴

履歴を残すことは必ずしも悪いことではありませんが、何をいつ記録するかを選択できる方が好みの人もいるでしょう。Bash にはそのような人にも対応できる特別な設定があり、履歴レコーダーにスペース文字で始まるすべてのコマンドを無視するように指示します。

Bashでは、コマンドの前に10個のスペースを入れても入れなくても、コマンドは同じように実行されます。HISTCONTROL設定は、Bashが動作を制御するために使用する制御設定のリストです。HISTCONTROLに「ignorespace」が設定れている場合、Bashは先頭にスペース文字があるコマンドを履歴から省略します。

HISTCONTROL を一時的に設定するには、次のように入力します。

$ HISTCONTROL="スペースを無視"

永続的に設定するには、.bash_profileファイルに追加します。

$ echo “HISTCONTROL=”ignorespace”” >> ~/.bash_profile
無視スペース アレックス・キャンベル

「ignorespace」を有効にすると、コマンドの前にスペース文字を付けることで、コマンドを履歴から除外できます。

Bashの履歴を情報から完全に守ることは些細なことのように思えるかもしれませんが、新進気鋭の開発者や共有コンピュータを使用する人にとっては重要なことです。覚えておいてください:LinuxやMacマシンの他の一般ユーザーは履歴ファイルを読むことができませんが、ルート権限を取得できる人なら誰でも読むことができます。ノートパソコンを修理に出す場合や、信頼できない人にコンピュータにアクセスしてもらう場合は、Bashの履歴(Webだけでなく)を必ず消去してください。

Otpoo

Health writer and researcher with expertise in evidence-based medicine and healthcare information.