首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >unix如何处理带空格和参数的完整路径名称?

unix如何处理带空格和参数的完整路径名称?
EN

Stack Overflow用户
提问于 2008-09-08 21:57:42
回答 7查看 114.9K关注 0票数 25

unix如何处理带空格和参数的完整路径名称?

在windows中,我们引用路径并在之后添加命令行参数,在unix中如何?

代码语言:javascript
运行
复制
 "c:\foo folder with space\foo.exe" -help

更新:

我的意思是如何从命令行参数中识别路径。

EN

回答 7

Stack Overflow用户

发布于 2008-09-08 22:00:59

您可以像上面的Windows示例那样引用它,或者用反斜杠转义空格:

代码语言:javascript
运行
复制
 "/foo folder with space/foo" --help
 /foo\ folder\ with\ space/foo --help
票数 43
EN

Stack Overflow用户

发布于 2008-09-08 21:58:52

如果愿意,可以引用,也可以用前面的\来转义空格,但是大多数UNIX路径(Mac除外)中没有空格。

代码语言:javascript
运行
复制
/Applications/Image\ Capture.app/Contents/MacOS/Image\ Capture

"/Applications/Image Capture.app/Contents/MacOS/Image Capture"

/Applications/"Image Capture.app"/Contents/MacOS/"Image Capture"

在Mac下,所有文件都引用相同的可执行文件。

我不确定识别路径是什么意思--如果将上述任何路径作为参数传递给程序,shell将把整个字符串放入一个变量中--您不必解析多个参数才能得到整个路径。

票数 11
EN

Stack Overflow用户

发布于 2008-09-08 22:04:29

由于空格用于分隔命令行参数,因此它们必须从shell中转义。这可以通过反斜杠()或引号来完成:

代码语言:javascript
运行
复制
"/path/with/spaces in it/to/a/file"
somecommand -spaced\ option
somecommand "-spaced option"
somecommand '-spaced option'

这是假设你是在逃避一个外壳。如果您正在编写代码,通常可以直接传递参数,从而避免问题:

perl中的示例。而不是做:

print("code sample");系统(“-spaced选项”);

你可以做到

print("code sample");系统(“somecommand”、"-spaced选项“);

因为当您传递system()调用列表时,它不会像单个参数调用那样破坏空格上的参数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档