負の文字列でディレクトリを生成する外部プログラムがあります。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'