Frage Wie in ein Verzeichnis mit diesem Namen "-2" (beginnend mit dem Bindestrich)?


Ich habe ein Verzeichnis mit dem Namen:

-2

Ich will hinein cd, aber die CD beschwert sich:

bash: cd: -2: invalid option

Ohne Erfolg habe ich versucht:

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

Irgendeine Lösungsmöglichkeit?

Edit: Keine Dateibrowser wie mc usw. auf dem Server verfügbar.


149
2018-01-03 20:29


Ursprung


Verwandte Frage zum Superuser: superuser.com/questions/361573/ ... - yms


Antworten:


Mindestens zwei Möglichkeiten:

  1. Benutze die -- Streit.

    cd -- -2
    

    Dies verwendet eine für GNU-Tools übliche Konvention, die nichts behandelt, was danach erscheint -- als Befehlszeilenoption.

    Als ein Kommentator bemerkt, diese Konvention ist auch definiert im POSIX-Standard:

    Standardverhalten: Wenn dieser Abschnitt als "Keine" aufgeführt ist, bedeutet dies, dass die Implementierung keine Optionen unterstützen muss. Standarddienstprogramme, die keine Optionen akzeptieren, aber Operanden akzeptieren, müssen erkennen "--" als erstes zu verwerfendes Argument.

    Die Voraussetzung für die Anerkennung "--" liegt daran, dass konforme Anwendungen eine Möglichkeit benötigen, ihre Operanden vor beliebigen Optionen zu schützen, die die Implementierung als Erweiterung bereitstellen kann. Wenn beispielsweise das Standard-Dienstprogramm foo so aufgeführt ist, als würde es keine Optionen übernehmen, und die Anwendung benötigt, um einen Pfadnamen mit einem führenden Bindestrich zu erhalten, könnte dies wie folgt geschehen:

    foo -- -myfile
    

    und vermeiden Sie Probleme mit -m als Erweiterung verwendet.

    ebenso gut wie:

    Leitlinie 10:
      Das Argument -- sollte als Trennzeichen für das Ende der Optionen akzeptiert werden. Alle folgenden Argumente sollten als Operanden behandelt werden, auch wenn sie mit dem beginnen '-' Charakter. Das -- Das Argument sollte nicht als Option oder Operand verwendet werden.

  2. Geben Sie den Pfad explizit an:

    cd ./-2
    

    Dies gibt den Pfad an, der das aktuelle Verzeichnis explizit benennt (.) als Ausgangspunkt.

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

    Dies sind Variationen zu den oben genannten. Eine beliebige Anzahl solcher Variationen kann möglich sein; Ich überlasse es dem Leser als Übung, alle zu entdecken.


250
2018-01-03 20:32



Es ist nicht nur GNU, es ist Teil des POSIX-Standards. Sehen 1.11 Dienstprogramm Beschreibung Standardeinstellungen und 12.2 Hilfssyntax-Richtlinien (Richtlinie # 10). Von dem cd Seite "Das cd Der Versorger muss ... Abschnitt 12.2 "entsprechen. - Dietrich Epp
Jetzt bin ich nur neugierig darauf, wie man in ein Verzeichnis namens -! - sergiol
@sergiol Der gleiche Weg. - Michael Hampton♦
@ArtB: Nein. Das Quoting wirkt sich nur auf die Feldaufteilung aus. So "hello world" ist ein Argument, aber hello world ist zwei, und "-2" ist das gleiche wie -2. - Dietrich Epp
@sergiol: Entweder cd -- -- oder cd ./-- sollte arbeiten. - Keith Thompson


Das sollte funktionieren:

cd -- -2 

- bedeutet keine Option mehr


48
2018-01-03 20:33





Dies funktioniert, wenn '-2' im aktuellen Verzeichnis ist.

    cd ./-2

Sie können die Autovervollständigung durchführen, indem Sie tippen - und die Tabulatortaste drücken.


25
2018-01-04 06:19





cd / home / ... / 2 funktioniert auch. Geben Sie den vollständigen Zugriffspfad an.


10
2018-01-04 02:46





Nur zur Ergänzung, wenn Sie dieses Verzeichnis entfernen / löschen möchten, können Sie den folgenden Befehl verwenden:

rm -r -- -2

6
2018-01-04 14:14





Ich weiß, dass diese Frage bereits beantwortet wurde. Wenn jemand eine Situation wie meine hat, ist das für sie:

Ich habe eine Java-App ausgeführt und nach einem Verzeichnis gesucht, das mit <path>Ich sollte das vor dem Ausführen der App durch den richtigen Pfad ersetzen. Allerdings habe ich vergessen, das zu tun. Die App hat ein Verzeichnis namens. Erstellt <path>.

Ich versuchte zu cd <path> - gab mir Fehler "-bash: Syntaxfehler in der Nähe von unerwarteten Token Newline" Basierend auf dem Vorschlag hier (ich verstehe, dass es für Verzeichnis beginnend mit - und nicht <) Ich versuchte cd -- <path>. Ich habe jedoch den gleichen Fehler.

Als ich es versuchte cd \<path>\ - Das hat funktioniert!

Hintergrundinformation:

Die Symbole "<" und ">" werden zum Umleiten von STDIN und STDOUT verwendet, daher müssen sie maskiert sein, damit die Shell sie nicht als Weiterleitungen interpretiert.


-1
2017-07-05 14:00