2013-10-18 28 views
1

正如標題所說,我正在尋找最可靠的方法來檢測文件系統是否區分大小寫,並提供給定的路徑。檢測文件系統是否區分大小寫的最佳方法

在過去,我用下面的髒招:

[ -e "/tmp" -a -e "/Tmp" ] && echo "Case insensitive" || echo "Case sensitive" 

其中一期工程,因爲系統通常不會同時具有/tmp/Tmp文件夾。這當然是最好的,而且對於任意路徑來說都是無用的,因爲它可能指向沒有任何文件夾的設備。

我在想的是做一些類似於獲取路徑的目錄(它應該存在)並以某種方式「翻轉」它的情況(所以大寫字母變成小寫,反之亦然),但我不知道如何做那個;我可以將所有低位更改爲高位,但如果目錄名已全部大寫,則不會有任何用處。

無論如何,我正在尋找關於如何檢測文件系統是否區分大小寫的最佳方法的建議,如果可能的話,最好不要創建臨時文件。

+0

你可以檢查一個合適的常規文件(創建如有必要),文件名的全部小寫和全部大寫的版本指的是相同的inode,如果同時存在(和你文件系統使用inode;否則,替換檢查兩個名稱是否指向同一文件的機制。 – chepner

+0

不幸的是我不能這樣做,因爲路徑可能不可寫。你的inode比較想法仍然可以爲我提供的路徑工作,使用大小寫版本,但是我不能將這兩個硬鏈接區分到同一個inode,它仍然比我更好至少遠遠! – Haravikk

回答

0
[ -e "${PWD^^}" ] && echo "Case insensitive" || echo "Case sensitive" 

Converting string case in Bash shell scripting

+0

如果'$ PWD'已經全部大寫,這不會告訴你任何事情。 – chepner

+0

感謝您的迴應,但不幸的是,我應該指定我不能依賴bash特有的功能。 – Haravikk

相關問題