RDF

きまぐれ日記

検索エンジンから来たにゃらば、左のフォームで再検索すべし。


2006-03-10 [長年日記]

   ブレース展開
       ブレース展開 (brace expansion) を使うと、任意の文字列を生成できます。この機構はパス名展開に似てい ま
       す が、 生 成 さ れ た ファイル名が実在する必要はありません。ブレース展開されるパターンは、 前置部分
       (preamble: 省略可能)、対になるブレースの間にコンマで区切って並べた文字列、 後置部分 (postscript:  省
       略可能) を順に並べたものです。前置部分はブレース内にある文字列それぞれの先頭部分に追加され、後置部分
       は左から右に順に展開されて得られたそれぞれの文字列の末尾に追加されます。
 
       ブレースの展開は入れ子にできます。展開して得られた文字列はソートされず、左から右への順番がそのまま残
       ります。例えば a{d,c,b}e は `ade ace abe' と展開されます。
 
       ブレースの展開は他のどの展開よりも前に実行されます。また、他の展開において特殊な意味を持つ文字もその
       まま結果に残ります。つまり、厳密にテキスト操作だけを行います。 bash は、展開の文脈やブレースの間のテ
       キストに対して文法的な解釈を適用することは一切ありません。
 
       正 し い 形のブレース展開には、クォートされていない開きブレースと閉じブレース、また少なくとも 1 つの
       クォートされていないコンマが含まれていなければなりません。正しい形でないブレース展開は全て、変更され
       ないでそのまま残ります。 { や , をバックスラッシュでクォートすれば、ブレース展開の一部と解釈されない
       ようにできます。パラメータ展開との衝突を避けるため、文字列 ${ はブレース展開の対象とは解釈され ま せ
       ん。
 
       こ の 仕組みは、生成される文字列の共通先頭部分が上記の例より長い場合に、短縮表現としてよく使用されま
       す:
 
              mkdir /usr/local/src/bash/{old,new,dist,bugs}
       あるいは
              chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
 
       ブレース展開の導入によって、伝統的な sh とは少し非互換になった部分があります。 sh は単語の一部として
       開きブレースや閉じブレースが現われても特別扱いはせず、そのまま出力に残します。 bash はブレース展開の
       結果として単語からブレースを取り除きます。例えば sh に file{1,2} のように入力された単語はそのまま の
       形 で 出力されますが、 bash ではこの同じ単語は展開されて file1 file2 のように出力されます。厳密に sh
       と互換にしたければ、 bash を +B オプションを付けて起動するか、 set コマンドに +B オプションを与え て
       ブレース展開を無効にしてください (後述する シェル組み込みコマンドを参照)。

_ kmhrがmanを引用してたけど、僕は英語に弱いので、Vineのjman bashから引用。(苦笑) tcshのmanには記述が見当たらなかったけど、同様にブレース展開してくれるようだ。


2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|
総アクセス / 今日 / 昨日 このページのテーマ: