GoGPT Best VPN GoSearch

OnWorksファビコン

makepp_builtins - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して、OnWorks の無料ホスティング プロバイダーで makepp_builtins を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド makepp_builtins です。

プログラム:

NAME


makepp_builtins -- makepp の組み込みコマンド

DESCRIPTION


A: awk, C: &猫、
chgrp,
&chmod,
chown,
&cp,
cpp,
&切る、 D: date, E: &エコー、
&expr, F: false,
FMT, G: &grep、 H: , I: &インストール、 L: &ln, M: m4,
&mkdir,
&mv, P: &パール、
&前処理、
&printf, R: &rm,
rmdir, S: &sed、
&選別、 T: tail,
&テンプレート、
&接する、
tr, U: &アンインストール、
&uniq, Y: &はい

ルールで組み込みコマンドを呼び出す特別なシェルのような可能性があります。 唯一の
認識されるメタ文字は、コメント記号、バックスラッシュ、一重および二重引用符です。 それだけ
XNUMX 行に XNUMX つのコマンドを指定でき、I/O リダイレクションは使用できません (「-i」および「-o」を参照)。
代わりに以下)。

これらのコマンドは「&」で始まります。これは Perl の機能文字であり、有効な文字ではありません。
シェルの最初の文字。 その名前の組み込みコマンドが見つからない場合、これも
ルールを実行する Perl インスタンス内で外部スクリプトを呼び出すための構文。
「実行」を参照してください。

これらのコマンドは、独自に定義したコマンドや Perl スクリプトと同様に、
make 関数で、標準出力を返します。 これには、PerlIO 用に構築された perl が必要です。
「define」ステートメント内で評価される場合を除いて、改行はスペースに変換されます。

最初の単語 ;= $(&cut -d' ' -f0 $(FILES))

これらのコマンドがルール アクションとしてインデントされていない場合、これらのコマンドは、ルールの読み取り中に実行されます。
メイクファイル。 いくつかの機能が必要な場合など、これらのコマンドにスタンドアロンでアクセスすることもできます
makeppbuiltin コマンドを介して、対応する Unix では使用できません。

これらのコマンドは、ほとんどが GNU バリアントに基づいています。 ただし、多くのオプション (--backup、
--interactive または --recursive) は、メイクファイルでは意味がありません。 だからといっても
それらは Perl で簡単に実装できますが、省略されています。 また、多くの Unix コマンド
かなり複雑なケースをカバーするさまざまなオプションを提供します (例: フィールドの並べ替え)
仕様) でありながら、本質的に制限されています。 Perl へのアクセスを許可します。
とにかく存在し、ここでより多くの力を与えます。

ファイル名のリストは空でもかまいません。
リスト。 短い形式のオプションは、"-a -b" の代わりに "-ab" のように結合することができます。
長い形式の引数は、「=」記号でくっつけて、または個別に指定できます。
短い形式では、それらは直接または個別に接着されて提供されます。

スタンダード オプション
いくつかのビルトインに共通のオプションがいくつかありますが、短い形式は時々
コマンド独自のオプション (「&cut -f」など):

-A ファイル名
--args-file=ファイル名
--引数ファイル=ファイル名
ファイルを読み取り、引用符で囲まれた空白や改行で区切られている可能性があるものとして解析します。
オプション。

-f
- 力
異なる種類のファイルであっても、パラメータによって意図されたファイルの作成を強制します
その名前のファイルまたは空のディレクトリが既に存在します。 これは、"-o,
--output=filename" オプションに影響を与える場合。

-i シェルコマンド
--inpipe=シェルコマンド
シェル コマンドを開始し、出力をビルトインにパイプします。 オプションである場合があります
末尾の「|」にする文字、これがパイプであることを示します。 このオプションでは
ファイル名を指定する必要があります。 しかし、両方のファイルでビルトインを実行したい場合は、
パイプ出力の場合、パイプ出力のファイル名として「-」を使用する必要があります。 パイプは
空ですが、「--infail」も指定しない限り、コマンドは待機されないため、
並行して終了できます。 リダイレクトがないため、このオプションは必須です
構文。

-I
--失敗する
「--inpipe」シェル コマンドが失敗すると、現在のビルトインも失敗します。
これは現在、Strawberry および Win ActiveState では機能しません。
Unix の fork/exec をエミュレートする中途半端な方法です。 ただし、Cygwinはそれを正しく理解しています。

-o ファイル名
--output =ファイル名
標準出力ではなく、このファイルに出力を書き込みます。 ファイル名はこれらのいずれかを持つことができます
フォーム:

ファイル名
>ファイル名
ファイルに書き込むだけです。

>>ファイル名
(必ずしも必要ではありません) 既存のファイルに追加します。

+<ファイル名
また、入力用にファイルを開き、その場で編集できるようにします。 このオプションバリアントで
入力ファイル名を指定する必要はありません。 しかし、組み込みを実行したい場合
複数のファイルを作成するには、このファイルの入力ファイル名として「-」を使用する必要があります。 実際には
出力は一時ファイルに書き込まれ、最後に filename に移動されます。

|シェルコマンド
ビルトインの出力をシェル コマンドにパイプします。

リダイレクト構文がないため、このオプションが必要です。

-O
--失敗
「--output」シェル コマンドが失敗すると、現在のビルトインも失敗します。

-r
--レコードサイズ=
現在のビルトインの $/ をローカルに設定します。 これにより、入力が長さのレコードに分割されます
行ごとではなく。 もしも ゼロ、各入力ファイル全体が XNUMX
記録。

-s string
--separator =string
現在のビルトインの $/ をローカルに設定します。 これにより、入力が分割されます string ラインではなく
行ごと。

-S
-- 同期線
「#line」を生成"いいえ"" """ファイル"""" と "#line ""いいえ" 行、多くの C ライクによって理解される
言語

-v
-詳細
ファイル システムへの変更を文書化します。 必要な場合は、これを他のオプションよりも前に指定する必要があります
それらの効果を文書化します。 このオプションを makepp 自体に渡すと、
組み込みコマンドごとに指定します。

ビルトイン コマンド
makepp に組み込みコマンドを含める理由は XNUMX つあります。 最初に提供するのは、
シェルコマンドとは異なり、同じように動作することが保証されている一連のユーティリティ
"&echo -n" や "&mkdir -p" のように、どこでも、パスを見つける手間を省きます。
&install して、多種多様なオプションを見つけ出します。 コンパイル環境では、
通常は「m4」のみが提供する「--synclines」オプションをすべての
フィルタ

もうXNUMXつは効率の問題です。 一般に、コストのかかる fork/exec は避けるべきです
合理的に可能な場合。 Cygwin や BS2000/Posix などの Unix エミュレーションでは、これは
注目の勝利。 しかし、Linux でも、makepp テスト スイートが
外部コマンドをビルトインに追加すると、ユーザーの CPU 使用率が全体で 3%、15% 節約されました。
システムの CPU 使用率。 (もちろん、テストはプリミティブなアクションに重きを置いており、ほとんど呼び出しません。
コンパイラ。)

一貫性も問題ですが、Unix を改革するつもりはありません。 通常コマンド
正規表現にはさまざまなニュアンスがあります。 そして、多くの人がある種の言語を発明し、それぞれ
もちろん、何かを行うため (例: "expr"、"sed" ...)、または複雑なオプション
フィールド、区切り文字、列を指定します (例: "cut"、"sort" ...)。

ここでは代わりに、空想的なものはすべて Perl によって処理され、両方の一貫性が保たれます。
すべてのコマンド、および一連のオプションよりもはるかに強力です。 さらに良いことに、任意の パールコード
これらのコマンドは自動的に実行され、Makefile のパッケージで実行されます。 だから、むしろ
Perlコードをルールアクションに詰め込むと、関数と変数を定義して使用できます
コマンド内:

サブ my_filter {
# $_ が望ましい場合は true を返す
}
%.out: %.in Makeppfile
&grep &my_filter $(入力) -o $(出力)

コマンドで Perl 関数または変数を使用する場合、makepp はこれを認識しません。
依存関係。 一般に、makepp にすべてを伝える方が安全です。そのため、Perl を使用するルール
に示すように、要素は、それらの要素を提供するメイクファイルまたはモジュールに依存する必要があります。
上記の例。

一方、プログラマティックを混在させるプログラムがある場合は、無知が望ましい場合があります。
および構成の側面を XNUMX つのファイルにまとめます。 例は、両方を含む WSDL ファイルです。
Web サービス インターフェイスの定義と IP アドレス。 このファイルを前処理することができます
&template コマンドを使用して構成にパッチを適用しますが、makepp に通知させません。

&猫 [オプション ...] ファイル名 ...
すべてのファイルを XNUMX つに連結します。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=ファイル名, -O, --outfail, -S,
--synclines、-v、--verbose"

&chmod [オプション ...] モード ファイル名 ...
セット モード 指定されたすべてのファイルに対して。 モードは XNUMX 進文字列でなければなりません。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -v, --verbose"

&cp [オプション ...] ソースファイル デストファイル
&cp [オプション ...] ソースファイル
&cp [オプション ...] ソースファイル ... 宛先ディレクトリ
コピー ソースファイル 〜へ デストファイル、 1 ソースファイル 現在のディレクトリまたは複数へ
ソースファイルsまで 宛先ディレクトリ 同じ名前で。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -v,
--冗長"

-l
- リンク
ファイルをリンクしてみてください。 それが失敗した場合は、シンボリック リンクを試してください。
それ以外の場合はコピーします。

-s
- シンボリック
--シンボリックリンク
-シンボリックリンク
ファイルのシンボリック リンクを試みます。 それが失敗した場合は、コピーします。

&ln の下の注を参照してください。

&切る [オプション ...] ファイル名 ...
各ファイルまたは選択された行から行の選択された部分を印刷します。
ファイル。 出力は区切り文字で区切られ、フィールドのデフォルトは TAB であり、
文字の空の文字列。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=ファイル名, -O, --outfail, -r,
--record-size=number, --separator=string, -S, --synclines, -v, --verbose"

-c リスト
--文字列=リスト
で指定されたすべての文字を出力します リスト. リスト 任意の Perl 式
整数のリストを返します。 整数は、正の値のいずれかです。
最初からカウントする場合はゼロ、最後からカウントする場合は負です。 Unix とは異なり
「カット」、あなたが要求する順序は尊重されます。

".." 範囲が正または
&cut を使用すると、ポジティブで始まりネガティブで終わることができます。 しかし
これは、式が数字、コンマ、およびのみで構成される場合にのみ使用できます。
「..」。 たとえば、「1..-2」は、最初 (0) と最後 (-1) 以外のすべてを意味します。

リスト式は $_ で行全体を見ることができます。 それへの変更は
ただし、この式が評価されるとき、行はすでに
Perl の autosplit 変数 @::F に分割されました。 あなたが返す数字は実際には
そのリストへのインデックス。

-d string
--区切り文字=string
入力フィールドと出力に新しい区切り文字を設定します。 Unix の「カット」とは異なり、これには
任意の長さ。

-E
- 逃げ場はありません
「-p, --printf=format」の場合、「\」を通常のリテラルとして扱います。

-f リスト
--フィールド=リスト
で指定されたすべてのグループを出力します リスト. リスト 「-c」で説明されているとおりです。
--characters=list". これにより、標準オプション "-f" が非表示になることに注意してください。
「--force」として与えられます。

-l リスト
--lines =リスト
で指定されたすべての行を印刷します リスト. リスト 「-c」で説明されているとおりです。
--characters=list" には大きな違いが 1 つあります。最初の行の番号は XNUMX です。
これは行 0 ではありません。
すべてをメモリに読み込むため、リスト内の正から負の範囲。
それ以外の場合、Perl はこれを最適化できますが、そうするかどうかはわかりません。

-m
- マッチング
一致する行、つまり十分な数の文字またはフィールドを含む行のみを出力します。 これ
「--only-delimited」を意味します。これが、単一フィールド行を見逃す理由です
「--フィールド = 0」。

-p 形式でアーカイブしたプロジェクトを保存します.
--printf=形式でアーカイブしたプロジェクトを保存します.
すべてのフィールドまたは文字にフォーマット (\ エスケープを使用) を適用します。

-s
--のみ区切り
区切り文字を含む行のみを印刷します。

&cut -c 10-20,-5,25- $(入力)
&cut -c 'grep $$_ % 3, 0..99' $(input) # 最初の 1 列は 100 の倍数ではありません
&cut -d: --fields 0,4 --printf='%10s は %s\n' /etc/passwd

&エコー [オプション ...] string ...
&printf [オプション ...] 形式でアーカイブしたプロジェクトを保存します. 引数 ...
&はい [オプション ...] string ...
すべての文字列を stdout または指定された出力ファイルに書き込みます。 &echo と &yes の両方が改行を追加します
最後に。 文字列、または &printf 形式の場合、"\" エスケープが含まれる場合があります。
C または最新の Unix またはシェルの「エコー」で知られています。 ただし、それらは Perl の double-
これは、単一の末尾の「\」が許可されていないなど、いくつかの違いを意味します。
Perl にはさらに興味深いエスケープがいくつかありますが、何かを行うと思われるエスケープは次のとおりです。
違いは次のとおりです。

\cA は制御文字 ^A です。

\u 次の文字を大文字にします。

\U 残りを大文字にするか、見つかった場合は次の "\E" または "\L" まで大文字にします。

\xHH、 \バツ{はぁ}
指定された XNUMX 進コードの文字値です。 数値コードではないことに注意してください。
EBCDIC プラットフォームに移植可能!

Unix の "yes" とは異なり、&yes は &echo とまったく同じですが、出力を繰り返す点が異なります。
可能な限り、通常は "--output '| 指図'" 終了します。 はいの場合
引数はありません。デフォルトは "y" です。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -o,
--output=ファイル名、-O、--outfail、-v、-verbose"

-E
- 逃げ場はありません
「\」を通常のリテラルとして扱います。

-n
--no改行
最後の文字列の後に改行を追加しないでください。 (&printf では認識されません。)

&expr [オプション ...] パーコード ...
perlcode のスカラー値を出力します。これは、XNUMX つまたは複数の引数として記述できます。
組み込みコマンドはシェルによって解析されないことに注意してください。したがって、"*"、"("、または ">" は解析されません。
特別な。 ただし、文字列の引用符は makepp によって解析されるため、Perl の文字列は引用符で囲む必要があります
ベアワードを使用したい場合を除いて、XNUMX 回。 値が false の場合、これは失敗します。 ノート
つまり -- Unix の "expr" とは異なり -- Perl の index 関数は 0 (false) から始まり、
失敗の場合は -1 (真)。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -o,
--output=ファイル名、-O、--outfail、-v、-verbose"

-n
--no改行
出力の後に改行を追加しないでください。

&expr ($(VAR) - 3) * 2 < 1 && -1 || 1
&expr "$(VAR) - 3 * 2 < 1 ? '喜び' : '悲しみ'" -o $(出力)
-&expr $(VAR) - 3 * 2 -o >>$(出力)

&grep [オプション ...] パーコード ファイル名 ...
&Perl [オプション ...] パーコード ファイル名 ...
&sed [オプション ...] パーコード ファイル名 ...
すべてのファイルが XNUMX 行ずつ読み取られます (「--separator」オプションを指定しない限り)。
パーコード 印刷される前に、行ごとに評価されます。 &sed は似ています
"perl -pe"、&grep は以下の行のみを出力します。 パーコード true を返します
価値。 &perl は "perl -ne" に似ており、明示的に印刷したものだけを出力します
会場は パーコード. 行の内容は $_ で入手でき、変更することができます。

これら XNUMX つのうち、何も出力しない場合に失敗するのは &grep だけです。 ないことに注意してください
"/正規表現/i".

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=ファイル名, -O, --outfail, -r,
--record-size=number, -s, --separator=string, -S, --synclines, --verbose"

オプション "--synclines" は、&Mpp::Cmds::print を使用して &perl を使用する場合にのみ意味があります。
$_ を出力します。 &grep だけに追加のオプションがあります:

-c
- カウント
通常の出力を抑制します。 代わりに、一致する行の数を出力します。 「-v、
--invert-match" オプション (以下を参照)、一致しない行をカウントします。

-l
- リスト
--一致するファイル
一致するファイルの名前のみを出力します。 これを「-v」と組み合わせると、
--invert-match"、行が一致しないファイルの名前を出力します (少し
ばかげていますが、Unix -vl と互換性があります)。 これをダブルと組み合わせると
「-vv」、一致しないファイルの名前を出力します。

-v
- 逆に
--元に戻す一致
--反転マッチ
一致の意味を反転して、一致しない行を選択します。 これは非表示になることに注意してください
「--verbose」として指定する必要がある標準オプション「-v」。

-w ファイル名
--廃棄ファイル=ファイル名
拒否された行を収集するためのオプションの廃棄物バスケット。 これだけではありません
選択コードのデバッグだけでなく、入力を XNUMX つに分割することもできます。 と同様に
通常の出力では、false を返す前に $_ を変更できます。

&sed s/foo/bar/ f1 f2 f3 -o outfile # 同様に sed s/foo/bar/ f1 f2 f3 >outfile
&sed '$$_ = uc' f1 f2 f3 -o outfile # like tr '[:lower:]' '[:upper:]' f1 f2 f3
&grep '$$. % 3' f1 f2 f3 -o outfile # 3 行ごとに削除
&grep -c /match/i f1 f2 f3 # 'match' に一致する行を STDOUT にカウント

大量のアクセサーを生成するように強制することなく、単純にそれを行う方法を次に示します。
各タイプと目的の変数名の間に RO または RW のコメントを入れます。
ライン。 生成された getter メソッドとオプションの setter メソッドは、次に見つかったメソッドに入ります。
公開または保護されたセクション:

# "type /* R[OW] */ member;" から get メソッドと多分 set メソッドを作成します。
サブ cxx_accessors {
$acc ||= ''; # 5.10.0 状態の候補
if( m!^\s*(.+?)\s*/\*\s*R([OW])\s*\*/\s*(.+?)\s*;! ) {
$acc .= "#line $.\n"; # これがどこから来たかを C++ に伝える
$acc .= "void set\u$3( const $1 &__tmp ) { $3 = __tmp; }"
if $2 eq 'W';
$acc .= "const $1 &get\u$3() const { return $3; }\n";
} elsif( /^\s*(?:public|protected)\s*:/ ) {
$_ .= $acc;
$acc = '';
}
}

%.cc: %.cc.in # I/O 処理に &sed を使用
&sed --sync-lines &cxx_accessors $(入力) -o $(出力)

&インストール [オプション ...] ソースファイル デストファイル
&インストール [オプション ...] ソースファイル ... 宛先ディレクトリ
&install --ディレクトリ [オプション ...] ディレクトリにジョブを開始します。 ...
移動または名前変更 ソースファイル 〜へ デストファイル、または複数 ソースファイルsまで 宛先ディレクトリ
同じ名前。 これは、ビルド結果を最終版に転送するための推奨される方法です
設置場所。

&install によって実行されるすべてのファイル システムの変更は、ファイルの最後に記録されます。
環境変数 $INSTALL_LOG が指すファイル、またはそれが設定されていない場合
私たちはディレクトリの下にいます RootMakeppfile(.mk)、のファイルに .install_log その中で
ディレクトリ、または現在のディレクトリ内のそのファイルに。 あなたは削除したいかもしれません
一連の &install 呼び出しの前のログファイル。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -v, --verbose"

