名前がマイナスだけのディレクトリをどのように入力しますか?


26

Webサーバーにlessnをダウンロードし、解凍しました。

という名前のフォルダーが含まれています-。私はそれに対処する方法を知っていると思いましたが、私は知りません。

私は試しましたがcd -- -、それは望ましい効果を持っていません。引用符を使用しても影響はないようです。私は、無駄をすべての場所にスラッシュを置きました。

このフォルダに変更する適切な方法は何ですか?

回答:


34

パラメータにならないようにしたいので、何かを追加しようとします。で現在のディレクトリにアクセスできる.ため、-代わりにサブフォルダにアクセスできます./-

cd ./-

理由cd -- -あなたは比較すれば、これは異なる方法で実装されているため、仕事をしないですrm(参照man rmする)cd(参照man bashまたはman cd)、cd見ているさまざまな解釈がある-(参照パラメータとしてのman bashman cd)。

また、これはcdシェルの組み込み関数であり、この答えで読むことができることに注意する必要があります:

cd外部コマンドではなく、シェルの組み込み関数です。これは現在のシェルのコンテキストで実行され、外部コマンドのように、fork / exec'dコンテキストでは別のプロセスとして実行されません。

外部cdコマンドがありますが、それはまったく異なることを行います。

これは、BashCoreutilsが2つの異なるものであるため、実装が異なる理由を説明しています。

あなたがこれを信じないだろうと仮定して、どうやってそれを確認しますか?とを使用whichtypeます。

 $ which cd && type cd
which: no cd in (/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.2:/usr/games/bin
cd is a shell builtin
 $ which rm && type rm
/bin/rm
/bin/rm is /bin/rm

参照してくださいman which詳細については、およびman bashまたはman typeのためにtype


4
いいえ、「-」はすべての標準ユーティリティに実装されていますが、オプションを終了するためのものです。「-」のみはオプションとしてではなく、前のディレクトリとして認識されます。
ステファンシャゼル

4
正しい解決策ですが、説明は間違っています。それcdは組み込みのものであるということは完全に無関係です。cd -- -動作しない理由は-、オプションではなくオペランドであることです。
ジル 'SO-悪であるのをやめる

1
Mac OS X では、現在のディレクトリでcd -- -指定さ-れたディレクトリに移動します。FWIW。
ティムケネディ

ほとんどのコメントは私の投稿の2番目の部分に反映されました。
タマラワイズマン

22

マイナス(別名、ダッシュ)のみはオプションではなく、オペランド(つまり、オプションではない引数)です。このため、その--前に配置しても効果はありません。ダッシュはのオペランドでcd -あり、まだのオペランドですcd -- -。他の標準ユーティリティと同様にcd、オペランドが--前にあるかどうかに関係なく、オペランドとしてオペランドを扱います。

このcdコマンドは、オペランドに特別な意味を割り当て-ます。それ以外は、切り替えるディレクトリです。cd -- -aディレクトリに切り替わる-aので、-aオペランドとのように特別なものではありません--防止cdオプションとして、それを処理するから。これは-単独では機能せず、オプションではありません。

とにかく-オペランドを渡すことになるので、引用符で囲むことは役に立ちませ-ん。

したがって、唯一の手段は、同じアイデアを表現する別の方法、つまり同じディレクトリの別の名前を見つけることです。幸いなことに、簡単な./方法があります。相対ファイル名の前に追加しても、同じファイルを意味します。この./場合、違いCDPATHはありませんが、ディレクトリ名が/./またはで始まる場合は参照されません../。したがって:

cd ./-

別の方法-はディレクトリであるため、/後に追加することです。/ファイル名の最後にを追加すると、ファイルがディレクトリとして扱われます(特に、ファイルがディレクトリへのシンボリックリンクの場合、コマンドはシンボリックリンクではなくディレクトリ自体で動作します)。変わりはない。したがって:

cd -- -/

-/ちなみに、書き込みは完了コードによって示唆されていますが、bashでは実際に動作するのはbashだけ--であり、bashには特別なケースはありませんcd -/(zshにはありません)。


それは私の心を吹き飛ばし、実際に試しましたがcd -- -/、そのcd -直前に相当するものを実行したため、ディレクトリは実際には存在せず、別の失敗した試行として解釈しました。
デアホッホシュプラー


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.