技術ノート Linux shopt を使用して Bash シェルをカスタマイズする方法

shopt を使用して Bash シェルをカスタマイズする方法

shopt を使用して Bash シェルの動作を微調整すると、50 以上の設定を制御できます。 Linux システムを好みに合わせて調整する方法を説明します。

ショップ内蔵

shopt ビルトインはすべてのバージョンの Bash シェル の一部であるため、何もインストールする必要はありません。 shopt で利用できるオプションの数は、長年にわたって着実に増加しています。したがって、使用している Bash のバージョンが古いほど、 shopt オプションのリストは短くなります。

マシン上で何かが動作していないように見える場合は、Bash の man ページのエントリを確認し、そのオプションがお使いのバージョンの shopt で利用可能であることを確認してください。

以下ですべての shopt オプションをカバーします。また、その使用方法について説明し、いくつかの例を共有します。そこから、Bash のマニュアル ページまたは GNU Bash リファレンス マニュアル を調べて、これらのオプションのいずれかが便利または魅力的かどうかを確認できます。

一部の shopt オプションはデフォルトで有効になっており、Bash のデフォルト動作の一部を形成します。 Bash への短期的な変更として shopt オプションを有効にすることができます。シェルを閉じると、デフォルトの動作に戻ります。

ただし、Bash シェルを起動するたびに変更された動作を利用できるようにしたい場合は、変更を永続的にすることができます。

shopt を使用して Bash シェルをカスタマイズする方法

ショップのオプション

shopt オプションは53種類あります。オプションを指定せずに shopt コマンドを使用すると、これらがリストされます。出力をパイプすると、

 wc

コマンドを実行すると、 行、単語、文字がカウントされ ます。各 shopt オプションは独自の行にあるため、行数がオプションの数になります。

次のように入力します。

買い物 |トイレ

すべてのオプションを表示するには、出力を column コマンドを使用してパイプ処理し て columns にオプション名を表示する か、または、それを less にパイプ処理します。

次のように入力します。

買い物 |カラム

shopt を使用して Bash シェルをカスタマイズする方法

Linux マニュアルで shopt を見つける

shopt とそのオプションについて説明するセクションは、Linux マニュアルの Bash セクションにあります。 Bash セクションの長さは 6,000 行を超えています。 shopt の説明はスクロールして見つけることも、マニュアル内で検索することもできます。

これを行うには、マニュアルの Bash セクションを開いてください。

マンバッシュ

マニュアルでは、 / を押して検索を開始します。次のように入力し、Enter キーを押します。

 assoc_expand_once

shopt オプション セクションの開始部分が man ウィンドウに表示されます。

shopt を使用して Bash シェルをカスタマイズする方法

オプションの設定と設定解除

shopt オプションを設定または設定解除するには、次のコマンドを使用します。

  • -s : 設定または有効化します。
  • -u : 設定を解除するか、無効にします。

一部のオプションはデフォルトで有効になっているため、どのオプションがオンになっているかを確認すると便利です。オプション名を使用せずに、 -s および -u オプションを使用してこれを行うことができます。これにより、 shopt オンとオフのオプションをリストします。

次のように入力します。

買い物 -s

ショップ -u |カラム

-s または -u コマンドを使用せずに shopt オプションを使用すると、各オプションのオンまたはオフの状態を確認できます。

たとえば、次のように入力して、 histverify オプションの設定を確認できます。

購入履歴を確認する

次のように入力してオンに設定できます。

 shopt -s histverify

次に、次のように入力して再度確認します。

購入履歴を確認する

histverify オプションは、 history コマンドの一側面の動作方法を変更します。通常、 !245 のように番号で参照してコマンドを繰り返すように history 要求すると、コマンドはコマンド履歴から取得され、すぐに実行されます。

コマンドをレビューして期待どおりであることを確認し、必要に応じて編集したい場合は、次のように入力して shopt histverify オプションをオンに設定します。

 !245

コマンドが取得され、コマンド ラインに表示されます。 Enter キーを押すと、削除、編集、または実行できます。

shopt を使用して Bash シェルをカスタマイズする方法

autocd オプション

autocd オプションを on に設定すると、コマンド ラインにディレクトリの名前を入力して Enter キーを押すと、ディレクトリの前に cd と入力したものとして扱われます。

次のように入力して autocd オプションをオンにします。

 shopt -s autocd

次に、ディレクトリの名前を入力します。

書類

