如何使用Cygwin导航到C:\中的目录?


370

我正在尝试安装PyQt4,这样我就可以解决它。安装指南说我必须安装Sip安装Sip的最后一步是使用make install命令。Windows没有该功能,因此我进行了查找,并说了所有安装Cygwin的内容。所以我做了。但是... s饮在C:\Python31\sip

我可以通过Cygwin命令运行它吗?如果是这样,我该怎么做?

还是可以从正常的Windows命令提示符下运行它?如果是这样,我将如何处理?

Answers:



195

我将添加一些对Cygwin很有帮助的东西。每当建立新系统时,我总是这样做

ln -s /cygdrive/c /c

这将创建一个符号链接/cygdrive/c一个名为新文件/c(主目录)

然后,您可以在外壳中执行此操作

cd /c/Foo
cd /c/

非常便利。


1
请注意,这将阻止您c使用正常引用文件/目录的能力来命名它们。
拉吉2013年

1
我最近安装了MSYS2,这是默认行为,/cygdrive实际上不起作用...
joeeey


49

您已经接受了答案,但我只是想提一下以下内容在Cygwin中也适用:

cd "C:\Foo"

我认为该cd /cygdrive/c方法更好,但是有时知道您也可以这样做很有用。



6

您可能经常需要这样做,因此可以将别名添加到.bashrc文件中,例如:

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

然后,您可以在命令行中键入:

cdc


2

在相关说明中,您可能还喜欢:

shopt -s autocd

这使您可以通过仅在目录中键入cd目录

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

要使之持久,应将其添加到 ~/.bashrc



1

在您的HOME文件夹中创建一个名为“ overrideBashCdForWindowsPaths”的文件。将以下行粘贴到该文件中并保存:

#!/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路径,尤其是在Cygwin下运行的Bash脚本中。诀窍是了解如何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脚本上下文中的空格,但是您可以在脚本中使用引号。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.