Dash - 奇妙なパス文字を避ける方法

Dash - 奇妙なパス文字を避ける方法

次のような奇妙なディレクトリが作成された場合:

a"␤

b"

Bash または zsh では、次のことができます。 cd a$'\n'b または cd 'a'$'\n''b'

ダッシュは何と同じですか?

答え1

これに対応する唯一の内容は基本的にあなたが書いたものです。

cd a"
"b

(または引用符の他の置換)。文字列リテラルには、改行を含むスペースを含めることができ、埋め込み単語の一部としてリテラルを保持します。バックスラッシュを改行文字として使用することはできません。改行接続改行文字を完全に削除するので、単一引用符または二重引用符を選択できます。

この場合、以下を使用することもできます。コマンドの置き換え例えばprintf同じ\nエスケープシーケンスを処理します。

cd "a$(printf '\nb')"

決勝戦bは必須内部にprintf末尾の改行文字はコマンド置換によって削除されるため、ファイル名が実際に改行文字で終わる場合は機能しません。\aBELバイトなどの他のエスケープにも使用できます。

$'...'ANSI-Cリファレンスへの直接POSIXまたはダッシュに対応するエントリはありません(しかし、)。

関連情報