shopt を使用して Bash シェルをカスタマイズする方法

cdspell オプション

cdspell オプションをオンにすると、Bash はディレクトリ名の単純なスペルミスやタイプミスを自動的に修正します。

次のように入力して cdspell オプションを設定します。

 shopt -s cdspell

頭文字を大文字にする必要があるディレクトリを小文字で変更するには、次のように入力します。

 CDドキュメント

次に、次のように入力して、名前に追加の「t」を含むディレクトリ名を試します。

 cd ../写真

Bash は、スペルミスに関係なく、各ディレクトリに変更されます。

shopt を使用して Bash シェルをカスタマイズする方法

xpg_echo オプション

xpg_echo オプションが on に設定されている場合、echo コマンドは、改行の \n や水平タブの \t などのエスケープ文字に従います。

まず、次のように入力して、オプションが設定されていることを確認します。

 shopt -s xpg_echo

次に、 echo に渡す文字列に \n を含めます。

 echo "これは 1 行目です\nこれは 2 行目です"

エスケープされた改行文字により、出力内で強制的に改行が行われます。

これは -e ( エスケープ解釈を有効にする ) echo オプションと同じ動作を生成しますが、 xpg_echo これをデフォルトのアクションにすることができます。

ドットグロブオプション

dotglob オプションは、少し注意して扱う必要があります。これにより、ピリオド ( . ) で始まるファイルとディレクトリを名前の拡張または「グロビング」に含めることができます。これらは「ドット ファイル」または「ドット ディレクトリ」と呼ばれ、通常は隠されています。 dotglob オプションは、名前の先頭のドットを無視します。

まず、次のように入力して、「geek」で終わるファイルまたはディレクトリを検索します。

 ls *オタク

1 つのファイルが見つかり、リストされます。次に、次のように入力して dotglob オプションをオンにします。

 shopt -s ドットグロブ

同じ ls コマンドを発行して、「geek」で終わるファイルとディレクトリを検索します。

 ls *オタク

今回は 2 つのファイルが見つかり、リストされます。そのうちの 1 つはドット ファイルです。 dotglob オプションをオンに設定している場合、 rm mv 使用する場合は注意が必要です。

nocaseglob オプション

nocaseglob オプションは dotglob オプションと似ていますが、 nocaseglob ではファイル名とディレクトリの大文字と小文字の違いが名前展開で無視される点が異なります。

次のように入力して、「how」で始まるファイルまたはディレクトリを検索します。

どうやって*

1 つのファイルが見つかり、リストされます。次のように入力して nocaseglob オプションをオンにします。

 shopt -s nocaseglob

次に、 ls コマンドを繰り返します。

どうやって*

2 つのファイルが見つかり、そのうちの 1 つに大文字が含まれています。

変更を永続化する

加えた変更は、現在の Bash シェルを閉じるまでのみ持続します。これらを異なるシェル セッション間で永続的にするには、それらを「.bashrc」ファイルに追加する必要があります。

ホーム ディレクトリで次のコマンドを入力して、グラフィカル Gedit テキスト エディタで「.bashrc」ファイルを開きます (または、好みのエディタを使用するようにファイルを変更します)。

 gedit .bashrc

gedit エディターが開き、「.bashrc」ファイルがロードされます。いくつかの shopt エントリがすでに含まれていることがわかります。

ここに独自の shopt オプションを追加することもできます。追加したら、変更を保存してエディターを閉じます。これで、新しい Bash シェルを開くたびに、オプションが設定されるようになります。

見渡す限りのオプション

確かに、 shopt コマンドには多くのオプションがありますが、すべてを一度に理解する必要はありません。たくさんあるので、興味のないものもあるかもしれません。

たとえば、特定の古いバージョンと互換性のある方法で Bash を動作させるものはたくさんあります。それは誰かにとっては役に立つかもしれませんが、それはかなりニッチなケースです。

Bash の マニュアル ページ または GNU Bash リファレンス マニュアル を参照してください。どのオプションがあなたにとって変化をもたらすかを決定し、それを試してください。ファイル名とディレクトリ名の展開方法に影響を与えるオプションには注意してください。慣れるまで、 ls などの無害なコマンドを使用して試してください。

「 shopt を使用して Bash シェルをカスタマイズする方法」に関するベスト動画選定!

【初心者向け】シェルスクリプト書き方編【前編】
シェルスクリプトとは?【分かりやすい解説シリーズ #68】【プログラミング】