Команда basename
считывает параметр String, удаляет префикс, оканчивающийся на /
, и любой указанный Suffix, записывая базовое имя файла в стандартный вывод.
Содержание
Синтаксис
basename ИМЯ [СУФФИКС]
или
basename ПАРАМЕТР… ИМЯ…
Выводит ИМЯ без предшествующих названий каталогов. Если указано, удаляет также завершающий СУФФИКС.
Опции
Аргументы, обязательные для длинных параметров, обязательны и для коротких.
- -a, --multiple
- Принять несколько аргументов и считать каждый ИМЕНЕМ
- -s, --suffix=СУФФИКС
- Удалить завершающий СУФФИКС; подразумевает -a
- -z, --zero
- Заканчивать каждую строку результата NUL, а не символом новой строки
- --help
- Показать эту справку и выйти
- --version
- Показать информацию о версии и выйти
Примеры:
basename /usr/bin/sort
->sort
basename include/stdio.h .h
->stdio
basename -s .h include/stdio.h
->stdio
basename -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
, позволяющей удалять из имени любой начальный каталог, также конечный суффикс.