Команды 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 инструмента, чтобы узнать больше о нем.
Get new posts in your inbox
No spam. Unsubscribe anytime.