はじめに
bashのシェルオプションを設定する「shopt」コマンドがあることを知り、作業を効率化できそうなオプションについて調べてみました。bashを使用されている方の参考になれば幸いです。
開発環境
・WSL2/Ubuntu環境
shoptコマンドとは
以下GNU.orgのサイトより引用
This builtin allows you to change additional shell optional behavior.
・shoptコマンドを使用することで、シェルのオプション動作を有効化/無効化、
といった変更(切り替え)が可能とのこと
・shoptコマンドは以下のコマンドを実行することで、シェルのオプション動作の
一覧を表示できます
$ shopt
autocd on
assoc_expand_once off
cdable_vars off
cdspell on
checkhash off
checkjobs off
・・・(省略)・・・
autocadやcdspellなどが記載されている列がオプション動作、on/offが記載されている列が
有効(on)/無効(off)を示している列です。
shoptコマンドの便利なオプション
cdspell
cdspellオプションが有効化されると、ディレクトリのスペルに小さな誤りがある場合、
cdコマンドの際修正します。対象となる誤りは欠けている文字や余分な文字などです。
・以下コマンドでcdspellを有効化
$ shopt -s cdspell
・以下コマンドでcdspellを無効化
$ shopt -u cdspell
cdspellについて実際に何文字程度タイプミスが修正されるか試してみました。
結果としては、1文字のタイプミスは修正されましたが、2文字以上は修正を確認できませんでした。詳細は以下に記載しました。
~/example$ ls #ディレクトリ構成表示
ShoptSampleDir1 ShoptSampleDir2
~/example$ cd ShoptSampleDi1 #本来Dir1の所Di1と1文字タイプミス
ShoptSampleDir1
~/example/ShoptSampleDir1$ #ShoptSampleDir1に移動
~/example$ cd ShoptSampleD1 #本来Dir1の所D1と2文字タイプミス
bash: cd: ShoptSampleD1: そのようなファイルやディレクトリはありません
~/example$ #ShoptSampleDir1に移動出来ない
~/example$ cd ShoptampleDir1 #本来Sampleの所ampleと1文字タイプミス
ShoptSampleDir1
~/example/ShoptSampleDir1$ #ShoptSampleDir1に移動
~/example$ cd ShoptmpleDir1 #本来Sampleの所mpleと2文字タイプミス
bash: cd: ShoptmpleDir1: そのようなファイルやディレクトリはありません
~/example$ #ShoptSampleDir1に移動出来ない
dotglob
dotglobオプションが有効化されると、ファイル名展開の結果に'.'から始まるファイル名を含めます。
・以下コマンドでdotglobを有効化
$ shopt -s dotglob
・以下コマンドでdotglobを無効化
$ shopt -u dotglob
ls *コマンドを使用する際にdotglobオプションの有効化・無効化でどのように結果が変わるか試し、'.'から始まるファイル名も含まれることを確認しました。詳細は以下に記載しました。
~/example$ ls * #dotglobを無効化した際のls *
sample.txt sample1.txt
~/example$ ls * #dotglobを有効化した際のls *
.sampledotglob .sampledotglob1 sample.txt sample1.txt
以下サイトではdotglobオプションを使用して、cpコマンドやmvコマンドの実行の際に'.'から始まるファイルも対象に含める方法が記載されており、非常に参考になりました。
参考文献
本記事は以下情報を参考にして執筆しました。