Быстрая навигация
Что именно происходит, когда вы вводите команду в Linux? Кажется, всё просто, но под капотом запускается что угодно: отдельная программа, скрипт, встроенная команда оболочки, пользовательская функция или даже алиас. Всё зависит от того, за что отвечает введённое имя. Разберёмся, как это работает на самом деле.
Виды команд в Linux: от программ до алиасов
Программа (исполняемый файл) — это обычный файл на диске в специальном формате, например ELF для Linux. Такой файл понятен системе, и оболочка передаёт его ядру для выполнения.
Скрипт оболочки — это читаемый текстовый файл. Обычно он написан на Bash, Perl, Python или другом интерпретируемом языке и просто содержит инструкции, которые будут последовательно выполнены.
Встроенная команда — это функция самой оболочки, всегда доступная и не существующая как отдельный файл. Часто такие команды управляют самой оболочкой и её поведением.
Функция оболочки — ваш собственный мини-сценарий: блок команд, которому вы присваиваете имя для быстрого вызова.
Алиас — короткое имя для часто используемой длинной команды. Ускоряет работу и сокращает количество ошибок при наборе.
Важно: оболочка (например, bash) ищет нужное имя по строгому порядку: сначала проверяет алиасы, затем функции, потом встроенные команды, и только после этого — отдельные программы и скрипты на диске.
1 Запуск исполняемой программы
Самый привычный способ — запуск отдельной программы. Большинство стандартных команд, таких как cat, diff, vi, входят в POSIX-стандарт, поэтому есть на всех Unix-подобных системах, включая Linux и macOS.
Есть и дополнительные программы, которые вы устанавливаете сами: например, Apache, Neofetch или tree. Они работают так же — это просто отдельные исполняемые файлы.
Запускать программы можно двумя способами: указать путь к файлу (например, ./myprog или /usr/bin/awk). Если путь содержит “/”, оболочка ищет файл по этому адресу. Например, чтобы запустить /bin/cat, просто выполните:
Оболочка проверит: если по этому пути есть исполняемый файл, она запустит его.
Чаще всего в Linux исполняемые файлы идут без расширения. Команда вроде “grep” — это файл с таким именем, хотя никто не мешает назвать файл даже “мой_скрипт.exe”: расширение роли не играет.
Если ввести только имя программы без пути, оболочка сама найдёт её благодаря переменной среды PATH:
PATH — это список разделённых двоеточиями папок, где оболочка ищет программы. Порядок важен! Если одинаковые имена файлов есть в нескольких папках, будет запущен первый найденный. Например, при наличии /usr/bin/grep и /bin/grep будет использоваться версия из /usr/bin. Так можно “переопределить” стандартную команду своей — удобно для экспериментов.
Как добавить новую папку в PATH в Linux
Не стоит добавлять лишние папки в PATH — это может вызвать проблемы!
2 Запуск скрипта оболочки
Скрипты оболочки запускаются немного иначе, чем бинарные программы, и выглядят по-другому. Пример простого скрипта:
Первая строка — “шебанг” (символы #!), которая указывает оболочке, какой интерпретатор использовать (например, /bin/sh).
Всё остальное — команды, которые понимает выбранный интерпретатор. Поэтому оболочка может выполнить, например, echo прямо из скрипта так, будто вы ввели её в терминале.
Скрипты запускаются так же, как программы: их ищут через PATH. Но обязательно нужны права на исполнение — иначе появится ошибка:
Если прав нет, всегда можно явно вызвать скрипт с нужным интерпретатором, например:
С бинарными файлами то же самое, но сначала узнайте, какой для них требуется интерпретатор. Для этого используйте команду file:
В этом случае команду pwd можно запустить так:
3 Запуск встроенных команд оболочки
Часть команд встроена прямо в оболочку, потому что управляет её работой на глубоком уровне. Эти команды не существуют как отдельные файлы — они “зашиты” в саму программу оболочки.
Например, cd, echo, kill — встроенные команды, поэтому выполняются моментально. Иногда встречаются специальные скрипты-обёртки для таких команд, что нужно для совместимости, но обычно на них не обращают внимания.
Справку по встроенным командам найти бывает непросто: часто либо она отсутствует (как в Ubuntu), либо спрятана в общую справку, как в macOS. Для быстрой подсказки удобно использовать tldr.
Главная особенность встроенных команд: они обычно проще и имеют меньше опций, чем полноценные программы. Например, cd чаще всего поддерживает только пару ключей (-L и -P) для работы с симлинками, тогда как стандартные опции -h или --help не работают.
4 Вызов функции оболочки
Любое введённое имя может оказаться пользовательской функцией. В любой сессии легко объявить функцию например так (в bash):
Можно и так, используя ключевое слово function:
Вызвать функцию — просто написать её имя, добавив аргументы если нужно. Например, у меня есть удобная функция в отдельном файле:
Я добавляю такой файл в автозагрузку оболочки (~/.zshrc), и теперь одной командой могу создать папку и сразу зайти в неё:
Функции можно вызывать в любое время и использовать в других скриптах (главное — чтобы функция была загружена через source или .).
Как создавать алиасы и функции в Linux
Настраивайте свои команды с помощью алиасов и bash-функций — это проще, чем кажется!
5 Использование алиасов
Алиас — это короткая команда, чтобы не набирать длинные выражения с опциями снова и снова. Например, я сделал алиас для отображения файлов с подсветкой типа так:
Теперь достаточно написать “ls” — и выполнился “ls -GF”.
Создать новый алиас можно командой alias:
Если внутри подмены встречаются пробелы — возьмите команду в кавычки. Список всех алиасов покажет alias, убрать лишний — unalias. Чтобы алиасы всегда работали, пропишите их в ~/.zshrc или ~/.bashrc.
Почему без алиасов в Linux нельзя жить?
Даже если вы слышали про алиасы — используете ли вы их по полной?
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru