\r\n\r\n
shoptを使ってバッシュシェルの挙動を微調整する場合、50以上の設定をコントロールすることができます。Linuxシステムを自分好みにカスタマイズする方法を紹介します。
shoptはbashshellのすべてのバージョンに組み込まれているので、何もインストールする必要はありません。ショップトが提供するオプションは、年々確実に増えています。つまり、Bashのバージョンが古ければ古いほど、shoptのオプションのリストが短くなるのです。
もし、あなたのマシンで何かが動作していないようであれば、Bashのマニュアルページのエントリを確認し、あなたのバージョンのshoptでそのオプションが利用可能であるかどうかを確認してください。
下記の通り、すべてのショッピングオプションを提供しています。また、使い方を説明し、いくつかの例を紹介します。そこから、Bashのマニュアルページやgnubashのリファレンスマニュアルをチェックして、これらのオプションが有用で魅力的であるかどうかを確認することができます。
shoptのオプションの中には、デフォルトで有効になっているものもあり、Bashのデフォルトの動作の一部になっています。Bashの短期的な変更として、shoptオプションを有効にすることができます。シェルを閉じると、デフォルトの動作に戻ります。
ただし、変更した動作をbashshellを起動するたびに利用できるようにしたい場合は、変更を恒久化することができます。
ショップトの選択肢は53種類。オプションなしでshoptコマンドを使用すると、それらの一覧を表示します。wcコマンドで出力すれば、行数、単語数、文字数をカウントしてくれる。shoptのオプションはそれぞれ独立した行になっているので、行数はオプションの数になります。
以下のように入力します。
shopt | wcすべてのオプションを表示するには、column コマンドでオプション名を列として表示するように出力をパイプライン化するか、より少ない列で表示するようにパイプライン化することができる。
以下のように入力します。
shopt | columnshoptとそのオプションについて述べているセクションは、LinuxマニュアルのBashセクションにあります。Bashのパラグラフは6000行以上あります。shoptの説明は、たくさんスクロールすれば出てきますし、マニュアルで検索することもできます。
これを行うには、マニュアルのBashセクションを以下の場所で開きます。
man bashマニュアルで、/を押して検索を開始します。 と入力し、Enterキーを押します。
assoc_expand_onceマンウィンドウにshoptoptionセクションの冒頭が表示されます。
関連:Linuxのmanコマンドの使い方:隠された秘密と基礎知識
shoptオプションの設定・解除は、以下のコマンドで行います。
デフォルトで有効になっているオプションもあるため、どのオプションが有効になっているかを確認することも便利です。オプション名の代わりに -s と -u オプションを使用することができます。これにより、shoptはオンとオフになっているオプションを一覧表示します。
と入力する。
shopt -s shopt -u | columnsや-uコマンドを使わずにshoptオプションを使うと、各オプションのON/OFFの状態を見ることができます。
例えば、次のように入力すると、histverifyオプションの設定を確認することができます。
shopt histverifyと入力することで、オンに設定することができます。
shopt -s histverifyそして、次のように入力して、再度確認することができます。
shopt histverifyhistverifyオプションは、historyコマンドの動作の一面を変更します。通常、参照するコマンドに番号を振って、historyにコマンドを繰り返すように指示した場合、例えば!245のように、コマンド履歴からコマンドを取り出し、即座に実行します。
コマンドを表示して期待通りのコマンドであることを確認し、(必要に応じて)編集したい場合は、次のコマンドを入力して、shopt histverifyオプションをenabledに設定します。
!245コマンドを取得してコマンドラインに表示し、Enterキーを押すことで削除、編集、実行が可能です。
関連:Linuxでのhistoryコマンドの使い方
autocdオプションをonに設定すると、コマンドラインでディレクトリ名を入力してEnterキーを押しても、先にcdと入力したのと同じように処理されます。
autocdオプションをオンにするために、以下のコマンドを入力します。
shopt -s autocd次に、ディレクトリの名前を入力します。
Documentscdspellオプションをオンにすると、Bashは簡単なスペルミスやディレクトリ名のタイプミスを自動的に修正します。
次のように入力して、cdspellオプションを設定しました。
shopt -s cdspell大文字の頭文字を持つはずの小文字のディレクトリに変更しようとする場合は、次のように入力します。
cd documentsそこで、次のように入力して、ディレクトリ名に "t "を追加することを試してみます。
cd ../PictturesBashはスペルミスに関係なく、各ディレクトリに変更されます。
xpgui uc echo オプションを on に設定すると、echo コマンドはエスケープ文字に従います。
まず、次のように入力し、オプションが設定されていることを確認します。
shopt -s xpg_echoそして、echoに渡す文字列の中に、"the \n "を入れてください。
echo "This is line one\nThis is line two"エスケープされた改行文字は、出力に改行を強制します。
これは、-e (エスケープ解釈有効) echo オプションと同じ動作をしますが、xpgu echo では、これをデフォルトの動作として使用することができます。
関連:LinuxでのEchoコマンドの使い方
dotglobオプションは慎重に扱う必要があります。ピリオド(.)で始まるファイルやディレクトリを許可します。ドット(.)で始まるファイルやディレクトリは、名前の拡張子や「グロビング」に含まれ、これらは「ドットファイル」または「ドットディレクトリ」と呼ばれ、通常は非表示になっています。dotglobオプションは、その名前で始まるドットを無視します。
まず、次のように入力して、「geek」で終わるファイルやディレクトリを検索してみます。
ls *geek次に、次のように入力して、dotglobオプションを有効にします。
shopt -s dotglob同じようにlsコマンドを発行して、「geek」で終わるファイルやディレクトリを探します。
ls *geek今回は2つのファイルが見つかりリストアップされましたが、そのうちの1つはドットファイルです。dotglobオプションがonに設定されている場合、rmとmvには注意が必要です。
nocaseglobオプションはdotglobオプションと似ていますが、nocaseglobはファイル名やディレクトリの大文字と小文字の違いを無視して名前を展開する点が異なります。
howで始まるファイルやディレクトリを探すために、次のように入力します。
ls how*nocaseglobオプションを有効にするために、次のように入力します。
shopt -s nocaseglobそして、lsコマンドを繰り返す:。
ls how*2つのファイルを見つけ、そのうちの1つは大文字を含んでいます。
変更した内容は、現在のbashshellを閉じるまでしか続きませんので、別のシェルセッションで永続させるためには、".bashrc "ファイルに追加しておく必要があります。
ホームディレクトリで、次のコマンドを入力して、グラフィカルなテキストエディタGeditで「.bashrc」ファイルを開きます(お好みのエディタを使用する場合は適宜変更してください)。
gedit .bashrcgeditエディタが起動し、".bashrc "ファイルが読み込まれます。
また、ここで独自のショップトオプションを追加することも可能です。追加したら、変更を保存してエディタを閉じます。これで、新しいバッシュシェルを開くたびに、オプションが設定されるようになります。
shoptコマンドには多くのオプションがありますが、一度にすべてを処理する必要はありません。数が多いので、中には興味を持てないものもあるかもしれません。
例えば、Bashを特定の古いバージョンと互換性のある方法で強制的に動作させる方法はいろいろあります。人によってはうまくいくかもしれませんが、かなりニッチなケースです。
Bashのマニュアルページやgnubashのリファレンスマニュアルを確認することができます。どのオプションが自分に影響を与えるかを決め、実験する。ただ、ファイル名やディレクトリ名の展開方法に影響を与えるオプションには注意が必要です。慣れるまでは、lsのようなマイルドなコマンドで試してみてください。