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?

Jawaban:



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.


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


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



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

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)


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



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.


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/..


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.


0

$cd C:\

> (Tekan enter ketika Anda melihat garis ini)

Anda sekarang berada di drive C.


Ini >karena garis miring terbalik pada akhir baris lolos dari baris baru ...
Gert van den Berg
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.