Неплохая привычка явно указывать, что что-то находится в текущем каталоге,особенно когда это что-то является сценарием или программой (, альтернативой в этом случае может быть .
в вашем $PATH
, что обычно считается угрозой безопасности).
Бывают ситуации, когда у вас будет ./
в начале имени пути, независимо от того, хотите вы этого или нет. Например, пути, найденные с помощью find
при поиске от .
вниз, всегда будут иметь префикс ./
.
В других ситуациях имя файла может мешать параметрам утилиты, например, при попытке удалить файл с именем -f
с помощью
rm -f
Использование
rm./-f
решит, что (./-f
не будет рассматриваться как вариант rm
), как и
rm -- -f
do (--
сигнализирует об окончании любых опций командной строки ).
Также обратите внимание, что шаблоны оболочки, такие как *
, могут расширяться до файлов с начальным дефисом. Поэтому безопаснее, например,. цикл по ./*
, чем по *
(, если вы не используете --
для разграничения неизвестного имени файла от опций, заданных утилитам ).
Поэтому рекомендуется использовать ./
в именах путей, особенно если имя пути хранится в переменной и исходит из какого-то источника, внешнего по отношению к сценарию.
В качестве разделителей полей можно использовать запятые и пробелы:
awk -F "[, ]" '{print $(NF-2),$(NF-1),$NF}' file
Чтобы также написать окончательный оператор tokens:
awk -F "[, ]" '{print $(NF-2),$(NF-1),$NF;i++}END{print "Number of tokens are: " i*3}' file