次の名前のディレクトリがあります:
-2
私はそれにCDを入れたいが、CDは文句を言います:
bash: cd: -2: invalid option
成功せずに、私は試しました:
cd "-2"
cd '-2'
cd \-2
解決策はありますか?
編集:サーバーで使用可能なmcなどのファイルブラウザはありません。
次の名前のディレクトリがあります:
-2
私はそれにCDを入れたいが、CDは文句を言います:
bash: cd: -2: invalid option
成功せずに、私は試しました:
cd "-2"
cd '-2'
cd \-2
解決策はありますか?
編集:サーバーで使用可能なmcなどのファイルブラウザはありません。
回答:
少なくとも2つの方法:
--
引数を使用します。
cd -- -2
これは、GNUツールに共通の規則を使用します。これは--
、コマンドラインオプションとして後に表示されるものを処理しないことです。
コメンターは指摘し、この大会もされ、POSIX標準で定義されています:
デフォルトの動作:このセクションが「なし」としてリストされている場合、実装がオプションをサポートする必要がないことを意味します。オプションを受け入れないが、オペランドを受け入れる標準ユーティリティは、
"--"
破棄される最初の引数として認識しなければなりません。認識の要件
"--"
は、適合アプリケーションが、実装が拡張として提供する可能性のある任意のオプションからオペランドを保護する方法を必要とするためです。たとえば、標準ユーティリティfooがオプションを使用しないものとしてリストされ、アプリケーションがパス名に先頭にハイフンを付ける必要がある場合、次のように安全に実行できます。foo -- -myfile
-mを拡張機能として使用することによる問題を回避します。
と同様に:
ガイドライン10:
引数--
は、オプションの終わりを示す区切り文字として受け入れられるべきです。後続の引数は、'-'
文字で始まる場合でもオペランドとして扱われる必要があります。--
引数には、オプションとして、あるいはオペランドとして使用すべきではありません。
パスを明示的に指定します。
cd ./-2
これは、現在のディレクトリ(.
)を開始点として明示的に指定するパスを指定します。
cd $(pwd)/-2
cd /absolute/path/to/-2
これらは上記のバリエーションです。そのようなバリエーションはいくつでも可能です。それらすべてを発見するための演習として読者に任せます。
cd
ページからcd
。
"hello world"
1つの引数があるが、hello world
2であり、かつ"-2"
同じです-2
。
cd -- --
または動作するcd ./--
はずです。
この質問には既に回答済みです。誰かが私のような状況にあるなら、これは彼らのためです:
Javaアプリを実行し、で始まるディレクトリを探していました<path>
。アプリを実行する前に、適切なパスに置き換える必要がありました。しかし、私はそれをするのを忘れていました。アプリはというディレクトリを作成しました<path>
。
私がしようとしたcd <path>
-私にエラーを与えた:ここでの提案に基づき、「-bash予期しないトークン改行の近くに構文エラー」(私はそのディレクトリのために始まることを理解-とない<)私が試してみましたcd -- <path>
。ただし、同じエラーが発生しました。
私が試したときcd \<path>\
-これはうまくいきました!
背景情報:
記号 "<"および ">"は、STDINおよびSTDOUTのリダイレクトに使用されるため、シェルがそれらをリダイレクトとして解釈しないようにするためにエスケープする必要があります。