コマンドによる異常なパスの使用

コマンドによる異常なパスの使用

次のディレクトリがあるとします。

mkdir """
'''\n
"

そして、次のようにディレクトリを照会できます。

stat --printf '%n' **  #or for simplicity stat --printf '%n' $'\n'\'\'\'\\n$'\n'

次に、stdoutから返されたファイル名を変数としてキャプチャして、ファイル名の正しいバイナリ表現を取得します。

#this should be a new line which I can't show
'''\n

標準入力から後続のコマンドを実行し、常に動作するようにその変数を送信するにはどうすればよいですか?たとえば、文字列を送信すると失敗します。

stat 
'''\n

これはほとんどの場合に機能しますが、すべてではありません。

stat "/path/here"

次のコマンドもほとんどの場合動作しますが、すべてではありません。

p="$(cat<<EOF

'''\n
EOF
)"
stat -- "$p"

キャプチャされた変数をノードを介して生成された引数として使用すると機能します。したがって、statのキャプチャは正確です。問題は、変数を文字列としてstdinに送信したときに発生する変換です。これは必須です。

ベストアンサー1

おすすめ記事