-c
- コピー
ファイルを移動するのではなく、コピーします。 強制しないので、これが望ましいです。
次回ファイルを再構築するためのmakepp。 しかし、これはデフォルトではありません。
他のインストール プログラムとの互換性。

-d
- ディレクトリ
このコマンドの XNUMX 番目の形式では、指定されたすべてのディレクトリと任意のディレクトリを作成します。
必要な親ディレクトリ。

-g グループヘッド
--group =グループヘッド
宛先ファイルのグループ所有権を変更します。 グループは、
名前または数値。

-l
- リンク
ファイルをリンクしてみてください。 それが失敗した場合は、コピーします。

--log =ファイル名
--logfile =ファイル名
  ファイル名 通常のログファイルの代わりに。

-m モード
--mode =モード
セット モード すべての宛先ファイルまたはディレクトリ。 モードは XNUMX 進文字列でなければなりません。

-o 所有者
--owner =所有者
宛先ファイルの所有権を変更します。 所有者は名前または
数値的に。

-r
- 解決
--解決-シンボリック
--resolve-symbolic-link
--resolve-symlink
-S
- シンボリック
--シンボリックリンク
-シンボリックリンク
移動する代わりにシンボリック リンクを作成します。 これらのオプションは &ln に渡され、
そこに記載されています。

-s
- ストリップ
宛先ファイルで、$PATH にある必要がある「strip」ユーティリティを呼び出します。

&ln [オプション ...] ソースファイル デストファイル
&ln [オプション ...] ソースファイル
&ln [オプション ...] ソースファイル ... 宛先ディレクトリ
リンク ソースファイル 〜へ デストファイル、 1 ソースファイル 現在のディレクトリまたは複数へ
ソースファイルsまで 宛先ディレクトリ 同じ名前で。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -v,
--冗長"

-r
- 解決
--解決-シンボリック
--resolve-symbolic-link
--resolve-symlink
これは、常に「ln -s」で実行したかったことです。 ハードではなくシンボリックに作成する
指定された文字列ではなく、実際には指定されたファイルにリンクします。

-s
- シンボリック
--シンボリックリンク
-シンボリックリンク
ハード リンクではなくシンボリック リンクを作成します。

注意: さまざまなファイルまたはオペレーティング システムでは、この操作はサポートされていません。 またはそれ
たとえば、Cygwin では使用できますが、ネイティブの Windows コンパイラを使用する場合、それは理解されません。
変更できないメイクファイルの場合、少なくとも何らかの結果を得るには、 &ln および "&cp -l
-s" は、代わりにファイルをコピーできます (ただし、ディレクトリではありません)。これを実現するには、
makepp を呼び出す前に、次の変数をエクスポートする必要があります。

エクスポート MAKEPP_LN_CP=1
&ln --resolve または --symbolic は、シンボリックを作成する代わりにファイルをコピーします
リンクをクリックします。

エクスポート MAKEPP_LN_CP=2
&ln は、ハード リンクを作成する代わりにファイルをコピーします。

エクスポート MAKEPP_LN_CP=3
&ln のすべての呼び出しは、いずれかの種類のファイルを作成する代わりに、ファイルをコピーします。
リンクをクリックします。

&mkdir [オプション ...] ディレクトリにジョブを開始します。 ...
ディレクトリを作成します。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -v,
--冗長"

-m モード
--mode =モード
セット モード umask に関係なく、作成されたすべてのディレクトリに対して。 モードは
XNUMX 進文字列。

-p
- 親
必要な親ディレクトリも作成します。 ディレクトリ作成の失敗を無視
ディレクトリがすでに存在するため (ディレクトリが同時に作成された場合でも)
別のプロセス)。

&mv [オプション ...] ソースファイル デストファイル
&mv [オプション ...] ソースファイル
&mv [オプション ...] ソースファイル ... 宛先ディレクトリ
移動または名前変更 ソースファイル 〜へ デストファイル、 1 ソースファイル 現在のディレクトリまたは複数へ
ソースファイルsまで 宛先ディレクトリ 同じ名前で。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -v,
--冗長"

&前処理 [オプション ...] 変数=定義 ... ファイル名 ...
これは、makepp が makefile に対して行うのとまったく同じ方法でファイルを前処理します。 これは
&template よりも強力ですが、多くのテンプレートを含むファイルには構文的に適していません。
Makefile やスクリプトなどの「$」記号。

条件ステートメント、およびステートメント「include」/「_include」(ここでは
ファイルのビルドも検索も行わない)、"perl"/"makeperl"/"perl_begin" または
「sub」/「makesub」、またはファイル内で定義したステートメントが処理されます。 空の
コメント行は削除されます。

ただし、ビルドルールを学習する代わりに、残りのすべての行を後で出力します
「$(...)」式展開。 発言がそのように認識されないようにするために、
それらの前に空の式「$()」を付けることができます。 同じことがあなたのラインにも当てはまります
空のままにしたい、または先頭のコメント記号を保持する必要があります。 同様に、
末尾のバックスラッシュは次の行と結合するのではなく、"$()" をその後に置きます。

