Bagaimana cara menavigasi ke direktori di C: \ dengan Cygwin?

371

Saya mencoba menginstal PyQt4 sehingga saya bisa dipusingkan dengan itu. Panduan instalasi mengatakan saya harus menginstal Sip . Langkah terakhir untuk menginstal Sip adalah menggunakan make installperintah. Windows tidak memilikinya, jadi saya mencarinya dan semua yang saya lihat mengatakan untuk menginstal Cygwin. Jadi saya lakukan. Tapi ... sip masuk C:\Python31\sip.

Bisakah saya menjalankan ini dari perintah Cygwin? Jika demikian, bagaimana saya melakukannya?

Atau bisakah saya menjalankan ini dari command prompt windows normal? Jika demikian, bagaimana saya melakukannya?

Andrew
sumber

Jawaban:

721

Menggunakan:

cd /cygdrive/c
Otávio Décio
sumber
90
Anda juga dapat menggunakancd c:/
ihaveitnow
dan pastikan tidak ada ruang di dalam dan setelah/cygdrive/c
DeltaCap019
196

Saya akan menambahkan sesuatu yang banyak membantu saya dengan cygwin. Setiap kali mengatur sistem baru, saya selalu melakukan ini

ln -s /cygdrive/c /c

Ini membuat tautan simbolis ke /cygdrive/cdengan file baru yang disebut /c(di direktori home)

Maka Anda dapat melakukan ini di shell Anda

cd /c/Foo
cd /c/

Sangat berguna.

karoberts
sumber
1
Perhatikan bahwa ini mencegah Anda memiliki nama file / direktori cdengan kemampuan referensi mereka secara normal.
Raj
1
Saya baru-baru ini menginstal MSYS2 dan ini adalah perilaku default, dengan /cygdrivenyatanya tidak berfungsi ...
joeeey
136

cd c: didukung sekarang di cygwin

netawater
sumber
Berlaku untuk cd e:dan cepat akan/cygdrive/e
Kiquenet
49

Anda sudah menerima jawaban, tapi saya pikir saya akan menyebutkan bahwa yang berikut ini juga berfungsi di Cygwin:

cd "C:\Foo"

Saya pikir cd /cygdrive/cmetode ini lebih baik, tetapi kadang-kadang berguna untuk mengetahui bahwa Anda dapat melakukan ini juga

Mark Byers
sumber
7

Anda bisa menggunakannya

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

Karena Anda mungkin ingin sering melakukan ini, tambahkan alias ke file .bashrc Anda, seperti:

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

Kemudian Anda bisa mengetik di baris perintah:

cdc
Ellis
sumber
3

Tentukan variabel dalam .bashrc:

export C=/cygdrive/c

maka Anda bisa menggunakannya

cd $C/

dan tab pelengkapan otomatis dengan benar (harap sertakan / di akhir)

Paco Zarate
sumber
2

Pada catatan terkait, Anda mungkin juga menyukai:

shopt -s autocd

Ini memungkinkan Anda untuk melakukan cd dir dengan hanya mengetik dir

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

Agar tetap, Anda harus menambahkannya ke ~/.bashrc

Benjamin Goodacre
sumber
1

Anda bisa mencoba ini

/cygdrive/c/directoryname
jones tionne
sumber
1

Buat file bernama "overrideBashCdForWindowsPaths" di folder HOME Anda. Rekatkan baris berikut ke dalam file itu dan simpan:

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

Selanjutnya, ketikkan perintah berikut di terminal, saat Anda berada di folder HOME Anda:

echo ". overrideBashCdForWindowsPaths" >> .bashrc

Tutup terminal Anda dan buka yang baru. Anda sekarang dapat dengan mudah mengubah ke folder Windows itu hanya dengan mengetik

cd C:\Python31\sip

Script membaca perintah terakhir, mengekstrak path dan meneruskannya ke alat konversi path Cygwin. Dengan memberi nama fungsi "cd" kami mengurutkan 'override' Bash's builtin "cd" dan mendelegasikan panggilan aktual untuknya di baris terakhir.

KoenigGunther
sumber
Terima kasih @KoenigGunther, berhasil! Tetapi agak lambat meskipun untuk mengubah direktori. Apakah ada cara untuk membuatnya lebih cepat seperti menggunakan penawaran? misalnyacd "C:\Python31\sip"
user11392987
1

Yang saya suka adalah: cd C:

Untuk memiliki linux like feel, lakukan:

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

dan gunakan ini seperti: ~/folder/..

John Tribe
sumber
0

Sesuatu yang layak disebutkan di sini adalah bahwa Cygwin cygpath, masih tidak menangani jalur Windows spasi dengan benar, terutama dalam skrip Bash yang berjalan di bawah Cygwin. Caranya adalah dengan memahami bagaimana Cygwinmenafsirkan kutipan dalam skrip Bash.

Berikut ini tidak berfungsi:

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

Tetapi ini berhasil:

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

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

Sejauh yang saya tahu, saat ini tidak ada solusi yang diketahui cygpath, yang dapat menangani spasi dalam konteks skrip bash dengan benar, tetapi Anda dapat menggunakan kutipan dalam skrip Anda.

not2qubit
sumber
0

$cd C:\

> (Tekan enter ketika Anda melihat garis ini)

Anda sekarang berada di drive C.

wwei23
sumber
Ini >karena garis miring terbalik pada akhir baris lolos dari baris baru ...
Gert van den Berg