
私はしばしばシェルファイル名のグロービングを使用して、allなどの操作/dev/sda
などの操作を実行します。ただし、これはディスクに存在するパターンと一致するファイルに依存します。今日はそれぞれ背中で実行したかったのですが、ディスクにパターンと一致するファイル名がないので動作しませんでした。/dev/sdb
/dev/sdc
/dev/sd[a-f]
gitk
master@{1}
master@{2}
gitk master@{[1-5]}
実際のディスクファイルに関係なく、シェルにグロービングを実行させるにはどうすればよいですか?
答え1
一致するファイルがないと、シェルのグロービングはできません。あなたはする必要があります支柱の拡張:
gitk master@{{1..5}}
または:
gitk master@{{1,2,3,4,5}}
フォームは後で、後で、後で{x..y}
必要です。zsh 2.6-beta4
bash 3.0
ksh93r
{x,y}
最初はcsh
BourneにShell Firstにコピーされましたksh
。
答え2
少なくともbashでは範囲を使用できます。
$ echo gitk master@{{1..5}}
gitk master@{1} master@{2} master@{3} master@{4} master@{5}
明らかに、echoは何が起こっているのかを示すために上記で使用されました。
文字にも機能します。
$ echo /dev/sd{x..z}
/dev/sdx /dev/sdy /dev/sdz
注:これはグローバル一致と正規表現一致です。これは2つの異なるものです。グローバルマッチングのためのシェル。だからシェル正規表現ワイルドカードあまりありません。