Как перейти в каталог в C: \ с Cygwin?


371

Я пытаюсь установить PyQt4, чтобы я мог возиться с ним. Руководство по установке говорит, что я должен был установить Sip . Последний шаг к установке Sip - использовать make installкоманду. В Windows такого нет, поэтому я посмотрел и все, что видел, говорило об установке Cygwin. Так я и сделал. Но ... глоток в C:\Python31\sip.

Можно ли запустить это из команды Cygwin? Если так, то как бы я это сделал?

Или я могу запустить это из обычной командной строки Windows? Если так, как бы я поступил об этом?

Ответы:



196

Я добавлю кое-что, что мне очень поможет с Cygwin. Всякий раз, когда я настраиваю новую систему, я всегда делаю это

ln -s /cygdrive/c /c

Это создает символическую ссылку на /cygdrive/cновый файл с именем /c(в домашнем каталоге)

Тогда вы можете сделать это в вашей оболочке

cd /c/Foo
cd /c/

Очень кстати.


1
Обратите внимание, что это препятствует тому, чтобы у вас были имена файлов / каталогов cс возможностью нормальной ссылки на них.
Радж

1
Я недавно установил MSYS2, и это было поведение по умолчанию, /cygdriveфактически не работающее ...
joeeey

136

cd c: поддерживается сейчас в Cygwin


Действительно для cd e:и подсказка будет/cygdrive/e
Kiquenet

49

Вы уже приняли ответ, но я просто подумал упомянуть, что в Cygwin также работает следующее:

cd "C:\Foo"

Я думаю, что cd /cygdrive/cметод лучше, но иногда полезно знать, что вы можете сделать это тоже.



6

Как вы, вероятно, захотите делать это часто, добавьте псевдонимы в ваш файл .bashrc, например:

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

Затем вы можете просто набрать в командной строке:

cdc

3

Определите переменную в .bashrc:

export C=/cygdrive/c

тогда вы можете использовать

cd $C/

и вкладка автоматически заполняется правильно (пожалуйста, включите / в конце)


2

В соответствующей заметке вам также может понравиться:

shopt -s autocd

Это позволяет вам сделать CD, просто набрав в директории

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

Чтобы сделать это постоянно, вы должны добавить его в свой ~/.bashrc



1

Создайте файл с именем «overrideBashCdForWindowsPaths» в папке HOME. Вставьте следующие строки в этот файл и сохраните его:

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

Затем введите следующую команду в терминале, находясь в папке HOME:

echo ". overrideBashCdForWindowsPaths" >> .bashrc

Закройте свой терминал и откройте новый. Теперь вы можете легко перейти в эту папку Windows, просто набрав

cd C:\Python31\sip

Сценарий читает последнюю команду, извлекает путь и передает его в инструмент преобразования пути Cygwin. Называя функцию «cd», мы сортируем встроенную в Bash «cd» и делегируем фактический вызов в самой последней строке.


Спасибо @KoenigGunther, это работает! Но немного медленно, хотя для смены каталога. Есть ли способ сделать это быстрее, как с помощью цитаты? напримерcd "C:\Python31\sip"
user11392987

1

То, что мне нравится, это: cd C:

Чтобы Linux чувствовал себя так, сделайте:

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

и используйте это как: ~/folder/..


0

Здесь стоит упомянуть, что Cygwin по- cygpathпрежнему не обрабатывает разделенные пути Windows должным образом, особенно в скриптах Bash, работающих под Cygwin. Хитрость заключается в том, чтобы понять, как Cygwinинтерпретировать кавычки в скриптах Bash.

Следующее не работает:

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

Но это работает:

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

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

Насколько я знаю, в настоящее время нет известного обходного пути cygpath, который может правильно обрабатывать пробелы в контексте сценариев bash, но вы можете использовать кавычки в своих сценариях.


0

$cd C:\

> (Нажмите Enter, когда увидите эту строку)

Теперь вы находитесь на диске C.


Дело в >том, что обратный слеш в конце строки ускользнул от новой строки ...
Герт ван ден Берг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.