unix如何處理具有空間和參數的完整路徑名?
在windows中,我們引用了路徑並在之後添加了命令行參數,它在unix中如何?unix如何處理具有空間和參數的完整路徑名?
"c:\foo folder with space\foo.exe" -help
更新:
我的意思是我怎麼認識的命令行參數的路徑。
unix如何處理具有空間和參數的完整路徑名?
在windows中,我們引用了路徑並在之後添加了命令行參數,它在unix中如何?unix如何處理具有空間和參數的完整路徑名?
"c:\foo folder with space\foo.exe" -help
更新:
我的意思是我怎麼認識的命令行參數的路徑。
如果您願意,您可以引用它,或者您可以使用前面的\來避開空格,但大多數UNIX路徑(不包括Mac OS X)都沒有空格。
/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 OS X
我不知道你的意思怎麼樣識別路徑 - 如果上述任何路徑作爲參數傳遞給一個程序shell會將整個字符串放入一個變量中 - 您不必分析多個參數即可獲取整個路徑。
你可以引用整個路徑在Windows或者你可以逃脫的場所,如在:
/foo\ folder\ with\ space/foo.sh -help
兩種方法都行!
您可以用反斜槓引用它像你的Windows上面的例子,或逃避的空間:
"/foo folder with space/foo" --help
/foo\ folder\ with\ space/foo --help
我認爲你的意思是「逃離空間」 – cowlinator 2014-09-12 19:57:22
由於空格用來分隔命令行參數,它們必須從殼逃跑。這可以使用反斜槓()或引號來完成:
"/path/with/spaces in it/to/a/file"
somecommand -spaced\ option
somecommand "-spaced option"
somecommand '-spaced option'
這是假設你從shell運行。如果您正在編寫代碼,則通常可以直接傳遞參數,以避免該問題:
perl中的示例。而不是:
print("code sample");
system(「somecommand -spaced option」);
你可以做
print("code sample");
系統( 「somecommand」, 「-spaced選項」);
由於當您通過system()調用列表時,它不會像使用單個參數調用一樣在空間上中斷參數。
還要小心雙引號 - 在Unix shell上這會擴展變量。有些是顯而易見的(如$foo
和\t
),但有些不是(如!foo
)。
爲了安全起見,請使用單引號!
如果正常的方式不起作用,嘗試用%20
代替空格。
這對我來說,在處理SSH和其他域樣式的命令如auto_smb
。
我也想指出的是,如果你使用的命令行參數的shell腳本(sh文件)的一部分,那麼在腳本,你需要用引號括起來的說法。所以,如果您的命令看起來像
>scriptName.sh arg1 arg2
而且ARG1是你的路徑中有空格的話中的shell腳本,你需要把它稱爲「$ ARG1」,而不是$ ARG1
你能舉一個例子來說明你的意思是「從命令行參數中識別一條路徑」嗎?每個人都回答了第一部分,可能值得開始一個新的問題。 – rjmunro 2008-09-08 23:33:45