~/Desktop $ echo */*
unix/junk unix/save unix/xyxxy
我想取消斜槓,以便shell不再打印目錄的文件。我發現,echo:「爲什麼需要使用\而不是來取消/字符?」
~/Desktop $ echo *\/*
unix/junk unix/save unix/xyxxy
不起作用 ,而
~/Desktop $ echo *\\/*
*\/*
做這項工作。
有人可以解釋爲什麼會發生這種情況嗎?
~/Desktop $ echo */*
unix/junk unix/save unix/xyxxy
我想取消斜槓,以便shell不再打印目錄的文件。我發現,echo:「爲什麼需要使用\而不是來取消/字符?」
~/Desktop $ echo *\/*
unix/junk unix/save unix/xyxxy
不起作用 ,而
~/Desktop $ echo *\\/*
*\/*
做這項工作。
有人可以解釋爲什麼會發生這種情況嗎?
其實,你'試圖取消這裏並不是\
角色的特殊行爲,而是兩個*
角色的特殊行爲!
我,我會用
echo '*/*'
或
echo "*/*"
或者,如果你想使用\
,最好的方式做這將是
echo \*/\*
其實,因爲幾乎肯定沒有名爲「*」的文件或目錄,所以通常可以離開w第i只
echo \*/*
或
echo */\*
當你寫
echo *\\/*
你問到看到所有的任何子目錄在子目錄名稱中\
結束的所有文件名。有可能沒有任何這些,但如果你想,看看發生了什麼事情,嘗試調用
mkdir x\\
touch x\\/y
touch x\\/z
,然後你
echo *\\/*
再做。你應該看到x\/y x\/z
!
我之前的回答並沒有讓自己清楚。什麼是與最後一個命令發生
~/Desktop $ echo *\\/*
*\/*
基本上\
是逃避未來\
和*\/*
纔剛剛打印像任何其他普通字符串就像它*something
或任何其他字符串發生abc
單個反斜槓用於特殊序列,例如\n
。所以要插入一個真正的轉義反斜槓,你必須寫\\
。
如果你想要的是打印您的桌面內的文件夾,然後用echo */
echo *\\/*
將打印任何withing與\
而echo *\/*
將打印任何withing任何文件夾中的反斜槓結尾的文件夾(\
)是沒有sc 012
您認爲哪一種是上述最佳做法?使用''或\爲什麼? – Molnia
@Molnia:通常,我更喜歡在大部分時間使用''「',特別是如果我想要擴展shell變量的話。如果我絕對不想在內部擴展shell變量,或者在一些複雜的情況下嵌套''''和'''''',我會使用''''。如果可以的話,我通常會遠離「自己」,因爲他們中的不止兩個人會感到困惑,並且難以真正快速閱讀。 –