Cygwin ile C: \ içindeki bir dizine nasıl gidebilirim?


371

Ben onunla uğraşmak böylece PyQt4 yüklemeye çalışıyorum . Kurulum kılavuzu Sip'i kurmak zorunda olduğumu söyledi . Sip'i kurmanın son adımı make installkomutu kullanmaktır . Windows buna sahip değil, bu yüzden baktım ve gördüğüm her şeyin Cygwin'i kurmasını söyledi. Ben de yaptım. Ama ... yudum var C:\Python31\sip.

Bunu Cygwin komutundan çalıştırabilir miyim? Öyleyse, bunu nasıl yaparım?

Yoksa bunu normal windows komut isteminden çalıştırabilir miyim? Eğer öyleyse, bunu nasıl yapabilirim?

Yanıtlar:



196

Cygwin ile bana çok yardımcı olacak bir şey ekleyeceğim. Yeni bir sistem kurarken bunu her zaman yaparım

ln -s /cygdrive/c /c

Bu yaratır sembolik bir bağlantı için /cygdrive/cadında yeni bir dosya ile /c(ev dizininde)

O zaman bunu kabuğunuzda yapabilirsiniz

cd /c/Foo
cd /c/

Çok kullanışlı.


1
Bunun, dosyalara / dizinlere cnormal başvuru yapma yeteneği ile sahip olmanızı engellediğini unutmayın .
Raj

1
Geçenlerde MSYS2 yükledim ve bu varsayılan davranış, /cygdriveaslında çalışmıyor ...
joeeey


49

Zaten bir yanıtı kabul ettiniz, ama ben sadece aşağıdakilerin de Cygwin'de çalıştığını söylemiş olduğumu düşündüm:

cd "C:\Foo"

cd /cygdrive/cYöntemin daha iyi olduğunu düşünüyorum , ancak bazen bunu da yapabileceğinizi bilmek faydalı olabilir.



6

Muhtemelen bunu sık sık yapmak isteyeceğinizden, .bashrc dosyanıza aşağıdaki gibi takma adlar ekleyin:

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

Sonra sadece komut satırına yazabilirsiniz:

cdc

3

.Bashrc içinde bir değişken tanımlayın:

export C=/cygdrive/c

o zaman kullanabilirsiniz

cd $C/

ve sekme otomatik olarak doğru şekilde tamamlanır (lütfen sonuna / ekleyin


2

İlgili bir notta şunları da beğenebilirsiniz:

shopt -s autocd

Bu sadece dir yazarak bir dir cd cd sağlar

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

Bunu yapmak kalıcıdır. ~/.bashrc



1

HOME klasörünüzde "overrideBashCdForWindowsPaths" adlı bir dosya oluşturun. Aşağıdaki satırları bu dosyaya yapıştırın ve kaydedin:

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

Ardından, HOME klasörünüzdeyken bir terminale aşağıdaki komutu yazın:

echo ". overrideBashCdForWindowsPaths" >> .bashrc

Terminalinizi kapatın ve yeni bir tane açın. Artık yazarak bu Windows klasörüne kolayca geçebilirsiniz.

cd C:\Python31\sip

Komut dosyası son komutu okur, yolu ayıklar ve Cygwin'in yol dönüştürme aracına iletir. "Cd" işlevini isimlendirerek, Bash'ın yerleşik "cd" ını geçersiz kılıyor ve son çağrıyı gerçek çağrıya devrediyoruz.


Teşekkürler @KoenigGunther, işe yarıyor! Ama dizin değiştirmek için olsa biraz yavaş. Alıntı yapmak gibi daha hızlı yapmanın bir yolu var mı? ör.cd "C:\Python31\sip"
user11392987

1

Sevdiğim biri: cd C:

Linux gibi hissetmek için yap:

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

ve bunu şöyle kullanın: ~/folder/..


0

Burada değinilmesi gereken bir şey, Cygwin'in cygpath, özellikle Cygwin altında çalışan Bash komut dosyalarında aralıklı Windows yollarını düzgün işlememesi. İşin püf noktası Cygwin, Bash betiklerindeki alıntıları nasıl yorumladığını anlamaktır .

Aşağıdaki gelmez değil çalışır:

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

Ancak bu işe yarar:

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

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

Bildiğim kadarıyla, şu anda cygpathbash komut dosyası bağlamındaki boşlukları düzgün bir şekilde işleyebilen bilinen bir geçici çözüm yoktur , ancak komut dosyalarınızda tırnak işaretleri kullanabilirsiniz.


0

$cd C:\

> (Bu satırı gördüğünüzde enter tuşuna basın)

Şimdi C sürücüsündesiniz.


>Satırın sonundaki ters eğik çizgi satırsonu kaçan çünkü ... olduğunu
Berg den Gert van
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.