2015-06-27 61 views
0
~/Desktop $ echo */* 
unix/junk unix/save unix/xyxxy 

我想取消斜槓,以便shell不再打印目錄的文件。我發現,echo:「爲什麼需要使用\而不是來取消/字符?」

~/Desktop $ echo *\/* 
unix/junk unix/save unix/xyxxy 

不起作用 ,而

~/Desktop $ echo *\\/* 
*\/* 

做這項工作。

有人可以解釋爲什麼會發生這種情況嗎?

回答

4

其實,你'試圖取消這裏並不是\角色的特殊行爲,而是兩個*角色的特殊行爲!

我,我會用

echo '*/*' 

echo "*/*" 

或者,如果你想使用\,最好的方式做這將是

echo \*/\* 

其實,因爲幾乎肯定沒有名爲「*」的文件或目錄,所以通常可以離開w第i只

echo \*/* 

echo */\* 

當你寫

echo *\\/* 

你問到看到所有的任何子目錄在子目錄名稱中\結束的所有文件名。有可能沒有任何這些,但如果你想,看看發生了什麼事情,嘗試調用

mkdir x\\ 
touch x\\/y 
touch x\\/z 

,然後你

echo *\\/* 

再做。你應該看到x\/y x\/z

+0

您認爲哪一種是上述最佳做法?使用''或\爲什麼? – Molnia

+0

@Molnia:通常,我更喜歡在大部分時間使用''「',特別是如果我想要擴展shell變量的話。如果我絕對不想在內部擴展shell變量,或者在一些複雜的情況下嵌套''''和'''''',我會使用''''。如果可以的話,我通常會遠離「自己」,因爲他們中的不止兩個人會感到困惑,並且難以真正快速閱讀。 –

-1

我之前的回答並沒有讓自己清楚。什麼是與最後一個命令發生

~/Desktop $ echo *\\/* 
*\/* 

基本上\是逃避未來\*\/*纔剛剛打印像任何其他普通字符串就像它*something或任何其他字符串發生abc

0

單個反斜槓用於特殊序列,例如\n。所以要插入一個真正的轉義反斜槓,你必須寫\\

0

如果你想要的是打印您的桌面內的文件夾,然後用echo */

echo *\\/*將打印任何withing與\echo *\/*將打印任何withing任何文件夾中的反斜槓結尾的文件夾(\)是沒有sc 012

相關問題