Shellワイルドカード

1498 ワード

Shellワイルドカード
いつの間にかワイルドカードを使っていたかもしれません.Windowsで® でファイルを指定したり、ファイルを探したりするときに*を使用して任意の文字列を表します.たとえば、*.txtは.txtで終わるすべてのファイルと一致します.私たちも前節でよく使いました.ただし、*以外にもワイルドカードがたくさんあります.
ls*.txtコマンドを入力してEnterを押すと、どのファイルが*.txtモードに一致するかを探すタスクはlsコマンドではなくshell自身が完了します.これは、コマンドラインがshellによってどのように解析されるかをさらに説明する必要がある.次のように入力します.
$ ls *.txt
readme.txt recipes.txt

このコマンドは、まず一連の単語(本例のlsおよび*.txt)に分割される.shellが単語に*を見つけた場合、単語全体をワイルドモードとして解析し、一致するすべてのファイルで置き換えます.したがって、このコマンドは実行前にls readme.txt recipe.txtとなり、所望の結果が得られる.残りのワイルドカードは次のとおりです.
  • ? :1つの任意の文字にのみ一致します.
  • [...]:四角カッコのいずれかの文字と一致します.これらの文字は、1〜9などの文字範囲、または離散値、または両方で表すことができる.例えば、[a-zBE 5-7]は、aからzまでのすべての文字とB、E、5、6、7と一致する.
  • [!...]:四角カッコにないすべての文字と一致します.例えば[!a-z]は、ある小文字以外のアルファベットと一致する[5].
  • {c 1,c 2}:c 1またはc 2と一致します.このうちc 1とc 2もワイルドカードです.したがって、{[0-9]*,[acr]}を使用できます.
  • ワイルドカード・モードとその説明は次のとおりです.
  • /etc/*conf:/etcディレクトリ内のconfで終わるすべてのファイル.これは、/etc/inetd.conf、/etc/conf.linuxconfと一致し、/etc/confと一致します.*も空の文字列に一致することに注意してください.
  • image/{cars,space[0-9]}/*.jpg:image/cars,image/space 0,(...)、image/space 9ディレクトリの.jpgで終わるファイル.
  • /usr/share/doc/*/README:すべての/usr/share/docの直接サブディレクトリのすべてのREADMEファイル.例えば/usr/share/doc/mandrake/README.ただし、/usr/share/doc/myprog/doc/READMEは含まれません.
  • *[!a-z]:現在のディレクトリに小文字で終わらないすべてのファイル.
  • [5]これはほとんどの言語に適用されますが、個人の言語設定(locale)には適していない可能性があります.これは文字の並び順によって異なります.いくつかの言語構成では、[a-z]はa、A、b、B、(...)、zと一致する.また,実際には一部の言語に「アクセント記号付き文字」などがあるとは考えられなかった.