{}のようなreplstrは何ですか?

{}のようなreplstrは何ですか?

このフラグによって取られた「replstr」への言及はドキュメントにxargsあります。-I私は次のコマンドを実行したいと思ったときにそれを読み始めましたfswatch

fswatch -0 -e ".*" -i ".rb" . | xargs -0 -n 1 -I {} ruby {}

そしてマニュアルページを読み始めるxargs

-I replstr
        Execute utility for each input line, replacing one or more occurrences of replstr in up to replacements (or 5 if no -R flag is
        specified) arguments to utility with the entire line of input.  The resulting arguments, after replacement is done, will not be
        allowed to grow beyond 255 bytes; this is implemented by concatenating as much of the argument containing replstr as possible, to
        the constructed arguments to utility, up to 255 bytes.  The 255 byte limit does not apply to arguments to utility which do not
        contain replstr, and furthermore, no replacement will be done on utility itself.  Implies -x. 

考えると、「replstr」という用語は「印刷ループ文字列の評価を読む」を意味するようです。これはその略語ですか?私はそれで遊び始め、{}何が起こっているのか理解しようとしましたが、私が本当に理解しているかどうかはわかりません。

➜  scripts git:(master) ✗  {0..3}
zsh: command not found: 0..3
➜  scripts git:(master) ✗ echo {0..3}
0 1 2 3
➜  scripts git:(master) ✗ echo {a..3}
a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3
➜  scripts git:(master) ✗ echo {a..d}
a b c d
➜  scripts git:(master) ✗ echo cats and dogs | xargs
cats and dogs
➜  scripts git:(master) ✗ echo cats and dogs | xargs {}
xargs: {}: No such file or directory
➜  scripts git:(master) ✗ echo cats and dogs | xargs {} echo {}
xargs: {}: No such file or directory
➜  scripts git:(master) ✗ echo cats and dogs | xargs -I {}

➜  scripts git:(master) ✗ echo cats and dogs | xargs -I {} echo {}
cats and dogs

例えば、echo {a..3}それは私にとって本当に理解されていません。 「ここでこの文字列リストを置き換える」ことを行うようですが、これが正しい視点であるかどうかはわかりません。また、{}replstrが特定のタイプであるか、より多くのタイプがあるか、replstrが中括弧ペアの間にあるかどうかはわかりません。 replstrのガイドラインとそれを処理する方法を知りたいです。

ベストアンサー1

replstr「文字列の置換」または「文字列の置換」を意味します。

もともとreplstrは、見つかった各ファイル名に置き換えられるコマンド句として{}最初に導入されました。findexec

find /tmp -name "foo*" -exec echo file {} found \;

両方のファイルがパターンと一致すると仮定すると、次のように表示されます。

file foo1 found
file foo2 found 

このxargsコマンドを使用すると、標準入力に渡された文字列から作成された引数で同じ操作を実行でき、代替文字列とは{}異なるものを指定できます。

デフォルトのreplstrには中{}括弧内には何もありません。後者はすでに知っているように、範囲やパラメータの拡張などの他の目的に使用されます。

おすすめ記事