Comment accéder à un répertoire en C: \ avec Cygwin?


371

J'essaie d'installer PyQt4 pour pouvoir jouer avec. Le guide d'installation m'a dit que je devais installer Sip . La dernière étape de l' installation de Sip consiste à utiliser la make installcommande. Windows n'a pas cela, donc je l'ai recherché et tout ce que j'ai vu a dit d'installer Cygwin. Alors je l'ai fait. Mais ... une gorgée est là C:\Python31\sip.

Puis-je l'exécuter à partir de la commande Cygwin? Si oui, comment ferais-je cela?

Ou puis-je l'exécuter à partir de l'invite de commande Windows normale? Si oui, comment pourrais-je m'y prendre?

Réponses:



196

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

ln -s /cygdrive/c /c

Cela crée un lien symbolique vers /cygdrive/cun nouveau fichier appelé /c(dans le répertoire personnel)

Ensuite, vous pouvez le faire dans votre shell

cd /c/Foo
cd /c/

Très utile.


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

1
J'ai récemment installé MSYS2 et c'était le comportement par défaut, avec /cygdriveen fait ne fonctionne pas ...
joeeey


49

Vous avez déjà accepté une réponse, mais je pensais simplement mentionner que ce qui suit fonctionne également dans Cygwin:

cd "C:\Foo"

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



6

Comme vous voudrez probablement le faire souvent, ajoutez 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

3

Définissez une variable dans .bashrc:

export C=/cygdrive/c

alors vous pouvez utiliser

cd $C/

et l'onglet se complète automatiquement (veuillez inclure le / à la fin)


2

Sur une note connexe, vous aimerez peut-être aussi:

shopt -s autocd

Cela vous permet de cd un dir en tapant simplement le dir

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

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



1

Créez un fichier nommé "overrideBashCdForWindowsPaths" dans votre dossier HOME. Collez 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, lorsque vous êtes dans votre dossier HOME:

echo ". overrideBashCdForWindowsPaths" >> .bashrc

Fermez votre terminal et ouvrez-en un nouveau. Vous pouvez maintenant facilement basculer dans ce dossier Windows en tapant simplement

cd C:\Python31\sip

Le script lit la dernière commande, extrait le chemin et le transmet à l'outil de conversion de chemin de Cygwin. En nommant la fonction "cd", nous "trions" le "cd" intégré de Bash et lui déléguons l'appel réel dans la toute dernière ligne.


Merci @KoenigGunther, ça marche! Mais un peu lent pour changer de répertoire. Existe-t-il un moyen de le rendre plus rapide, tout comme l'utilisation de devis? par exemplecd "C:\Python31\sip"
user11392987

1

Celui que j'aime est: cd C:

Pour avoir Linux comme une sensation, alors faites:

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

et utilisez ceci comme: ~/folder/..


0

Il convient de mentionner ici que Cygwin cygpathne gère toujours pas correctement les chemins Windows espacés, en particulier dans les scripts Bash exécutés sous Cygwin. L'astuce consiste à comprendre comment Cygwininterprète les citations dans les scripts Bash.

Ce qui suit ne fonctionne pas :

#!/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'existe actuellement aucune solution de contournement connue cygpathqui puisse gérer correctement les espaces dans le contexte de script bash mais vous pouvez utiliser des guillemets dans vos scripts.


0

$cd C:\

> (Appuyez sur Entrée lorsque vous voyez cette ligne)

Vous êtes maintenant dans le lecteur C.


C'est >parce que la barre oblique inversée en fin de ligne a échappé à la nouvelle ligne ...
Gert van den Berg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.