Команды Linux · 2 min read · Sep 17, 2025

Учебник по команде basename в Linux для начинающих (с примерами)

Иногда, работая в командной строке (особенно при работе с оболочными скриптами), вам может быть интересен только имя файла, но у вас есть полный путь к файлу. Поэтому требуется удалить компонент директории из пути.

Команда basename в Linux — это утилита, используемая для извлечения базового имени файла или пути к директории, эффективно удаляя любые ведущие компоненты директории и необязательные суффиксы. При предоставлении полного пути команда basename возвращает только имя файла или последний сегмент пути, что делает ее полезной в сценариях и задачах манипуляции файлами. Например, для пути /home/user/document.txt команда basename вернет document.txt. Кроме того, пользователи могут указать суффикс для удаления, такой как .txt, оставляя только document. Эта команда упрощает работу с именами файлов и путями в скриптах, улучшая автоматизацию и оптимизируя различные процессы управления файлами.

Этот учебник объяснит основы ‘basename’ с использованием простых примеров. Но прежде чем мы перейдем к этому, стоит упомянуть, что все примеры здесь были протестированы на машине с Ubuntu 24.04 LTS.

Объяснение команды basename в Linux

Команда basename позволяет вам удалить компоненты из имен файлов, которые не требуются. Следующий синтаксис инструмента:

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

А вот что говорит страница man об этом:

basename - удалить директорию и суффикс из имен файлов  

Вывести NAME с удаленными любыми ведущими компонентами директории. Если указано, также удалить завершающий  
SUFFIX.

Следующие примеры в формате вопросов и ответов должны дать вам хорошее представление о том, как работает команда basename.

Вопрос 1. Как работает команда basename?

По умолчанию, если вы выполните команду ‘basename’ с полным путем к файлу в качестве входных данных, команда вернет имя файла в выходных данных. Например, когда я выполнил следующую команду:

basename /home/himanshu/Downloads/analytics.pdf

Я получил следующий вывод:

analytics.pdf

Вопрос 2. Может ли basename обрабатывать несколько входных данных?

Да, может. Но для этого вам нужно использовать опцию командной строки -a. Например, когда я выполнил следующую команду:

basename -a /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png

Вот вывод, который я получил:

analytics.pdf  
test.png

Вопрос 3. Как сделать так, чтобы basename также удалял расширение файла?

Иногда вам может понадобиться получить только имя файла, но не его расширение. Это можно сделать с помощью опции командной строки -s (которая требует, чтобы вы передали суффикс в качестве входных данных).

Например, следующая команда:

basename -s .pdf /home/himanshu/Downloads/analytics.pdf

выдала следующий вывод:

analytics

Вопрос 4. Как сделать так, чтобы каждая строка вывода заканчивалась NUL?

По умолчанию символ новой строки используется в качестве разделителя в выходных данных. Однако вы можете заставить basename использовать NUL в качестве разделителя, если хотите. Это можно сделать с помощью опции командной строки -z.

Например:

basename -az /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png

Вот вывод:

analytics.pdftest.png

Таким образом, вы не видите символ NUL здесь. Вам нужно перенаправить вывод в файл, а затем открыть файл в редакторе, таком как vim. Вот что показал vim:

Заключение

Как вы можете видеть, basename не является очень многофункциональной командой - ее опции ограничены, и большинство из них были обсуждены здесь в этом учебнике. Как только вы закончите практиковаться с ними, перейдите на страницу man инструмента, чтобы узнать больше о нем.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.