¿Cómo navegar a un directorio en C: \ con Cygwin?


371

Estoy tratando de instalar PyQt4 para poder jugar con él. La guía de instalación decía que tenía que instalar Sip . El último paso para instalar Sip es usar el make installcomando. Windows no tiene eso, así que lo busqué y todo lo que vi me dijo que instalara Cygwin. Así que lo hice. Pero ... el sorbo está adentro C:\Python31\sip.

¿Puedo ejecutar esto desde el comando Cygwin? Si es así, ¿cómo haría eso?

¿O puedo ejecutar esto desde el símbolo del sistema normal de Windows? Si es así, ¿cómo lo haría?

Respuestas:



196

Agregaré algo que me ayude mucho con cygwin. Cada vez que configuro un nuevo sistema, siempre hago esto

ln -s /cygdrive/c /c

Esto crea un enlace simbólico a /cygdrive/cun nuevo archivo llamado /c(en el directorio principal)

Entonces puedes hacer esto en tu caparazón

cd /c/Foo
cd /c/

Muy útil.


1
Tenga en cuenta que esto le impide tener nombres de archivos / directorios ccon la capacidad de hacer referencia a ellos normalmente.
Raj

1
Recientemente he instalado MSYS2 y este era el comportamiento por defecto, con /cygdriveen-hecho de no trabajar ...
joeeey


49

Ya aceptó una respuesta, pero solo pensé en mencionar que lo siguiente también funciona en Cygwin:

cd "C:\Foo"

Creo que el cd /cygdrive/cmétodo es mejor, pero a veces es útil saber que también puedes hacerlo.



6

Como probablemente querrá hacer esto a menudo, agregue alias en su archivo .bashrc, como:

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

Luego puede escribir en la línea de comando:

cdc

3

Defina una variable en .bashrc:

export C=/cygdrive/c

entonces puedes usar

cd $C/

y la pestaña se completa automáticamente (incluya el / al final)


2

En una nota relacionada, también te puede gustar:

shopt -s autocd

Esto le permite crear un directorio con solo escribir el directorio

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

Para que sea persistente, debe agregarlo a su ~/.bashrc



1

Cree un archivo llamado "overrideBashCdForWindowsPaths" en su carpeta HOME. Pegue las siguientes líneas en ese archivo y guárdelo:

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

Luego, escriba el siguiente comando en una terminal, mientras está en su carpeta INICIO:

echo ". overrideBashCdForWindowsPaths" >> .bashrc

Cierre su terminal y abra una nueva. Ahora puede cambiar fácilmente a esa carpeta de Windows simplemente escribiendo

cd C:\Python31\sip

El script lee el último comando, extrae la ruta y la pasa a la herramienta de conversión de rutas de Cygwin. Al nombrar la función "cd", "anulamos" el "cd" incorporado de Bash y le delegamos la llamada real en la última línea.


Gracias @ KoenigGunther, ¡funciona! Pero un poco lento para cambiar de directorio. ¿Hay alguna manera de hacerlo más rápido al igual que usar una cita? por ejemplocd "C:\Python31\sip"
user11392987

1

El que me gusta es: cd C:

Para tener linux like feel entonces haz:

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

y usa esto como: ~/folder/..


0

Algo que vale la pena mencionar aquí es que Cygwin cygpathtodavía no maneja correctamente las rutas espaciadas de Windows, especialmente en los scripts de Bash que se ejecutan bajo Cygwin. El truco es comprender cómo Cygwininterpreta las citas en los scripts de Bash.

Lo siguiente no funciona:

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

Pero esto funciona:

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

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

Hasta donde yo sé, actualmente no se conoce una solución alternativa cygpathque pueda manejar espacios adecuadamente en el contexto de scripts de bash, pero puede usar comillas en sus scripts.


0

$cd C:\

> (Presione enter cuando vea esta línea)

Ahora estás en la unidad C.


Esto >se debe a que la barra invertida al final de la línea escapó de la nueva línea ...
Gert van den Berg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.