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
のような良性のコマンドでそれらを試してください。