"-"(例: "-78059735")を含むディレクトリでシェルコマンドを使用するには? [コピー]

負の文字列でディレクトリを生成する外部プログラムがあります。cdこのディレクトリを含む、次の基本的なシェルコマンドを使用しようとしていますls

cd -78059735

当然、これは-7で始まるコマンドラインオプションのように見えるので失敗します。

-bash: cd: -7: 無効なオプション

同様に、次のバリエーションも失敗します。

cd "-78059735"
cd "\-78059735"
cd '-78059735'
cd '\-78059735'
cd \-78059735

シェルを介してこの面倒なディレクトリとどのように対話できますか?

ベストアンサー1

これは、コマンドがcd次の文字を-操作するための有効なオプションフラグとして扱うためです。7無効なため、cd表示されるエラーで失敗します。

この場合、--次のようにコマンド名の前にダブルダッシュを追加して、コマンドラインオプションの終わりを指定できます。次のコマンドはコマンドラインオプションがcd完全であり、いいえその後、他のフラグが予想される--

cd -- -78059735/

以前に別のフラグを提供することもできますし、--正常に動作します。以下のコマンドには、ディレクトリが以前に存在しなかった場合にディレクトリを生成するmkdirオプションが必要であり、後にコマンドラインオプションフラグの終わりを提供する場合がある文字列でうまく動作します。-p--p

mkdir -p -- /tmp/-78059735
ls -d /tmp/*
/tmp/-78059735

rmディレクトリを削除するコマンドも以下のようにうまく機能します。

rm -vrf -- /tmp/-78059735
removed directory '/tmp/-78059735'

おすすめ記事