解決策 1:
少なくとも 2 つの方法:
<オール>
--
を使用
cd -- -2
これは、--
の後に出現するものを処理しないという GNU ツールに共通の規則を使用します。 コマンドラインオプションとして。
コメンターが指摘したように、この規則は POSIX 標準でも定義されています。
<ブロック引用>
デフォルトの動作: このセクションが「なし」と表示されている場合、実装でオプションをサポートする必要がないことを意味します。オプションを受け入れないが、オペランドを受け入れる標準ユーティリティは、"--"
を認識します。 破棄される最初の引数として。
"--"
を認識するための要件 これは、適合するアプリケーションには、実装が拡張機能として提供する可能性のある任意のオプションからオペランドを保護する方法が必要だからです。たとえば、標準ユーティリティ foo がオプションを取らないとリストされていて、アプリケーションがハイフンで始まるパス名を与える必要がある場合、次のように安全に実行できます:
foo -- -myfile
-m で問題を回避します 拡張機能として使用されます。
加えて:
<ブロック引用>
ガイドライン 10:
引数 --
オプションの終わりを示す区切り文字として受け入れられる必要があります。 '-'
で始まる場合でも、後続の引数はすべてオペランドとして扱われるべきです。 キャラクター。 --
引数は、オプションまたはオペランドとして使用しないでください。
パスを明示的に指定してください:
cd ./-2
これは、現在のディレクトリを明示的に指定するパスを指定します (.
) を開始点として使用します。
cd $(pwd)/-2
cd /absolute/path/to/-2
これらは上記のバリエーションです。このようなバリエーションはいくつでも可能です。それらすべてを発見するための演習として、読者に任せます。
解決策 2:
これは動作するはずです:
cd -- -2
-- これ以上オプションがないことを意味します
解決策 3:
これは、「-2」が現在のディレクトリにある場合に機能します。
cd ./-2
入力してタブを押すと、オートコンプリートできます。
解決策 4:
cd /home/...../-2
も機能します。アクセスするためのフル パスを指定します。
解決策 5:
補足として、このディレクトリを削除/削除したい場合は、次のコマンドを使用できます:
rm -r -- -2