我尝试在 Cygwin 中建立到 Notepad++ 的链接,但遇到以下错误:
KD@HPi7 /home/kd/ns-allinone-2.35
$ ln /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe np
ln: failed to create hard link ‘np’: File exists
KD@HPi7 /home/kd/ns-allinone-2.35
$ np
-bash: syntax error near unexpected token `x86\)/Notepad++/notepad++.exe'
我不知道为什么会发出错误,因为我在 Notepad++ 中输入的路径是 Cygwin 命令行中通过 Tab 键自动完成的结果。那么,问题可能出在哪里?
答案1
问题可能出在哪里?
ln /cygdrive/c/Program\ Files\ (x86)/Notepad++/notepad++.exe np
上述命令将不起作用,因为您还需要转义,(
并且)
这对 bash 具有特殊含义。
- Bash 将 视为
(
引入命令列表。 - 将命令列表放在括号内会导致创建子 shell,并且列表中的每个命令都会在该子 shell 中执行。由于列表是在子 shell 中执行的,因此变量赋值在子 shell 完成后不再有效。
- Bash 尝试执行
x86
以下应该有效:
ln /cygdrive/c/Program\ Files\ \(x86\)Notepad++/notepad++.exe np
进一步阅读
- Linux 的 Bash 命令行的 AZ 索引- 与 Bash 命令行相关的所有事物的绝佳参考。
- 括号- 使用括号对表达式进行分组和扩展。
- 引用- 转义字符、分隔符和引号。
答案2
我只是用了别名
alias np="/cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe"