使用 cygwin 导航到目录 "C/Program Files (x86)" 时出现问题?

Issue while navigating to a directory "C/Program Files (x86)" with cygwin?

我正在尝试在 cygwin 中导航到下面的路径,

C/Program Files (x86)/temp/lfc/utilities

但不幸的是,它显示以下错误

$ cd C/Program Files (x86)/temp/lfc/utilities
bash: syntax error near unexpected token `('

你能告诉我这里有什么问题吗..

命令:

cd C/Program Files (x86)/temp/lfc/utilities

正在尝试使用 三个 个参数而不是正确的参数调用 cd

  • C/Program
  • 文件
  • (x86)/temp/lfc/utilities 这些参数中的第三个包含导致 bash 一些悲伤的字符 - 它们实际上被定义为元字符,并且根据 bash doco:

Each of the metacharacters listed above under DEFINITIONS has special meaning to the shell and must be quoted if it is to represent itself.

只需用引号将所有内容括起来,例如:

cd '/cygdrive/C/Program Files (x86)/temp/lfc/utilities'

您会注意到我还为它添加了 CygWin cygdrive 安装点作为前缀。我相当确定仍然需要它,至少从我几个月前安装的版本来看是这样。

Cygwin 使用 POSIX 路径命名法。要轻松地将 Windows 路径转换为 ​​Cygwin 路径,您可以使用 cygpath 工具:

$ cygpath 'C:\Program Files\foo'
/cygdrive/c/Program Files/foo

此工具还可以将 POSIX 路径转换为 ​​Windows:

$ cygpath -w '/cygdrive/c/Program Files/foo'
C:\Program Files\foo

第三种解决方案是 drag and drop 文件或文件夹从 Windows 资源管理器直接进入您的 mintty 终端。你会把你的 Windows 路径直接转换成 Cygwin 的格式。

您也可以像这样使用 PROGRA~1PROGRA~2PROGRA~3

  • cd /cygdrive/c/PROGRA~1 等同于 cd /cygdrive/c/Programmes
  • cd /cygdrive/c/PROGRA~2 等同于 cd /cygdrive/c/Program\ Files\ \(x86\)
  • cd /cygdrive/c/PROGRA~3 等同于 cd /cygdrive/c/ProgramData

您可以直接使用 windows 路径:

cd $(cygpath -u "C:\Program Files (x86)\temp\lfc\utilities")

这对环境变量很有用,例如:

cd  $(cygpath -u "$USERPROFILE")/Downloads
cd "$(cygpath -u "$PROGRAMFILES")/Program Name"

你可以在https://cygwin.com/cygwin-ug-net/cygpath.html

上了解更多关于cygpath的信息