ファイルやディレクトリを操作するときに "*" や "?" などのワイルドカードを使いますが これが何によって定義されているのかを 考えたことがありませんでした。
これ、 Linux では glob という名前だそうです。
[参考]
Dev Basics/Keyword:glob(グロブ) - @IT
記事を読んで驚いたのが Linux では文字クラス([0-9a-z]みたいなやつ)も使えるとのこと。 Windows のコマンドプロンプトでは使えないため ワイルドカードだけだと思い込んでました。
$ ls -1 /var/log/vsftpd.log* /var/log/vsftpd.log /var/log/vsftpd.log.1 /var/log/vsftpd.log.2 /var/log/vsftpd.log.3 /var/log/vsftpd.log.4 $ ls -1 /var/log/vsftpd.log.? /var/log/vsftpd.log.1 /var/log/vsftpd.log.2 /var/log/vsftpd.log.3 /var/log/vsftpd.log.4 $ ls -1 /var/log/vsftpd.log.[2-3] /var/log/vsftpd.log.2 /var/log/vsftpd.log.3 $ ls -1 /var/log/vsftpd.log.[^3-5] /var/log/vsftpd.log.1 /var/log/vsftpd.log.2
うーん、これは便利。
こういうのは当たり前過ぎて、 知ってる人は「他の人も知ってる」と思って わざわざ伝えないものなのかもしれないですね。
ちなみに、ファイルをコピーするときによく使う {} の展開も glob の仕事だそうです。
$ ls -1 /var/log/syslog* /var/log/syslog $ cp -p /var/log/syslog{,.keep} $ ls -1 /var/log/syslog* /var/log/syslog /var/log/syslog.keep