改行を使用してファイルを見つけて隔離するPOSIX方式の正しい方法は何ですか?

改行を使用してファイルを見つけて隔離するPOSIX方式の正しい方法は何ですか?

質問がありますファイル名に改行を含むファイルを見つける方法は?、許可された回答は改行を使用してANSI-C引用符でファイルを分割することを処理し、ksh内部と外部でうまく機能しますbashが、POSIXシェルはこれをどのように処理しますか?具体的にdash

ベストアンサー1

コメントで議論し、私が引用した関連質問を見た後、改行を使用する1つの方法は、次のように-nameリテラル改行を使用することです。

$ find -type f -name '*
> *'

もう一つは、コマンドの置き換えによるものです。

$ find -name "$(printf '*\n*' )"
./with?newline
$ ls
another execve with?newline

しかし注目すべき点はPOSIXの定義, コマンド置換は、「... 一端から削除される 1 つ以上の文字シーケンス」を使用してシェルで実行されます。それは次のとおりです。

find -type f -name '*'"$(printf '\n')"'*'

思うように失敗し、**パラメータリストを代わりに渡します。*[newline]*

コマンド置換の後続改行は、以下のようにさまざまな方法で処理できます。シェル: コマンド置換で末尾の改行 ('\n') を保持します。

おすすめ記事