通常の行はそのまま出力されます。
$(MAKEEXPRESSIONS) のある行が展開されて出力されます。
ifdef WANTTHIS # 定義されているかどうかに関係なく出力を取得しません
出力されない可能性があります
ENDIF
いくつかのファイルを含める
_include 存在しない可能性のあるいくつかのファイル # または -include
$() 空の式を含めると、キーワードが認識されなくなります。
# コメント行と空行が飲み込まれます。

$()# 空の式でマスクされない限り。
$()
空の式は \$() を防ぎます
バックスラッシュの継続が認識されません。

与えるかもしれない:

通常の行はそのまま出力されます。
展開されて出力されるものを含む行。
ここのコンテンツにはたくさんの丸呑みがあります...
空の式を含めると、キーワードが認識されなくなります。
# 空の式でマスクされない限り。

空の式は \ を防ぎます
バックスラッシュの継続が認識されません。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -o,
--output=ファイル名、-O、--outfail、-S、--synclines、-v、--verbose"

-a
- 割り当て
ファイル内の代入も makepp と同じように扱います。 残念ながら、そのような行はできません
で変数名を作成することは合法であるため、空の "$()" でマスクされます。
式。 これは、ステートメント「define」をさらに認識します。
"export"/"unexport" および "override" (これらは "$()" でマスクできます)。

-h \\%ハッシュ
--hashref=\\%ハッシュ
これにより、変数値の事前割り当てが可能になります。これには、長いものも含まれます。
コマンドで渡されました。 渡される式は、
ハッシュ参照。 これは、コマンドに渡される他の変数とマージされます。
別の「--hashref」オプションから含めます。

&rm [オプション ...] ファイル名 ...
ディレクトリの書き込み権限がある場合は、ファイルを削除します。 これは Unix の "rm -f" が行うことです。
インタラクティブな使用には特別な保護があるため、削除する必要はありません。
Makefile。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -v, --verbose"

-f
- 力
これにより、存在しないファイルについて不平を言うのを防ぎます。 それはこれの副作用です
オプションは Unix にあり、ここで意味のある唯一のオプションです。

-m
--メタ情報
指定されたファイルに加えて、これによりメタ情報 makepp も削除されます
それらについては .makepp ディレクトリに保存されます。 したがって、makepp はこれまでに知っていたことをすべて忘れます。
与えられたファイルについて。 この後 .makepp ディレクトリが空になると、それも
削除されます。

これにより、指定されたディレクトリも削除されますが、空の場合のみです。 簡単にする
これにより、深さの降順にディレクトリが最後に削除されます。 だからあなたはできる
階層全体を削除するには、「**」式を使用します。 ここにある例があります
多くのトップ レベルの make ファイル。 これを行うことができる「makeppclean」ユーティリティがあることに注意してください
これはより効率的です。

$(偽のクリーンオールド):
&rm -fm $(古いもののみ **/*)

$(偽のクリーン): cleanold
&rm -f $(ワイルドカード **/*.[ao])

