オープンCAE勉強会@富山
講習会マシンのシェルを使い易く:bashでtabキー補完によって$記号がエスケープするのを防ぐ方法は?
オープンCAE勉強会@富山や,オープンCAE学会のOpenFOAM講習会用に作成・公開した仮想マシンは,Ubuntu系のOSを使っています。
すこし前から,bash の補完機能が変わって,使いにくくなっていました。例えば,端末・ターミナルからOpenFOAMに付属する例題が格納された場所 $FOAM_TUTORIALS
の中身を確認しようとして,ll $FOAM_TUTORIALS/
とタイプしたところでTABキーを押します。すると,$
記号がエスケープされてしまい,端末に打ち込んでいた文字列が ll \$FOAM_TUTORIALS/
と変化します。こうなってしまうと,せっかくOpenFOAMの環境として設定してある変数 FOAM_TUTORIALS
が使えない状態になり,再度キー入力が必要になってしまいます。
むかしむかしは,このようなことを気にせずに,途中まで入力し,TABキーを1,2回押して候補を確認した後に入力,という使い方ができました。これができないので,ストレスを感じてしまいます。
このストレスの解消方法をメモします。ザッと調べたところ,2つの方法があるようです。
shopt -s direxpand
で先に変数を展開してしまう,shopt -u progcomp
で programmable completion を無効化する。
参考ページ:https://askubuntu.com/questions/70750/how-to-get-bash-to-stop-escaping-during-tab-completion
shopt は,bashの動作設定の表示や変更をするコマンドです。
https://atmarkit.itmedia.co.jp/ait/articles/1912/12/news034.html https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
direxpand
端末・ターミナルで,次のコマンドを実行します。
shopt -s direxpand
direxpand
If set, Bash replaces directory names with the results of word expansion when performing filename completion. This changes the contents of the readline editing buffer. If not set, Bash attempts to preserve what the user typed.
https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
direxpand
(directory expansion) オプションを有効にすることで,補完したときに変数名ではなく,実際のアドレスを表示するようになります。
補完前
ll $FOAM_TUTORIALS/
補完(TABキーを1度押した)後
ll /home/user/OpenFOAM/OpenFOAM-v2106/tutorials/
普通に使う場合は,これでも良いかもしれません。講習会で使う場合には,人によって環境が異なるため,変数名のままで作業したいです。その場合には,次の方法を選択します。
progcomp
端末・ターミナルで,次のコマンドを実行します。
shopt -u progcomp
progcomp
If set, the programmable completion facilities (see Programmable Completion) are enabled. This option is enabled by default.
progcomp
(programmable completion) オプションを無効にすると,変数名はそのままとなります。(デフォルトで有効になっている。)
補完前
ll $FOAM_TUTORIALS/
補完(TABキーを1度押した)後[$FOAM_TUTORIALSの中にある候補が表示される]
ll $FOAM_TUTORIALS/
Allclean compressible/ mesh/
Allcollect discreteMethods/ modules/
Allrun electromagnetics/ multiphase/
Alltest financial/ preProcessing/
DNS/ finiteArea/ resources/
IO/ heatTransfer/ stressAnalysis/
basic/ incompressible/ verificationAndValidation/
combustion/ lagrangian/
ただし,この方法では,intelligent な補完オプションが無効になるという副反応があるらしい。
元に戻したければ,次のコマンドを実行して,progcomp を有効化してください。
shopt -s progcomp
富山県立大学へのアクセス方法は,下記サイトをご覧ください。
富山県立大学へのアクセス
最寄り駅は,JR 小杉駅 です。
JR小杉駅南口から徒歩約20分(約2Km),または,
射水市コミュニティバス 「14.小杉駅・太閤山線」に乗車約5分です。
外部リンク:射水市コミュニティバス「14.小杉駅・太閤山線」
<お車>
無料駐車場がご利用いただけます。下記学内マップをご参照ください。
富山県立大学学内マップ
本サイトでは,Googleによるアクセス解析ツール「Googleアナリティクス」を使用しています。Googleアナリティクスはデータの収集のためにCookieを使用します。データは匿名で収集されており,個人を特定するものではありません。
なお,Cookieを無効にすることで収集を拒否することが出来ます。お使いのブラウザの設定をご確認ください。この規約の詳細は Googleアナリティクスサービス利用規約 や Googleポリシーと規約 をご覧ください。