Làm cách nào để điều hướng đến một thư mục trong C: \ với Cygwin?


371

Tôi đang cố gắng cài đặt PyQt4 để tôi có thể giải quyết vấn đề. Hướng dẫn cài đặt cho biết tôi phải cài đặt Sip . Bước cuối cùng để cài đặt Sip là sử dụng make installlệnh. Windows không có điều đó, vì vậy tôi đã tra cứu nó và mọi thứ tôi thấy đều nói để cài đặt Cygwin. Tôi cũng vậy. Nhưng ... từng ngụm C:\Python31\sip.

Tôi có thể chạy cái này từ lệnh Cygwin không? Nếu vậy, làm thế nào tôi làm điều đó?

Hoặc tôi có thể chạy nó từ dấu nhắc lệnh windows bình thường không? Nếu vậy, làm thế nào tôi sẽ đi về điều đó?

Câu trả lời:



196

Tôi sẽ thêm một cái gì đó giúp tôi rất nhiều với Cygwin. Bất cứ khi nào thiết lập một hệ thống mới, tôi luôn luôn làm điều này

ln -s /cygdrive/c /c

Điều này tạo ra một liên kết tượng trưng đến /cygdrive/cvới một tệp mới được gọi /c(trong thư mục chính)

Sau đó, bạn có thể làm điều này trong vỏ của bạn

cd /c/Foo
cd /c/

Rất tiện dụng.


1
Lưu ý rằng điều này ngăn bạn có các tệp / thư mục được đặt tên cvới khả năng tham chiếu chúng bình thường.
Raj

1
Gần đây tôi đã cài đặt MSYS2 và đây là hành vi mặc định, /cygdrivetrong thực tế không hoạt động ...
joeeey


49

Bạn đã chấp nhận một câu trả lời, nhưng tôi chỉ nghĩ rằng tôi muốn đề cập rằng những điều sau đây cũng hoạt động trong Cygwin:

cd "C:\Foo"

Tôi nghĩ rằng cd /cygdrive/cphương pháp này tốt hơn, nhưng đôi khi thật hữu ích khi biết rằng bạn cũng có thể làm điều này.



6

Vì có thể bạn sẽ muốn làm điều này thường xuyên, hãy thêm bí danh vào tệp .bashrc của bạn, như:

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

Sau đó, bạn có thể chỉ cần gõ vào dòng lệnh:

cdc

3

Xác định một biến trong .bashrc:

export C=/cygdrive/c

sau đó bạn có thể sử dụng

cd $C/

và tab tự động hoàn thành chính xác (vui lòng bao gồm / ở cuối)


2

Trên một lưu ý liên quan, bạn cũng có thể thích:

shopt -s autocd

Điều này cho phép bạn cd một dir bằng cách chỉ cần gõ vào dir

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

Để thực hiện được bền bỉ, bạn nên thêm nó vào ~/.bashrc



1

Tạo một tệp có tên "overrideBashCdForWindowsPaths" trong thư mục HOME của bạn. Dán các dòng sau vào tập tin đó và lưu nó:

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

Tiếp theo, nhập lệnh sau vào một thiết bị đầu cuối, trong khi bạn đang ở trong thư mục HOME:

echo ". overrideBashCdForWindowsPaths" >> .bashrc

Đóng thiết bị đầu cuối của bạn và mở một cái mới. Bây giờ bạn có thể dễ dàng thay đổi vào thư mục Windows đó bằng cách nhập

cd C:\Python31\sip

Kịch bản đọc lệnh cuối cùng, trích xuất đường dẫn và chuyển nó tới công cụ chuyển đổi đường dẫn của Cygwin. Bằng cách đặt tên cho hàm "cd", chúng tôi sắp xếp 'ghi đè' hàm dựng sẵn "Bash" của Bash và ủy thác cuộc gọi thực tế cho nó ở dòng cuối cùng.


Cảm ơn @KoenigGunther, nó hoạt động! Nhưng một chút chậm mặc dù để thay đổi thư mục. Có cách nào để làm cho nó nhanh hơn giống như sử dụng trích dẫn? ví dụcd "C:\Python31\sip"
user11392987

1

Người tôi thích là: cd C:

Để có linux như feel thì làm:

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

và sử dụng như thế này: ~/folder/..


0

Một điều đáng nói ở đây là Cygwin cygpath, vẫn không xử lý các đường dẫn Windows cách đều nhau, đặc biệt là trong các tập lệnh Bash chạy dưới Cygwin. Bí quyết là hiểu cách Cygwindiễn giải các trích dẫn trong các tập lệnh Bash.

Những điều sau đây không hoạt động:

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

Nhưng điều này không hoạt động:

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

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

Theo tôi biết, hiện tại không có cách giải quyết nào được sử dụng cygpath, có thể xử lý đúng các khoảng trắng trong ngữ cảnh bash script nhưng bạn có thể sử dụng dấu ngoặc kép trong tập lệnh của mình.


0

$cd C:\

> (Nhấn enter khi bạn thấy dòng này)

Bây giờ bạn đang ở trong ổ C.


Các >là do dấu chéo ngược ở phần cuối của dòng thoát khỏi xuống dòng ...
van den Berg Gert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.