ShoptでBashシェルをカスタマイズする方法
公開: 2022-01-29
shoptを使用してBashシェルの動作を微調整すると、50を超える設定を制御できます。 Linuxシステムを好きなように調整する方法を紹介します。
ショップビルトイン
組み込みのshoptはBashシェルのすべてのバージョンの一部であるため、何もインストールする必要はありません。 shoptで利用できるオプションの数は、長年にわたって着実に増加しています。 したがって、使用しているBashのバージョンが古いほど、 shoptオプションのリストは短くなります。
お使いのマシンで何かが機能していないように思われる場合は、Bashのmanページのエントリをチェックして、ご使用のバージョンのshoptでオプションが使用可能であることを確認してください。
以下のすべてのshoptオプションについて説明します。 また、その使用方法といくつかの例を共有します。 そこから、BashのマニュアルページまたはGNU Bashリファレンスマニュアルをチェックして、これらのオプションのいずれかが有用または魅力的に聞こえるかどうかを確認できます。
一部のshoptオプションはデフォルトで有効になっており、Bashのデフォルトの動作の一部を形成します。 Bashへの短期的な変更としてshoptオプションを有効にすることができます。 その後、シェルを閉じるとデフォルトの動作に戻ります。
ただし、Bashシェルを起動するたびに変更された動作を利用できるようにする場合は、変更を永続的にすることができます。
ショップオプション
53のshoptオプションがあります。 オプションなしでshoptコマンドを使用すると、これらが一覧表示されます。 wcコマンドを使用して出力をパイプ処理すると、行、単語、文字がカウントされます。 各shoptオプションは独自の行にあるため、行数はオプションの数です。
次のように入力します。
ショップ| トイレ

すべてのオプションを表示するには、 columnコマンドを使用して出力をパイプ処理し、オプション名を列に表示するか、 lessにパイプ処理します。
次のように入力します。
ショップ| 桁

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

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

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

関連: Linuxのmanコマンドの使用方法:隠された秘密と基本
オプションの設定と設定解除
shoptオプションを設定および設定解除するには、次のコマンドを使用します。
- -s :設定または有効にします。
- -u :設定を解除するか、無効にします。
一部のオプションはデフォルトで有効になっているため、どのオプションがオンになっているかを確認するのも便利です。 オプション名を使用せずに、 -sおよび-uオプションを使用してこれを行うことができます。 これにより、 shoptはオンとオフのオプションを一覧表示します。
次のように入力します。
shopt -s

shopt -u | 桁

-sまたは-uコマンドなしでshoptオプションを使用して、各オプションのオンまたはオフの状態を確認できます。
たとえば、次のように入力して、 histverifyオプションの設定を確認できます。
shopt histverify
次のように入力してオンに設定できます。
shopt -s histverify
次に、次のように入力してもう一度確認します。
shopt histverify

histverifyオプションは、 historyコマンドの1つの側面の動作方法を変更します。 通常、 !245のように番号でコマンドを参照してコマンドを繰り返すようにhistoryに要求すると、コマンドはコマンド履歴から取得され、すぐに実行されます。
コマンドを確認して期待どおりのコマンドであることを確認し、必要に応じて編集する場合は、次のように入力して、 shopt histverifyオプションをオンに設定します。
!245

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

関連: Linuxでhistoryコマンドを使用する方法
autocdオプション
autocdオプションをオンに設定した状態で、コマンドラインでディレクトリの名前を入力してEnterキーを押すと、その前にcdと入力した場合と同じように扱われます。
次のように入力して、 autocdオプションをオンにします。
shopt -s autocd
次に、ディレクトリの名前を入力します。
ドキュメント

cdspellオプション
cdspellオプションをオンにすると、Bashはディレクトリ名の簡単なスペルミスやタイプミスを自動的に修正します。
次のように入力して、 cdspellオプションを設定します。
shopt -s cdspell
大文字の頭文字が必要な小文字のディレクトリに変更するには、次のように入力します。
cdドキュメント
次に、次のように入力して、名前に余分な「t」が含まれるディレクトリ名を試すことができます。
cd ../ Picttures

