在unix系统上将目录存储在文件名中时,最佳做法是什么?目录路径是否应以斜线结尾?
TMP="/tmp/pasteTmp/"
允许你这样做:
cd "$TMP$fileName"
TMP="/tmp/pasteTmp"
允许你这样做(用额外的斜线看起来不那么干净):
cd "$TMP/$fileName"
但也允许你这样做:
cd "$TMP/actualFileName"
我认为使用第一种方法是不可能的。
答案 0 :(得分:11)
没关系。相反,你应该总是假设在使用路径时添加自己的斜杠不存在。 / foo //相当于/ foo /所以它可以解决。
答案 1 :(得分:3)
在正常使用中引用目录时,不包括斜杠:我的主目录是/home/andy
,而不是/home/andy/
。如果你编写的脚本假设有斜杠,那么迟早你会忘记包含它并让自己大吃一惊。
我不确定我是否同意你的额外斜线“似乎不太干净”。当您不使用变量时,您希望使用斜杠来分隔目录和文件名;当目录名存储在shell变量中时,我仍然发现用分隔部分的斜杠进行读写是很自然的。
答案 2 :(得分:3)
当您使用100个脚本和大量库和可执行文件处理大型怪物应用程序时,您开始更多地担心导致较少痛苦而不是“看起来不那么干净”的原因。我同意双斜线看起来很有趣,但现实是Unix并不关心。我宁愿假设尾随斜杠不在那里,并且知道当我自己添加一个斜线时它仍然可以工作,而不是希望每个人都记得包含一个,然后当其他人忘记添加尾部斜杠时我的代码会中断。
让自己处于一种可以控制代码是否有效的情况。取决于其他人遵循惯例导致头痛和凌晨3点支持呼叫,当他们不可避免地没有。