&シンボルを含むサブディレクトリ名をどのようにエスケープしますか?

&シンボルを含むサブディレクトリ名をどのようにエスケープしますか?

kornshellを実行してディレクトリツリーを参照してください。次の名前のサブディレクトリにCDを移動したいと思います。

 -3ab_&_-3dc.img

私の質問は、この名前からアンパサンドをどのように避けるべきですか?私は二重引用符とバックスラッシュのさまざまな組み合わせを試しましたが、成功しませんでした。

ベストアンサー1

(またはほぼすべての他のキャラクター)には&2つの簡単な可能性があります。

  • 内容全体を一重引用符で囲みます。' -3ab_&_-3dc.img'
  • 問題のある各文字の前にバックスラッシュを追加します。-3ab_\&_-3dc.img

2つの例外があります。

  • 一重引用符の方法は一重引用符では機能しません。バックスラッシュは一重引用符の中に特に表示されないため、直接使用することもできません。あなたができることは、一重引用符で囲まれた文字列を終了し、すぐにバックスラッシュを使用して一重引用符を追加してから一重引用符を再起動することです。たとえば、ディレクトリ名が次の場合foo'bar\quxcd 'foo'\''bar\qux'。次のように覚えています。一重引用符の中に'\''一重引用符が表示されます。
  • バックスラッシュ方法は改行では機能しません。バックスラッシュ改行は単に無視されます。改行文字の周囲には一重引用符が必要です。

二重引用符を使用することもできますが、特定の文字の前にバックスラッシュを追加する必要があります。一重引用符がより簡単です。

これには別の困難があります。これは、ディレクトリ名がダッシュで始まるということです。この文字は、cdコマンド(ほぼすべてのコマンドと同様)の後にオプションがあることを示します。ダッシュはシェルにのみ適用されるのではなく、コマンドにのみ適用されるため、引用符は影響しません。オプションとして解釈されず、ダッシュで始まる引数をコマンドに渡す方法は2つあります。

  • この主張を表現する別の方法を見つけてください。ファイル名の場合は、./前に追加しても同じファイルを表します。
  • 主張を--先にしてください。これは、コマンドにオプションの検索を停止するよう指示します。

したがって、次のようなさまざまな方法でこのサブディレクトリに変更できます。

cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'

おすすめ記事