Wie navigiere ich mit Cygwin zu einem Verzeichnis in C: \?

371

Ich versuche, PyQt4 zu installieren, damit ich damit herumspielen kann. In der Installationsanleitung stand, dass ich Sip installieren musste . Der letzte Schritt zur Installation von Sip ist die Verwendung des make installBefehls. Windows hat das nicht, also habe ich es nachgeschlagen und alles, was ich gesehen habe, sagte, um Cygwin zu installieren. So tat ich. Aber ... ein Schluck ist drin C:\Python31\sip.

Kann ich dies über den Cygwin-Befehl ausführen? Wenn ja, wie würde ich das machen?

Oder kann ich dies über die normale Windows-Eingabeaufforderung ausführen? Wenn ja, wie würde ich das machen?

Andrew
quelle

Antworten:

721

Verwenden:

cd /cygdrive/c
Otávio Décio
quelle
90
Sie können auch verwendencd c:/
ihaveitnow
und stellen Sie sicher, dass in und nach/cygdrive/c
DeltaCap019
196

Ich werde etwas hinzufügen, das mir bei Cygwin sehr hilft. Wenn ich ein neues System einrichte, mache ich das immer

ln -s /cygdrive/c /c

Dadurch entsteht eine symbolische Verbindung zu /cygdrive/ceiner neuen Datei mit dem Namen /c(im Home - Verzeichnis)

Dann können Sie dies in Ihrer Shell tun

cd /c/Foo
cd /c/

Sehr praktisch.

Karoberts
quelle
1
Beachten Sie, dass dies verhindert, dass Dateien / Verzeichnisse cmit der Möglichkeit benannt werden, sie normal zu referenzieren.
Raj
1
Ich habe vor kurzem MSYS2 installiert und dies war das Standardverhalten, wobei /cygdrivetatsächlich nicht funktioniert ...
joeeey
136

cd c: wird jetzt in cygwin unterstützt

netawater
quelle
Gültig für cd e:und prompt wird sein/cygdrive/e
Kiquenet
49

Sie haben bereits eine Antwort akzeptiert, aber ich dachte nur, ich würde erwähnen, dass Folgendes auch in Cygwin funktioniert:

cd "C:\Foo"

Ich denke, die cd /cygdrive/cMethode ist besser, aber manchmal ist es nützlich zu wissen, dass Sie dies auch tun können.

Mark Byers
quelle
7

Sie können einfach verwenden

cd C:/Users/../..
Praveen Kishor
quelle
6

Da Sie dies wahrscheinlich häufig tun möchten, fügen Sie Ihrer .bashrc-Datei Aliase hinzu, z.

alias cdc='cd /cygdrive/c'
alias cdp='cd /cygdrive/p'

Dann können Sie einfach in die Befehlszeile eingeben:

cdc
Ellis
quelle
3

Definieren Sie eine Variable in .bashrc:

export C=/cygdrive/c

dann kannst du verwenden

cd $C/

und die Registerkarte wird automatisch korrekt vervollständigt (bitte geben Sie das / am Ende an)

Paco Zarate
quelle
2

In einem ähnlichen Zusammenhang könnte Ihnen auch gefallen:

shopt -s autocd

Auf diese Weise können Sie ein Verzeichnis erstellen, indem Sie einfach das Verzeichnis eingeben

[user@host ~]$ /cygdrive/d
cd /cygdrive/d
[user@host /cygdrive/d]$ 

Um dauerhaft zu machen, sollten Sie es zu Ihrem hinzufügen ~/.bashrc

Benjamin Goodacre
quelle
1

Sie können dies versuchen

/cygdrive/c/directoryname
tionne jones
quelle
1

Erstellen Sie eine Datei mit dem Namen "overrideBashCdForWindowsPaths" in Ihrem HOME-Ordner. Fügen Sie die folgenden Zeilen in diese Datei ein und speichern Sie sie:

#!/bin/bash

function cd() {
    CD_PATH="$(history | tail -1 | sed -e "s,.*${FUNCNAME[0]}\s*,,g")"

    if [ -z "${CD_PATH}" -o "${CD_PATH}" = "~" ]; then
        CD_PATH="${HOME}"
    fi

    builtin cd "$(cygpath "$CD_PATH")"
}

Geben Sie als Nächstes den folgenden Befehl in ein Terminal ein, während Sie sich in Ihrem HOME-Ordner befinden:

echo ". overrideBashCdForWindowsPaths" >> .bashrc

Schließen Sie Ihr Terminal und öffnen Sie ein neues. Sie können jetzt einfach in diesen Windows-Ordner wechseln, indem Sie einfach eingeben

cd C:\Python31\sip

Das Skript liest den letzten Befehl, extrahiert den Pfad und übergibt ihn an das Pfadkonvertierungstool von Cygwin. Durch die Benennung der Funktion "cd" überschreiben wir Bashs eingebaute "cd" und delegieren den eigentlichen Aufruf in der allerletzten Zeile an sie.

KoenigGunther
quelle
Danke @KoenigGunther, es funktioniert! Aber ein bisschen langsam, um das Verzeichnis zu wechseln. Gibt es eine Möglichkeit, es schneller zu machen, als wenn Sie ein Zitat verwenden? zBcd "C:\Python31\sip"
user11392987
1

Der, den ich mag, ist: cd C:

Um ein Linux-ähnliches Gefühl zu haben, tun Sie Folgendes:

ln -s /cygdrive/c/folder ~/folder

und benutze dies wie folgt: ~/folder/..

John Tribe
quelle
0

Erwähnenswert ist hier, dass Cygwin cygpathimmer noch nicht richtig mit beabstandeten Windows-Pfaden umgeht, insbesondere in Bash-Skripten, die unter Cygwin ausgeführt werden. Der Trick besteht darin, zu verstehen, wie CygwinAnführungszeichen in Bash-Skripten interpretiert werden.

Folgendes funktioniert nicht :

#!/bin/bash
TBDIR="/cygdrive/c/Program\ Files\ \(x86\)/MyDir/"

if [ -d "${TBDIR}" ]; then 
    echo "Found MyDir directory at: ${TBDIR}"
    cd "$TBDIR"
else 
    echo "MyDir program directory not found!"
    echo "Wrong DIR path: ${TBDIR}"
    exit 1
fi

Aber das funktioniert:

#!/bin/bash
# Cygwin-ism: No quotes!
TBDIR=/cygdrive/c/Program\ Files\ \(x86\)/MyDir/

if [ -d "${TBDIR}" ]; then 
...

Soweit ich weiß, ist derzeit keine Problemumgehung bekannt cygpath, mit der Leerzeichen im Bash-Skriptkontext ordnungsgemäß verarbeitet werden können. Sie können jedoch Anführungszeichen in Ihren Skripten verwenden.

not2qubit
quelle
0

$cd C:\

> (Drücken Sie die Eingabetaste, wenn Sie diese Zeile sehen.)

Sie befinden sich jetzt im Laufwerk C.

wwei23
quelle
Das >liegt daran, dass der Backslash am Ende der Zeile der Newline entgangen ist ...
Gert van den Berg