2009-12-05 11 views
302

J'essaye d'installer PyQt4 ainsi je peux déranger avec elle. Le guide d'installation a dit que je devais installer Sip. La dernière étape à installing Sip consiste à utiliser la commande make install. Windows n'a pas ça, alors j'ai regardé ça et tout ce que j'ai vu a dit d'installer Cygwin. Donc j'ai fait. Mais ... sip est dans C:\Python31\sip. Puis-je l'exécuter à partir de la commande Cygwin?Comment naviguer vers un répertoire dans C: avec Cygwin?

Si oui, comment ferais-je cela? Ou est-ce que je peux exécuter ceci à partir de l'invite de commande normale de Windows? Si oui, comment pourrais-je m'y prendre?

Répondre

558

Utilisation:

cd /cygdrive/c 
+56

Vous pouvez également utiliser 'cd c: /' – ihaveitnow

+0

et assurez-vous qu'il n'y a pas d'espace dans et après '/ cygdrive/c' – DeltaCap

41

Vous avez déjà accepté une réponse, mais je pensais que je vous signale que ce qui suit fonctionne aussi dans Cygwin:

cd "C:\Foo" 

Je pense que la méthode cd /cygdrive/c est mieux, mais parfois il est utile de savoir que vous pouvez le faire aussi.

167

Je vais ajouter quelque chose qui m'aide beaucoup avec cygwin. Chaque fois que la mise en place d'un nouveau système, je fais toujours ce

ln -s /cygdrive/c /c 

Cela crée un symbolic link à /cygdrive/c avec un nouveau fichier appelé /c (dans le répertoire)

Ensuite, vous pouvez le faire dans votre shell

cd /c/Foo 
cd /c/ 

Très pratique.

+0

Notez que cela vous empêche d'avoir des fichiers/répertoires nommés' c' avec la possibilité de les référencer normalement. – Raj

+0

J'ai récemment installé MSYS2 et c'était le comportement par défaut, avec '/ cygdrive' en fait ne fonctionnait pas ... – joejoe31b

118

cd c: est maintenant pris en charge dans Cygwin

+0

Valide pour' cd e: 'et l'invite sera'/cygdrive/e' – Kiquenet

2

Sur le même sujet, vous pouvez aussi:

shopt -s autocd 

Cela vous permet de cd un répertoire en tapant simplement dans le répertoire

[[email protected] ~]$ /cygdrive/d 
cd /cygdrive/d 
[[email protected] /cygdrive/d]$ 

Pour rendre est persistant, vous devez l'ajouter à votre ~/.bashrc

1

vous pouvez essayer cette

/cygdrive/c/directoryname 
4

Comme vous voudrez probablement le faire souvent, ajouter des alias dans votre fichier .bashrc, comme:

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

Ensuite, vous pouvez simplement taper sur la ligne de commande:

cdc 
2

Définir une variable dans.bashrc:

export C=/cygdrive/c 

vous pouvez utiliser

cd $C/ 

et l'onglet correctement autocompletes (s'il vous plaît inclure le/à la fin)

1

Vous pouvez simplement utiliser cd C:/Users/../..

0

Créez un fichier nommé "overrideBashCdForWindowsPaths" dans votre dossier HOME. Coller les lignes suivantes dans ce fichier et enregistrez-le:

#!/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")" 
} 

Ensuite, tapez la commande suivante dans un terminal, alors que vous êtes dans votre dossier HOME:

echo ". overrideBashCdForWindowsPaths" >> .bashrc 

Fermez votre terminal et ouvrir un nouveau un. Vous pouvez maintenant facilement changer dans ce dossier Windows en tapant simplement

cd C:\Python31\sip 

Le script lit la dernière commande, extrait le chemin et il passe à l'outil chemin de conversion de Cygwin. En nommant la fonction "cd", nous avons en quelque sorte "surchargé" le builtin "cd" de Bash et nous lui déléguons l'appel réel dans la toute dernière ligne.

0

Quelque chose qui mérite d'être mentionné ici est que cygpath de Cygwin, ne gère toujours pas correctement les chemins Windows espacés, en particulier dans les scripts Bash fonctionnant sous Cygwin. L'astuce consiste à comprendre comment Cygwin interprète les guillemets dans les scripts Bash.

Ce qui suit ne pas travail:

#!/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 

Mais cela fonctionne:

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

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

Pour autant que je sache, il n'y a actuellement aucune solution connue à l'aide cygpath, qui peut gérer correctement espaces dans le contexte de script bash mais vous pouvez utiliser des guillemets dans vos scripts.

0

Celui que j'aime est: cd C:

Pour avoir linux comme la sensation puis faire:

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

et utiliser comme: ~/folder/..