我用过此链接用于防止程序使用 Ubuntu/Linux 上的互联网连接。
但是我仍然无法完成最后一步,如下所示:
$ ni wine C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe
bash: syntax error near unexpected token `('
$ ni "wine C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `wine C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe'
$ ni wine "C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"
Usage: wine PROGRAM [ARGUMENTS...] Run the specified program
wine --help Display this help and exit
wine --version Output version information and exit
$ ni wine FoxitReader.exe
Usage: wine PROGRAM [ARGUMENTS...] Run the specified program
wine --help Display this help and exit
wine --version Output version information and exit
答案1
语法错误意味着 shell 无法解释您的命令。这是因为 shell 在解析命令行时会根据空格拆分单词。如果没有引号,参数的每个部分(例如C:\Program
)都会被视为单独的参数。您可以使用引号来防止单词拆分:
ni wine "C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"
这会将两个参数传递给ni
命令:wine
以及 FoxitReader 的完整 Windows 路径。
当您尝试在 之前放置开头的双引号时wine
,shell 会将 整个 视为wine C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe
该ni
命令的一个参数。
如果你想避免将来出现类似的问题,我建议你查看 Greg 的 wiki,以获得关于shell 如何处理空格。您可能无法全部理解,但您仍然应该了解为什么、何时以及如何避免单词分割问题。
答案2
Anthony 说的没错,你可以使用“”来表示整个路径是一个字符串,但也许这值得考虑,因为你可以使用这种方法来完成你的路径:unix 终端中有许多特殊字符,包括空格、*、换行符和其他字符。你可以在它们前面输入“\”来忽略它们。因此,如果文件夹名为“My test”,则可以使用cd "My test"
或cd My\ test
来完成。但在 wine 中,你可能必须使用 Michaelsoft Binbows 约定“”。(无意冒犯,只是微软的笑话:D)
“专业提示 :D” 有时您可能出于某种原因想要写一个“\”字符。要写它,您必须保护它,因此您需要在它前面再放一个“\”。因此,如果您想写“受保护的字符 \”,您实际上可以这样做echo Protected character \\
。请注意,echo 接受字符串参数,因此您不必保护空格。
希望能帮助到你 :)