Команда basename считывает параметр String, удаляет префикс, оканчивающийся на /, и любой указанный Suffix, записывая базовое имя файла в стандартный вывод.
Содержание
Синтаксис
basename ИМЯ [СУФФИКС]
или
basename ПАРАМЕТР… ИМЯ…
Выводит ИМЯ без предшествующих названий каталогов. Если указано, удаляет также завершающий СУФФИКС.
Опции
Аргументы, обязательные для длинных параметров, обязательны и для коротких.
- -a, --multiple
- Принять несколько аргументов и считать каждый ИМЕНЕМ
- -s, --suffix=СУФФИКС
- Удалить завершающий СУФФИКС; подразумевает -a
- -z, --zero
- Заканчивать каждую строку результата NUL, а не символом новой строки
- --help
- Показать эту справку и выйти
- --version
- Показать информацию о версии и выйти
Примеры:
basename /usr/bin/sort->sortbasename include/stdio.h .h->stdiobasename -s .h include/stdio.h->stdiobasename -a any/str1 any/str2-> заstr1выведетсяstr2
Использование в Linux команды basename
Вывод имени файла с удалением каталогов
Для примера выводим имя файла /etc/fstab. Вывод будет включать лишь имя файла:
oleg@mobile:~:$ basename /etc/fstab
fstab
oleg@mobile:~:$ <
Утилита также удаляет все конечные символы:
oleg@mobile:~:$ basename /user/local/bin/
bin
oleg@mobile:~:$
<По умолчанию каждая строка вывода заканчивается символом новой строки. Чтобы закончить строки результатом NUL, используется опция -z.
Несколько входов
Утилита может принимать несколько имен в качестве аргументов. Для этого команда вызывается с параметром -a, за которым следует список файлов, разделённых пробелом:
oleg@mobile:~:$ basename -a ~/store/distros/kali/* ~/store/distros/ubuntu/*
kali-linux-2022.2-installer-amd64.iso
kali-linux-2022.2-live-amd64.iso
ubuntu-20.04.2.0-desktop-amd64.iso
oleg@mobile:~:$
В данном случае я отобразил все файлы, находящиеся в каталогах ~/store/distros/kali/ и ~/store/distros/ubuntu/.
Удаление завершающего суффикса
Для удаления любого конечного суффикса из имени файла он передаётся в качестве второго аргумента:
oleg@mobile:~:$ basename /etc/nginx/sites-available/linuxcookbookru.conf .conf
linuxcookbookru
oleg@mobile:~:$
Для удаления конечного суффикса можно также указать его с помощью опции -s:
oleg@mobile:~:$ basename -s .conf /etc/nginx/sites-available/linuxcookbookru.conf
linuxcookbookru
oleg@mobile:~:$
Следующая синтаксическая форма позволяет удалить любой конечный суффикс из нескольких имен:
oleg@mobile:~:$ basename -as .conf /etc/fuse.conf /etc/host.conf /etc/locale.conf
fuse.conf
host.conf
locale.conf
oleg@mobile:~:$
Заключение
В этой короткой статье были приведены примеры работы в Linux с командой basename, позволяющей удалять из имени любой начальный каталог, также конечный суффикс.