unix如何处理带空格和参数的完整路径名称?
在windows中,我们引用路径并在之后添加命令行参数,在unix中如何?
"c:\foo folder with space\foo.exe" -help
更新:
我的意思是如何从命令行参数中识别路径。
发布于 2008-09-08 22:00:59
您可以像上面的Windows示例那样引用它,或者用反斜杠转义空格:
"/foo folder with space/foo" --help
/foo\ folder\ with\ space/foo --help
发布于 2008-09-08 21:58:52
如果愿意,可以引用,也可以用前面的\来转义空格,但是大多数UNIX路径(Mac除外)中没有空格。
/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将把整个字符串放入一个变量中--您不必解析多个参数才能得到整个路径。
发布于 2008-09-08 22:04:29
由于空格用于分隔命令行参数,因此它们必须从shell中转义。这可以通过反斜杠()或引号来完成:
"/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()调用列表时,它不会像单个参数调用那样破坏空格上的参数。
https://stackoverflow.com/questions/50794
复制相似问题