如果名称中有空格,如何在bash中运行可执行文件?

如果名称中有空格,如何在bash中运行可执行文件?,bash,Bash,我正在Windows上从Cygwin运行bash。我希望在另一个目录中运行一个可执行程序,而不是我所在的目录,但是如果目录名包含空格,则似乎会出现问题。我可以从自己的目录(C:/someUser/myPrograms/Project Name With Spaces/)运行exe,没有问题 ./myFile.exe 但是,如果我在另一个目录(/cygdrive/c)中,并尝试使用完整的目录路径运行可执行文件,那么即使我用双引号引用名称来处理空格,它似乎也不起作用 ./"C:/someUser/

我正在Windows上从Cygwin运行bash。我希望在另一个目录中运行一个可执行程序,而不是我所在的目录,但是如果目录名包含空格,则似乎会出现问题。我可以从自己的目录(C:/someUser/myPrograms/Project Name With Spaces/)运行exe,没有问题

./myFile.exe
但是,如果我在另一个目录(/cygdrive/c)中,并尝试使用完整的目录路径运行可执行文件,那么即使我用双引号引用名称来处理空格,它似乎也不起作用

./"C:/someUser/myPrograms/Project Name With Spaces/myfile.exe"
-bash: ./C:someUser/myPrograms/Project Name With Spaces/myfile.exe: No such file or directory
如果我将./ls替换为ls,则查找可执行文件不会有问题,因此我知道我输入了正确的路径名

是否有其他方法可以运行可执行文件来处理带空格的全名?

您需要引用它:

'some cmd'
最好确保可执行文件名及其路径不包含空格


但是这里的问题是你误解了
它指的是当前目录。由于您正在运行的路径不是当前文件夹的子文件夹,请删除前面的
/

您需要引用它:

'some cmd'
最好确保可执行文件名及其路径不包含空格



但是这里的问题是你误解了
它指的是当前目录。由于您正在运行的路径不是当前文件夹的子文件夹,请删除前面的
/

您可以使用转义,对于空格:
'\'

您可以使用转义,对于空格:
'\'

对于cygwin,您需要一个

"/cygdrive/c/someUser/myPrograms/Project Name With Spaces/myfile.exe"
/cygdrive/c/someUser/myPrograms/Project\ Name\ With\ Spaces/myfile.exe
"$(cygpath -u "C:\someUser\myPrograms\Project Name With Spaces\myfile.exe")"

对于cygwin,你会想要一个

"/cygdrive/c/someUser/myPrograms/Project Name With Spaces/myfile.exe"
/cygdrive/c/someUser/myPrograms/Project\ Name\ With\ Spaces/myfile.exe
"$(cygpath -u "C:\someUser\myPrograms\Project Name With Spaces\myfile.exe")"

“/”通常指的是当前目录。你在哪个目录?从路径和文件扩展名来看,您似乎正在Windows上运行。你用什么来运行bash?e、 g.Cygwin?“Git Bash Here”?如果您想知道
Bash
实现/仿真的最佳实践,应该回答上面的评论。通常,要么实现理解windows路径并将其作为命令接受,您只需要删除前导的
/
(例如:
git bash
),要么不理解,您应该使用更惯用的方式来处理可执行文件(例如:
Cygwin
,它通常理解引用的windows路径,但拒绝将它们作为命令接受)。还有多个其他实现,因此不容易生成通用答案。谢谢,我没有意识到这些实现会有所不同!我编辑了该问题,以反映我是从Cygwin运行它的。“/”通常指当前目录。您所在的目录是什么?从路径和文件扩展名来看,您似乎正在Windows上运行。您使用什么来运行bash?例如Cygwin?“Git bash Here”?如果您想知道
bash
实现/仿真的最佳实践,应回答上述评论。通常,要么实现理解windows路径并将其作为命令接受,然后您只需删除前导的
/
(例如:
git bash
)或者不是,您应该使用更惯用的方式来处理可执行文件(例如:
Cygwin
,它通常理解引用的windows路径,但拒绝接受它们作为命令)。有多个其他实现,因此生成通用答案并不容易。谢谢,我没有意识到这些实现会有所不同!我编辑了这个问题,以反映我是从Cygwin运行它的。这两个都有效,谢谢。[很抱歉,我最初没有指定Cygwin:我认为其他答案可能适用于'real'bash实现]。这两个答案都有效,谢谢。[很抱歉,我最初没有指定Cygwin:我认为其他答案可能适用于'real'bash实现]。