ブレース拡張は、スクリプトとエイリアスおよびLinuxコマンドラインで使用できる文字列のリストを生成するための便利な手法です。時間を節約し、それを入力して間違いを避けます。
ブレース拡大
バッシュシェルの前に コマンドを実行します ターミナルウィンドウまたはスクリプト内の行では、コマンド上の置換を実行する必要があるかどうかを確認します。変数名はそれらの値に置き換えられ、エイリアスはそれらが短縮されているコマンドに置き換えられ、任意の拡張が実行されます。ブレースの拡張は、BASHによってサポートされている拡張の一種です。
ブレースの拡張はモダンなシェルで入手可能ですが、古いシェルから欠けている可能性があります。スクリプトでブレース拡張を使用する場合は、BASHなどのブレース拡張をサポートするシェルを必ず起動してください。
私たちの例ではBashを使っています。
文字列のリストを生成することは、利益よりも目新しさのように見えるかもしれませんが、時間とキーストロークを節約できる機能をいくつか提供します。多くの場合、それは問題や要件のシンプルでエレガントな解決策を提供することができます。
単純な拡張
ブレース拡張は、ブレース "{}"の間に含まれています。カンマ区切り項目または範囲指定子のリストにすることができます。引用符で文字列を折り返していない限り、スペースはブレース内では許可されていません。
"
。」
コンマ区切りリストの場合、拡張プロセスは各要素を順番に実行し、それを呼び出し側コマンドに渡します。この例では、
エコー
それだけです
ターミナルウィンドウでそれらを印刷します
。コンマは無視されることに注意してください。
エコー{1,2,3,4}
リストは単語または数字です。
エコー{1,2,3,4}
リスト要素の順序は完全に任意です。
エコー(4,2,3,1)
拡張範囲は2つの期間に接続された開始と終了文字があります。
..
「空白なしではありません。欠落しているリスト要素はすべて拡張によって自動的に提供され、開始文字から終了文字までの範囲全体が作成されます。
これにより、1から10までの数字が表示されます。
エコー{1..10}
番号付けは任意です。 1つで始める必要はありません。
エコー{3..12}
範囲は後ろに実行されるように指定できます。これにより、5から1までのリストが生成されます。
エコー{5..1}
範囲は負の数を含めることができます。
エコー{4 ..- 4}
以前に指摘したように、範囲は開始と終了を持っています キャラクター 。数字である必要はありません。それは手紙になることができます。
エコー{Q..V}
文字も後退することがあります。
エコー{F..A}
ループでブレース展開を使用する
スクリプト内のループ内の範囲でブレース拡張を使用できます。
{3..7}
NS
エコー$ I.
ブレース拡張範囲を使用すると、文字変数として文字を使用できます。
{m..q}の私のために
NS
エコー$ I.
ループは通常スクリプトで使用されますが、何が起こるのかを確認するためにそれらをコマンドラインに入力するのを阻止するものは何もありません。
{3..7}のiのための私のために。 $ i;
{m..q_}の場合。 $ i;
連結とネスティング
隣接する2つの拡張は、他の後に独立して動作しません。彼らは相互運用します。最初の拡張の各要素は、2回目の拡張の各要素によって作用されます。
エコー{Q..V} {1..3}
拡張もネストすることができます。ネストされた拡張はその直前の要素に作用します。
【62】エコー{第1部{第2部{a、b、c、d}、第3部}
範囲拡張のカンマ区切りリストを作成することで、拡張をネストすることもできます。
エコー{5..0}、{1..5}}
プリアンブルとポストスクリプト
ブレースの拡張の前後のテキストを拡張の結果に含まれるようにすることができます。拡張の前に置かれたテキストはプリアンブルと呼ばれ、ブレース拡張の背後に置かれたテキストはPostScriptと呼ばれます。
このコマンドはプリアンブルを使用します。
エコー章{1..3}
この例では、PostScriptを使用しています。
ECHO {内容、紙、二重系統} .md
そしてこのコマンドは両方を使用します。
エコー章{1..4} .md
ファイル名とディレクトリの拡張
今までに推測できるように、ブレース展開の主な用途の1つは、他のコマンドに渡すことができるファイルとディレクトリ名を作成することです。私たちは使用しています
エコー
拡張がトリガーされたときに何が起こるのかを正確に見るための便利な方法として。ファイル名またはディレクトリ名を入力し、それを使用してブレースの拡張を使用する任意のコマンドを置き換えることができます。
早く
いくつかのファイルを作成します
、 使用する
接する
:
THICE FILE - {1..4} .txt
ls * .txt
同じ基本名でファイル拡張子が異なるファイルが多い場合、サブセットのサブセットで操作を実行したい場合は、ブレースの拡張が役立ちます。ここでは、「プログラム」をベース名として "source-code.zipというzipファイルに含めるファイルのサブセットを圧縮しています。
開発ディレクトリには、メインプログラムと同じベース名があるファイルがたくさんあります。通常、 ".o"オブジェクトファイルのようなファイルをバックアップまたは配布したくありません。これは、関心のあるファイルの種類のみを含めるためのきちんとした方法です。
ZIPソースコードプログラム{.ch、.h、.css}
このコマンドはファイルのコピーを作成し、 ".bak"を追加し、元のファイルのバックアップコピーを作成します。注目に値する点は、ブレース拡張にコンマ区切りリストが含まれているが、最初の要素は空です。私たちがコンマを含めなかったならば、拡大は行われなかったでしょう。
CPブレース/新/ PROG-1.C {、BAK}
LSブレース/ニュー/ PROG-1.C.BAK
異なるディレクトリ内の2つのファイルで何らかの操作を実行するには、ファイルへのパスにブレース展開を使用できます。
この例では、 "brace"ディレクトリには2つのサブディレクトリが含まれています。それらには、同じセットのソースコードファイルの異なるバージョンが含まれています。私たちはそれを使います
diff diff
2つのバージョンの "PROG-1.C"の違いを見るためのプログラム。
diff brace / {new、old} /prog-1.c
プロジェクトの開始時に作成する必要があるディレクトリの標準のスケルトンがある場合は、ブレースの拡張を使用して迅速に作成できます。 NS
m m
-NS
(親)オプション
欠けている親ディレクトリを作成します
子ディレクトリが作成されたとき。
MKDIR -P {ソース、ビルド、男、ヘルプ{/ページ、/ Yelp、/ Images}
木
ブレースの拡張を使うことができます
濡れる
に
複数のファイルをダウンロードしてください
。
このコマンドでは、「TEST1」と「TEST2」と呼ばれる2つのディレクトリからファイルをダウンロードします。各ディレクトリは "Picture1"と "Picture2"という2つのファイルを保持しています。
hettps://www.url-of-your-choice.com/test{ 2002} }/picture {35]
ファイルのリストには、取得されたファイルと方法が表示されます。
濡れる
既存のファイルとの衝突を避けるためにファイルの名前を変更します。
LS写真*。*
ブレースを受け入れる
ブレースの拡張はもう1つであるようです
Linuxのベスト秘密の秘密
。多くの人々は、彼らがブレースの拡大を聞いたことがないことを私に言っていますが、他の人は私に彼らの好きなコマンドラインのトリックの一つであることを私に知らせます。
試してみてください。