※ ChatGPTを利用し、要約された質問です(原文:Emacsのシェルモードでワイルドカードが使えない)
Emacsのシェルモードでワイルドカードが使えない
このQ&Aのポイント
Emacsのシェルモードで、bashで使えるワイルドカードが使えないと困っています。
具体的には、?(pattern)、*(pattern)、+(pattern)、!(pattern)のワイルドカードが使えません。
この問題を解決する方法をご存知の方がいらっしゃれば、情報を提供していただけると助かります。
Emacsのシェルモードでワイルドカードが使えない
こんにちは。
Emacsは、Gnu Emacs for Windows 23.4 を使っています。
シェルモードのシェルには、cygwinのbashを使っているのですが、
bashで使えるはずのワイルドカードが、いくつか使えなくて、困っています。
bashのワイルドカードで、使えないものは、以下の通りです。
?(pattern) 与えられたパターンが 0 回または 1 回現われるとマッチします。
*(pattern) 与えられたパターンが 0 回以上現われるとマッチします。
+(pattern) 与えられたパターンが 1 回以上現われるとマッチします。
!(pattern) 与えられたパターンいずれにも含まれないもの全てにマッチします。
これらのワイルドカードは、ktermなどの上では、きちんと使えます。
例えばkterm上で、
echo !(*.c)
と打てば、.cで終わらないファイル名を持つ、ファイルの一覧が表示されます。
ところが、Emacsのシェルモードで、同じように
echo !(*.c)
と打つと、
emacs "bash: !: event not found"
と表示されます。
同様に、
echo *(.c)
と打った場合、
bash: 期待してない token `(' のあたりにシンタックスエラー
と表示されます。
どうすれば、こういったワイルドカードを、シェルモードで使う事ができるのでしょうか?
何か御存じの方がいらっしゃれば、是非、情報を提供して頂きたく思います。
では、よろしくお願い致します。
お礼
御回答ありがとうございます。 説明を読ませていただき、bashのマニュアルをよーく読んだ後、 setopt -s extglob で、使用できるようになりました。 ありがとうございました。