Comment naviguer vers un répertoire dans C: avec Cygwin?
J'essaie d'installer PyQt4 afin que je puisse jouer avec. Le guide d'installation dit que je devais installer Sip. La dernière étape pour Installer Sip consiste à utiliser la commande make install
. Windows n'a pas cela, donc je l'ai regardé et tout ce que j'ai vu a dit d'installer Cygwin. Je l'ai fait. Mais...sip est dans C:Python31sip
.
Puis-je l'exécuter à partir de la commande Cygwin? Si oui, comment dois-je procéder?
Ou Puis-je l'exécuter à partir de l'invite de commande windows normale? Si oui, comment pourrais-je aller à ce sujet?
13 réponses
Je vais ajouter quelque chose qui m'aide beaucoup avec cygwin. Chaque fois que je configure un nouveau système, je le fais toujours
ln -s /cygdrive/c /c
Cela crée un lien symbolique à /cygdrive/c
avec un nouveau fichier appelé /c
(dans le répertoire d'accueil)
, Alors vous pouvez le faire dans votre shell
cd /c/Foo
cd /c/
Très pratique.
Vous avez déjà accepté une réponse, mais je pensais juste mentionner que ce qui suit fonctionne également dans Cygwin:
cd "C:\Foo"
Je pense que la méthode cd /cygdrive/c
est meilleure, mais parfois il est utile de savoir que vous pouvez le faire aussi.
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
Sur une note connexe, vous pouvez également aimer:
shopt -s autocd
Cela vous permet de cd un dir en tapant simplement dans le dir
[user@host ~]$ /cygdrive/d
cd /cygdrive/d
[user@host /cygdrive/d]$
Pour est persistant, vous devez l'ajouter à votre ~/.bashrc
Définir une variable dans .bashrc:
export C=/cygdrive/c
Ensuite, vous pouvez utiliser
cd $C/
Et l'onglet autocompletes correctement (veuillez inclure le / à la fin)
Créez un fichier nommé "overrideBashCdForWindowsPaths" dans votre dossier personnel. Collez les lignes suivantes dans ce fichier et l'enregistrer:
#!/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 personnel:
echo ". overrideBashCdForWindowsPaths" >> .bashrc
Fermez votre terminal et ouvrez-en un nouveau. 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 le transmet à L'outil de conversion de chemin de Cygwin. En nommant l' fonction " cd "Nous sorte de 'override' builtin "cd" de Bash et déléguer l'appel réel à elle dans la toute dernière ligne.
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 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'y a actuellement aucune solution de contournement connue en utilisant cygpath
, qui peut gérer correctement les espaces dans le contexte de script bash mais vous pouvez utiliser citations dans vos scripts.
Celui que j'aime est: cd C:
Pour avoir linux comme sensation alors faites:
ln -s /cygdrive/c/folder ~/folder
Et utilisez ceci comme: ~/folder/..
$cd C:\
>
(Appuyez sur entrée lorsque vous voyez cette ligne)
, Vous êtes maintenant dans le lecteur C.