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?

Antworten:



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.


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


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.



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

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)


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



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.


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/..


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.


0

$cd C:\

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

Sie befinden sich jetzt im Laufwerk C.


Das >liegt daran, dass der Backslash am Ende der Zeile der Newline entgangen ist ...
Gert van den Berg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.