Имеет ли смысл использование ./ в путях с обычными инструментами Unix?

Если входные данные были в формате JSON (, это выглядит подозрительно похоже ), можно было бы использоватьjq:

$ jq -r '."hbase.tmp.dir"' file.json
/var/lib/ambari-metrics-collector/hbase-tmp

Это может быть изменено, если есть какая-либо сложная структура данных, очевидно.

1
24.03.2019, 17:23
1 ответ

Неплохая привычка явно указывать, что что-то находится в текущем каталоге,особенно когда это что-то является сценарием или программой (, альтернативой в этом случае может быть .в вашем $PATH, что обычно считается угрозой безопасности).

Бывают ситуации, когда у вас будет ./в начале имени пути, независимо от того, хотите вы этого или нет. Например, пути, найденные с помощью findпри поиске от .вниз, всегда будут иметь префикс ./.

В других ситуациях имя файла может мешать параметрам утилиты, например, при попытке удалить файл с именем -fс помощью

rm -f

Использование

rm./-f

решит, что (./-fне будет рассматриваться как вариант rm), как и

rm -- -f

do (--сигнализирует об окончании любых опций командной строки ).

Также обратите внимание, что шаблоны оболочки, такие как *, могут расширяться до файлов с начальным дефисом. Поэтому безопаснее, например,. цикл по ./*, чем по *(, если вы не используете --для разграничения неизвестного имени файла от опций, заданных утилитам ).

Поэтому рекомендуется использовать ./в именах путей, особенно если имя пути хранится в переменной и исходит из какого-то источника, внешнего по отношению к сценарию.

2
28.04.2021, 23:35

Теги

Похожие вопросы