スペルミスに関係なく、Bashは各ディレクトリに変更されます。
xpg_echoオプション
xpg_echoオプションがonに設定されている場合、echoコマンドは、改行の場合は\n 、水平タブの場合は\tのようにエスケープ文字に従います。
まず、次のように入力して、オプションが設定されていることを確認します。
shopt -s xpg_echo
次に、 echoに渡す文字列に\nを含めます。
echo "これは1行目です\ nこれは2行目です"

エスケープされた改行文字は、出力で改行を強制します。
これにより、 -e (エスケープ解釈を有効にする) echoオプションと同じ動作が生成されますが、 xpg_echoではデフォルトのアクションにすることができます。
関連: LinuxでEchoコマンドを使用する方法
dotglobオプション
dotglobオプションは、少し注意して扱う必要があります。 これにより、ピリオド( . )で始まるファイルとディレクトリを名前の展開または「グロブ」に含めることができます。 これらは「ドットファイル」または「ドットディレクトリ」と呼ばれ、通常は非表示になっています。 dotglobオプションは、名前の先頭にあるドットを無視します。
まず、次のように入力して、「オタク」で終わるファイルまたはディレクトリを検索します。
ls * geek
1つのファイルが見つかり、リストされます。 次に、次のように入力してdotglobオプションをオンにします。
shopt -s dotglob
同じlsコマンドを発行して、「geek」で終わるファイルとディレクトリを探します。
ls * geek

今回は2つのファイルが見つかり、リストされています。そのうちの1つはドットファイルです。 dotglobオプションをオンに設定している場合は、 rmとmvに注意する必要があります。
nocaseglobオプション
nocaseglobオプションはdotglobオプションに似ていますが、 nocaseglobを使用すると、ファイル名とディレクトリの大文字と小文字の違いが名前の展開で無視される点が異なります。
次のように入力して、「how」で始まるファイルまたはディレクトリを検索します。
ls how *
1つのファイルが見つかり、リストされます。 次のように入力して、 nocaseglobオプションをオンにします。
shopt -s nocaseglob
次に、 lsコマンドを繰り返します。
ls how *

2つのファイルが見つかり、そのうちの1つには大文字が含まれています。
変更を永続的に行う
行った変更は、現在のBashシェルを閉じるまで続きます。 それらを異なるシェルセッション間で永続的にするには、それらを「.bashrc」ファイルに追加する必要があります。
ホームディレクトリで、次のコマンドを入力して、グラフィカルなGeditテキストエディタで「.bashrc」ファイルを開きます(または、必要に応じて変更して、好みのエディタを使用します)。
gedit .bashrc
「.bashrc」ファイルがロードされた状態でgeditエディターが開きます。 いくつかのshoptエントリがすでに含まれていることがわかります。

ここに独自のshoptオプションを追加することもできます。 それらを追加したら、変更を保存してエディターを閉じます。 これで、新しいBashシェルを開くたびに、オプションが設定されます。
目で見ることができる限りのオプション
確かに、 shoptコマンドには多くのオプションがありますが、一度にすべてを把握する必要はありません。 たくさんあるので、興味のないものもあるでしょう。
たとえば、特定の古いバージョンと互換性のある方法でBashを強制的に動作させる束があります。 それは誰かにとっては役に立つかもしれませんが、それはかなりニッチなケースです。
BashのマニュアルページまたはGNUBashリファレンスマニュアルを確認できます。 どのオプションがあなたに違いをもたらすかを決定し、それらを試してみてください。 ファイル名とディレクトリ名の展開方法に影響を与えるオプションに注意してください。 それらに慣れるまで、 lsのような良性のコマンドでそれらを試してください。