$(偽の distclean): クリーン
&rm -fm $(ターゲットのみ **/*)

&選別 [オプション ...] ファイル名 ...
すべてのファイルを辞書順で並べ替えます。 これはかなり大きなものには非効率的です
これは完全にメモリ内で行われるためです。 の合計サイズの場合、失敗します。
すべてのファイルが、資格のあるメモリを超えています。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=ファイル名, -O, --outfail,
--record-size=number, -s, --separator=string, -v, --verbose"

-c パーコード
--比較=パーコード
パーコード $a と $a に XNUMX つの並べ替え候補がある Perl 並べ替えブロックを表します
$b。

-n
-数値
--数値ソート
これは、レコードの先頭で数値的にソートします。 先頭の空白は
スキップしました。 数値が一致しない場合は、「--transform」と「--detransform」を使用できます。
始まり。

-r
- 逆行する
結果を逆順に出力します。 これにより、標準オプションが非表示になることに注意してください
「-r」は「--record-size」として指定する必要があります。

-t パーコード
--transform=パーコード
-d パーコード
--detransform=パーコード
複雑なコードがある場合、並べ替えは、
レコード数 n、コードが呼び出されるため O(n ログ(n)) 回。 避けるために
つまり、Perl をソートに集中させることができます。
複雑な検索条件の抽出がレコードごとに XNUMX 回行われるような文字列、
それらがソートされたら、それらを元に戻します。

これらのオプションが指定されている場合、「--transform」 パーコード レコードにマップされます
$_ で次々と、それらを変更することができます。 ソート後、「--detransform」
パーコード $_ の変更されたレコードに次々とマップされ、次のことができます
それらを元に戻します。 通常、これらのオプションのどちらも使用しないか、両方とも使用しません。
変更した行を出力したい。

文字列を抽出されたソート基準の構造に変換します。
" - 比較" パーコード 拾うことができることは、シュワルツ変換 (ST) として知られています。
「--compare」がないように、すべてを文字列自体に詰め込む パーコード is
高価なPerlを実行せずにソート全体を実行できるようにする必要があります
コードは、Guttmann-Rosler Transform (GRT) として知られています。 ヒントを見つけることができます
それらの名前をウェブで検索します。

# 数値式を値でソートする ($$ は $ を makepp 展開から保護する)
&sort --compare 'eval( $$a ) <=> eval( $$b )' $(入力) -o >>$(出力)

# 大文字と小文字を区別しないソートの ST
&sort -t '[lc, $$_]' -c '$$a->[0] cmp $$b->[0]' -d '$$_->[1]' $(input) - o >>$(出力)

# Makeppfile の他の場所で定義された変更関数を使用する GRT
&sort -t &transform -d &detransform $(入力) -o >>$(出力)

-u
--ユニーク
- 個性的
ソート後、重複を排除します。 これらは同一の行であるか、
「--compare」オプションが与えられたもので、 パーコード 同等として報告します。

&テンプレート [オプション ...] マクロ=定義 ... ファイル名 ...
これはマクロ プリプロセッサであり、C プリプロセッサまたは「m4」ほど強力ではありません。
より強力な代替手段については、&preprocess を参照してください。 automakeのマクロに触発されました
での交換 Makefile.am   Makefile.in. しかし、それはそれを超えています。 通常のテキスト
変わらず通ります。 特別な構造は、デフォルトで「@」で区切られます。 彼ら
「-r、--record-size」または「--separator」のいずれかを渡さない限り、XNUMX 行に収まる必要があります。

@# コメント @
スクリプト「#」行末コメント構文から借用しているにもかかわらず、これは
インラインコメント。

@MACRO@
この構造は、 MACRO. マクロ名は次で始まる必要があります
文字またはアンダースコアの後に任意の数の文字、アンダースコア、マイナスまたは
ドット。 makepp 名とは異なり、アンダースコアとマイナスは同等ではありません。

@MACRO(引数1、引数2...)@
最初のものと同様ですが、パラメータ化されています。 引数は $1 から $9 または
"${番号}" 値で。 または、値が Perl 関数の場合は、次のように渡されます。
通常のパラメータ。 結果は、構成全体を置き換えます。 XNUMX レベル
括弧内の引数にプレーンを含めることができるという点で、マクロのネストが可能です
「@f(@x@)@」のような「@MACRO@」呼び出し。「@x@」は展開される前に展開されます。
「f」の本体に置き換えられます。

@含む(ファイル名)@
これは、唯一の定義済みマクロです。 &template-processed に置き換えられます
指定されたファイルの内容。 すべてのマクロと同様に、これはマクロの途中で発生する可能性があります。
ライン。 残念ながら、そのため、「-S、--synclines」はファイルのインクルードを無視し、
すべてがインクルードファイルから来ているようです。

@MACRO=定義@
@MACRO?=定義@
これにより、ファイル内のマクロが定義されます。 これは何も置き換えられません。 二番目
フォームは、おそらくコマンドでマクロが定義されていない場合にのみ有効です
ライン。

@MACRO { パールコード }@
これは、本体が Perl サブルーチンであるマクロも定義します。 引数
@_として渡されます。

@{ パールコード }@
これは実行されます パールコード 戻り値に置き換えられます。

これまでのところ、特別なものを埋め込むための構文は XNUMX つしか見ていません。 他にもある
複数行の構文であり、どちらもバリエーションで改行を抑制することができます。 これらは、
組み込みの構文 (以下のオプションで構成できます)。 ここ 特殊 の略
上記の構成のいずれか:

@特殊@
@特殊@\
これは、行のどこにでも複数表示できます。 バリアントの直後に続く
「\」は行末でのみ機能します。 また、次の改行も置き換えます。

@@特殊@@ ノーマル 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. @@
@@特殊@@ ノーマル 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. @@\
これは前回と同様です。 ただし、通常のテキストも置き換えられますが、
複数の行にまたがることができます。 コメント行に特別なパーツを配置できます
アンインストールされたスクリプトでのみ必要なソース コード。削除するか、
インストールプロセス中に置き換えられます:

# @@# 次の 2 行が消える @@
echo このスクリプトのアンインストール バージョンを実行しています
#@@
# @@リプラセント@@
echo 何か他のものがここにあります
#@@

さまざまな可能性を示す無意味な例:

@m1=何らかの定義@\
@m2=foo $1 bar@\
@middle_of_arg=iddl@\
@m1@ @m2(m@middle_of_arg@e)@
@@m2(多くの行)@@
...
@@ 平文 1 + 2 = @{ 1 + 2 }@

になる

いくつかの定義 foo ミドルバー
foo 多くの行 バー プレーンテキスト 1 + 2 = 3

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=ファイル名, -O, --outfail, -r,
--record-size=number, --separator=string, -S, --synclines, -v, --verbose"

-d
--定義済み
実際に定義されているマクロのインスタンスのみを置き換えます。 このオプションがないと
未定義のものはすべて何も置き換えられません。

-h \\%ハッシュ
--hashref=\\%ハッシュ
これにより、マクロ値の事前割り当てが可能になります。
コマンドで渡されました。 渡される式は、
ハッシュ参照。 これは、コマンドに渡される他のマクロとマージされます。
別の「--hashref」オプションから含めます。 ハッシュ値はコードの場合もあります
その場合、"@macro { パールコード }@"
定義。

-s /プレフィックス/サフィックス/
--シンプル=/プレフィックス/サフィックス/
  接頭辞   サフィックス 前後 特殊 「@」の代わりにそれぞれ。 の
最初の文字は区切り文字であり、スラッシュである必要はありません。 これらの値は Perl
正規表現。 "(...)" のようなグループ化を導入してはいけませんが、"(?:...)" は問題ありません。

-m /プレフィックス/サフィックス/アフタープレフィックス/[アフターサフィックス/]
--複数行=/プレフィックス/サフィックス/アフタープレフィックス/[アフターサフィックス/]
  接頭辞, サフィックス   接頭辞の後 前後 特殊 そして最後に
「@@」の代わりにそれぞれブロックします。 もしも 接尾辞 マクロ名も与えられます
その前に繰り返さなければなりません。 最初の文字はセパレータであり、そうである必要はありません
スラッシュ。 たとえば、必要に応じて「--defined」を追加する必要がある XML っぽいもの
あなたによって定義されていない他のタグを保持します。

--defined --simple=|<|/>| --multiline=|<|>| | |

または、処理命令を使用することをお勧めします」 」、そのような目的のために意図されています:

--defined --simple='|<\?|\?>|'

または、これを「&entity;」と組み合わせたい場合単純なマクロの構文
置換 (コメントではない数値エンティティ "☺" を保持):

--defined --simple='_(?:&(?!#)|<\?)_(?:;|\?>)_'

&接する [オプション ...] ファイル名 ...
各ファイルの変更とアクセスのタイムスタンプを現在まで更新します。 ファイルの場合
存在しない場合は、作成されます。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -v, --verbose"

&アンインストール [オプション ...] [ファイル名 ...]
&install によって以前にインストールされたファイルをアンインストールします。 の ファイル名s は書き込まれたログファイルです
&インストールで。 何も指定されていない場合、または「--inpipe」オプションが指定されていない場合は、デフォルトのログファイルを読み取ります
&install.

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -i,
--inpipe=shellcommand, -I, --infail, -v, --verbose"

&ユニーク [オプション ...] ファイル名 ...
連続する等しい行の XNUMX つを除くすべてを破棄します。

"標準オプション": "-A, --args-file, --arguments-file=ファイル名, -f, --force, -i,
--inpipe=shellcommand, -I, --infail, -o, --output=ファイル名, -O, --outfail, -r,
--record-size=number, -s, --separator=string, -S, --synclines, -v, --verbose"

-c パーコード
--比較=パーコード
この パールコード $a と $b の前の行と現在の行を取得し、返す必要があります
XNUMX つの行が等しいと見なされる場合は true。

&uniq --compare='lc( $$a ) eq lc $$b' $(入力) -o $(出力)

エミュレーション可能 コマンド
さまざまなものが組み込まれていませんが、他のコマンドで実現できます。

awk &sed を使用します。

chgrp
chown
これらのコマンドはほとんど移植性がありません! 彼らは静かに何もしないか、失敗するかのどちらかです。
システムによります。 通常、これらの操作を実行できるのは root のみです。
&install コマンドでしか利用できない理由。

cpp &preprocess または &template を使用します。

date
これらのどちらも部分的に同じことを行います:

&expr 現地時間
&expr gmtime

false
引数なしまたは 0 で &expr を使用します。


tail
&grep または "&cut --lines" を使用しても同じ結果が得られます。

&grep 1..10 ファイル # 最初の XNUMX 行
&grep 10..eof file # XNUMX 行目以降のすべての行
&cut --lines -10..-1 file # 最後の XNUMX 行

&grep の 1..10 は Perl の行番号フリップフロップ演算子であることに注意してください。
1 から開始します。0 から開始しないでください。フリップフロップが true になることはありません。

fmt これは、Perl が関連する機能を提供しているため、ここで言及されています。 しかし、私は持っていました
makefile で「format」宣言を使用する際の問題。 働くのは
基礎となる「フォームライン」機能。 たとえば、名前と
表形式への価格:

サブ csv2txt {
formline "\@<<<<<<<<<<<<<<< ^###########.##\n", split ',';
$_ = $^A;
$^A = '';
}

%.txt: %.csv
&sed &csv2txt $(入力) -o $(出力)

m4 &preprocess または &template を使用します。

rmdir
&rm を使用します。

tr &sed を使用します。

onworks.net サービスを使用してオンラインで makepp_builtins を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad




×
Advertisement
❤️ここでショッピング、予約、購入してください。料金はかかりません。これにより、サービスが無料で維持されます。