429 Stimmen

Wie navigiert man mit Cygwin zu einem Verzeichnis in C:\?

Ich versuche zu installieren PyQt4 damit ich damit herumspielen kann. In der Installationsanleitung stand, dass ich Folgendes installieren muss Schluck . Der letzte Schritt zur Installation von Sip ist die Verwendung der make install Befehl. Windows hat das nicht, also habe ich nachgeschaut und alles, was ich gesehen habe, sagte, ich solle Cygwin installieren. Also habe ich das getan. Aber...sip ist in C:\Python31\sip .

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

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

1voto

wwei23 Punkte 1

$cd C:\

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

Sie befinden sich jetzt auf dem Laufwerk C.

0voto

KoenigGunther Punkte 120

Erstellen Sie eine Datei namens "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 nun einfach in den Windows-Ordner wechseln, indem Sie Folgendes eingeben

cd C:\Python31\sip

Das Skript liest den letzten Befehl, extrahiert den Pfad und übergibt ihn an Cygwins Pfadkonvertierungstool. Indem wir die Funktion "cd" nennen, setzen wir sozusagen das in der Bash eingebaute "cd" außer Kraft und delegieren den eigentlichen Aufruf in die allerletzte Zeile.

0voto

not2qubit Punkte 11725

Erwähnenswert ist hier, dass Cygwins cygpath geht immer noch nicht richtig mit Windows-Pfaden um, insbesondere in Bash-Skripten, die unter Cygwin laufen. Der Trick ist zu verstehen, wie Cygwin interpretiert Anführungszeichen in Bash-Skripten.

Folgendes gilt pas Arbeit:

#!/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ß, gibt es derzeit keine bekannte Umgehungslösung mit cygpath die Leerzeichen im Kontext der Bash-Skripte richtig verarbeiten kann, aber Sie können Anführungszeichen in Ihren Skripten verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X