У каждой из трёх утилит свой небольшой набор ключей. basename -s убирает
суффикс без отдельного вызова sed, -a берёт сразу несколько путей.
realpath -e требует, чтобы весь путь реально существовал, а -m наоборот —
считает путь строкой, даже если файла ещё нет; путать их — частая причина
ошибок в скриптах, которые готовят путь для файла, который сами же создадут.
| Ключ |
Что делает |
Пример |
-m --canonicalize-missing |
realpath: посчитать путь, даже если он или его часть не существует. |
realpath -m /nope/x |
-s --suffix SUFFIX |
basename: убрать указанный суффикс из имени. |
basename -s .txt /a/b/c.txt |
-e --canonicalize-existing |
realpath: требовать, чтобы весь путь существовал; иначе — ошибка. |
realpath -e /etc/hosts |
-s --strip |
realpath: не разворачивать символические ссылки, только . и ... |
realpath -s ../x |
-a --multiple |
basename: несколько имён сразу, каждое своей строкой. |
basename -a /a/x /b/y |
-z --zero |
Разделять вывод нулевым байтом вместо перевода строки. |
basename -z /a/b/c.txt |
Ничего не найдено. Попробуй запрос короче.