Какова лучшая практика при хранении каталога в имени файла в системе Unix? Путь к каталогу должен закончиться в наклонной черте?
TMP="/tmp/pasteTmp/"
который позволяет Вам делать:
cd "$TMP$fileName"
TMP="/tmp/pasteTmp"
который позволяет Вам делать (с дополнительной наклонной чертой, которая кажется менее чистой):
cd "$TMP/$fileName"
но также и позволяет Вам делать:
cd "$TMP/actualFileName"
То, которое я думаю, является невозможным использованием первого метода.
это не имеет значения. Вместо этого вы всегда должны предполагать, что конечная косая черта отсутствует при использовании пути, добавляя свой собственный. / foo // эквивалентно / foo /, так что это работает.
Когда вы работаете над большим приложением-монстром с сотнями скриптов и множеством библиотек и исполняемых файлов, вы начинаете больше беспокоиться о том, что причиняет меньше боли, чем о том, что «кажется менее чистым». Я согласен, что двойная косая черта выглядит забавно, но на самом деле Unix это не волнует. Я бы предпочел предположить, что конечной косой черты нет и знать, что она все равно будет работать, когда я сам добавлю ее, чем надеюсь, что все вспомнили, чтобы включить ее, а затем мой код сломается, когда кто-то забудет добавить конечную косую черту.
Поставьте себя в ситуацию, когда вы контролируете, будет ли ваш код работать. Зависимость от других, которые следуют соглашению, приводит к головной боли и звонкам в службу поддержки в 3 часа ночи, когда они неизбежно этого не делают.
Когда вы ссылаетесь на каталог при обычном использовании, вы не включаете косую черту: мой домашний каталог - / home / andy
, а не / home / andy /
. Если вы пишете скрипты, предполагающие наличие косой черты в конце, рано или поздно вы забудете ее включить и удивитесь.
Я не уверен, что согласен с вами, что лишняя косая черта «кажется менее чистой». Когда вы не используете переменные, вы ожидаете, что имена каталогов и файлов будут разделяться косой чертой; когда имя каталога хранится в переменной оболочки, я все еще считаю естественным читать и писать с косой чертой, разделяющей части.