Поиск по сайту:

Мы не особенно придирчивы и справедливы к тому, что нас не волнует (М. Пруст).

Команда Basename в Linux

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
2 декабря 2020
Как улучшить время запуска приложений в Linux
basename – это утилита командной строки, которая удаляет каталог и конечный суффикс из заданных имен файлов.

 

Использование команды basename

Команда basename поддерживает два формата синтаксиса:

basename NAME [SUFFIX]
basename OPTION... NAME...

 

basename берет имя файла и печатает последний компонент имени файла. При желании он также может удалить любой конечный суффикс. Это простая команда, допускающая лишь несколько параметров.

Самый простой пример – вывести имя файла с удаленными ведущими каталогами:

basename /etc/passwd

 

Вывод будет включать имя файла:

passwd

 

Команда basename удаляет все завершающие / символы:

basename /usr/local/basename /usr/local

 

Обе команды выдадут одинаковый результат:

local
local

 

По умолчанию каждая строка вывода заканчивается символом новой строки. Чтобы завершить строки NUL, используйте опцию -z ( –zero).

 

Несколько входов

Команда basename может принимать несколько имен в качестве аргументов. Для этого вызовите команду с параметром -a ( –multiple), за которым следует список файлов, разделенных пробелом.

Например, чтобы получить имена файлов /etc/passwd и /etc/shadow, запустите:

basename -a /etc/passwd /etc/shadow
passwd
shadow

 

Удаление конечного суффикса

Чтобы удалить любой конечный суффикс из имени файла, передайте суффикс в качестве второго аргумента:

basename /etc/hostname name
name

 

Обычно эта функция используется для удаления расширений файлов:

basename /etc/sysctl.conf .conf
sysctl

 

Другой способ удалить конечный суффикс – указать суффикс с помощью опции -s ( –suffix=SUFFIX):

basename -s .conf /etc/sysctl.conf
sysctl

 

Эта форма синтаксиса позволяет удалить любой конечный суффикс из нескольких имен:

basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl
sudo

 

Пример

В следующем примере показано, как использовать команду basename внутри forцикла bash для переименования всех файлов, оканчивающихся на «.jpeg» в текущем каталоге, путем замены расширения файла с «.jpeg» на «.jpg»:

for file in *.jpeg; do
    mv -- "$file" "$(basename $file .jpeg).jpg"
done

 

Если вы используете bash в качестве оболочки, вместо вызова basenameвы можете использовать удаление завершающего расширения с помощью расширения параметров оболочки.

Читать  Как очистить терминал в Ubuntu

 

Вывод

Команда basename удаляет любой начальный каталог и конечный суффикс из имени.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close