web-dev-qa-db-ja.com

この名前「-2」(ハイフンで始まる)のディレクトリにcdする方法は?

次の名前のディレクトリがあります:

-2

そこにcdしたいが、cdは不平を言う:

bash: cd: -2: invalid option

成功しなかったので、私は試しました:

cd "-2"
cd '-2'
cd \-2

解決策はありますか?

編集:mcなどのファイルブラウザーはサーバーで利用できません。

175
user151851

少なくとも2つの方法:

  1. --引数を使用します。

    cd -- -2
    

    これは、GNUツールに共通する規則を使用しています。これは、--の後に表示されるものをコマンドラインオプションとして扱わないことです。

    コメンター が注記しているように、この規則も POSIX標準で定義されています です。

    デフォルトの動作:このセクションが「なし」と表示されている場合、実装はオプションをサポートする必要がないことを意味します。オプションを受け入れないが、オペランドを受け入れる標準ユーティリティは、破棄される最初の引数として"--"を認識します。

    "--"を認識するための要件は、適合アプリケーションが、実装が拡張機能として提供する可能性のある任意のオプションからオペランドを保護する方法を必要とするためです。たとえば、標準ユーティリティfooがオプションを取らないものとしてリストされており、アプリケーションが先頭にハイフンを含むパス名を指定する必要がある場合、次のように安全に実行できます。

    foo -- -myfile
    

    -mを拡張機能として使用して問題を回避します。

    同様に

    ガイドライン10:
    引数--は、オプションの終わりを示す区切り文字として受け入れる必要があります。以降の引数は、'-'文字で始まっていても、オペランドとして扱う必要があります。 --引数は、オプションまたはオペランドとして使用しないでください。

  2. パスを明示的に指定します。

    cd ./-2
    

    これは、現在のディレクトリ(.)を明示的に指定するパスを開始点として指定します。

    cd $(pwd)/-2
    cd /absolute/path/to/-2
    

    これらは上記のバリエーションです。このようなバリエーションはいくつでも可能です。それらすべてを発見するための演習として残しておきます。

281
Michael Hampton

これはうまくいくはずです:

cd -- -2 

-これ以上のオプションはありません

49
Tim Haegele

これは、「-2」が現在のディレクトリにある場合に機能します。

    cd ./-2

-と入力してタブを押すと、オートコンプリートが可能です。

26
newbee

cd /home/...../-2も機能します。アクセスするための完全なパスを指定します。

11
Vivek

補足として、このディレクトリを削除または削除する場合は、次のコマンドを使用できます。

rm -r -- -2
7
Zignd