Como navegar para um diretório em C: \ com Cygwin?

371

Estou tentando instalar o PyQt4 para que eu possa mexer com ele. O guia de instalação disse que eu tinha que instalar o Sip . A última etapa para instalar o Sip é usar o make installcomando O Windows não possui isso, então procurei e tudo o que vi dizia para instalar o Cygwin. Então eu fiz. Mas ... gole está dentro C:\Python31\sip.

Posso executar isso a partir do comando Cygwin? Se sim, como eu faria isso?

Ou posso executar isso no prompt de comando normal do Windows? Se sim, como eu faria isso?

Andrew
fonte

Respostas:

721

Usar:

cd /cygdrive/c
Otávio Décio
fonte
90
Você também pode usarcd c:/
ihaveitnow
e certifique-se que não há espaço dentro e depois/cygdrive/c
DeltaCap019
196

Vou acrescentar algo que me ajuda muito com o cygwin. Sempre que configuro um novo sistema, eu sempre faço isso

ln -s /cygdrive/c /c

Isso cria um link simbólico para /cygdrive/cum novo arquivo chamado /c(no diretório inicial)

Então você pode fazer isso no seu shell

cd /c/Foo
cd /c/

Muito conveniente.

karoberts
fonte
11
Observe que isso impede que você tenha nomes de arquivos / diretórios ccom a capacidade de referenciá-los normalmente.
Raj
11
Eu instalei recentemente MSYS2 e este era o comportamento padrão, com /cygdriveem-fato não está funcionando ...
joeeey
136

cd c: é suportado agora no cygwin

água de neta
fonte
Para válido cd e:e rápido será/cygdrive/e
Kiquenet
49

Você já aceitou uma resposta, mas pensei em mencionar que o seguinte também funciona em Cygwin:

cd "C:\Foo"

Eu acho que o cd /cygdrive/cmétodo é melhor, mas às vezes é útil saber que você também pode fazer isso.

Mark Byers
fonte
7

Você pode apenas usar

cd C:/Users/../..
Praveen Kishor
fonte
6

Como você provavelmente desejará fazer isso com frequência, adicione aliases ao seu arquivo .bashrc, como:

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

Então você pode apenas digitar na linha de comando:

cdc
Ellis
fonte
3

Defina uma variável em .bashrc:

export C=/cygdrive/c

então você pode usar

cd $C/

e a guia é preenchida automaticamente corretamente (inclua / no final)

Paco Zarate
fonte
2

Em uma nota relacionada, você também pode gostar de:

shopt -s autocd

Isso permite que você cdize um diretório digitando-o

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

Para tornar persistente, você deve adicioná-lo ao seu ~/.bashrc

Benjamin Goodacre
fonte
1

você pode tentar isso

/cygdrive/c/directoryname
tionne jones
fonte
1

Crie um arquivo chamado "overrideBashCdForWindowsPaths" na sua pasta HOME. Cole as seguintes linhas nesse arquivo e salve-o:

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

Em seguida, digite o seguinte comando em um terminal enquanto estiver na pasta HOME:

echo ". overrideBashCdForWindowsPaths" >> .bashrc

Feche o seu terminal e abra um novo. Agora você pode facilmente mudar para essa pasta do Windows simplesmente digitando

cd C:\Python31\sip

O script lê o último comando, extrai o caminho e o passa para a ferramenta de conversão de caminhos do Cygwin. Ao nomear a função "cd", meio que "substituímos" o "cd" interno do Bash e delegamos a chamada real na última linha.

KoenigGunther
fonte
Obrigado @KoenigGunther, funciona! Mas um pouco lento para mudar de diretório. Existe uma maneira de torná-lo mais rápido, assim como usar aspas? por exemplocd "C:\Python31\sip"
user11392987 22/01
1

O que eu gosto é: cd C:

Para ter o linux como o sentir, faça:

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

e use isso como: ~/folder/..

John Tribe
fonte
0

Algo que vale a pena mencionar aqui é que o Cygwin cygpathainda não lida corretamente com os caminhos espaçados do Windows, especialmente em scripts Bash em execução no Cygwin. O truque é entender como Cygwininterpreta aspas nos scripts do Bash.

O seguinte não 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

Mas isso funciona:

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

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

Até onde eu sei, atualmente não há nenhuma solução alternativa conhecida cygpathque possa lidar adequadamente com espaços no contexto de script bash, mas você pode usar aspas em seus scripts.

not2qubit
fonte
0

$cd C:\

> (Pressione enter quando vir esta linha)

Agora você está na unidade C.

wwei23
fonte
Isso >ocorre porque a barra invertida no final da linha escapou da nova linha ...
Gert van den Berg