Терминал против оболочки
Терминал — это интерфейсное окно или устройство, отображающее текст и принимающее ввод с клавиатуры. Оболочка — это работающая внутри нее программа, которая интерпретирует команды. Bash и Zsh — оболочки; Терминал GNOME, Konsole, iTerm2 и консоль Linux являются интерфейсами терминала.
Это различие имеет значение, поскольку настройки терминала и поведение оболочки настраиваются в разных местах.
Баш и Зш
Bash — это традиционная оболочка по умолчанию во многих системах Linux и самая безопасная версия для сценариев. Zsh популярен для интерактивного использования благодаря своим функциям завершения и настройки.
Команда, работающая в Zsh в интерактивном режиме, может быть непереносима в сценарий Bash. Для изучения основ Linux Bash является общей базой.
Краткое анатомическое строение и командная структура
В приглашении обычно отображается контекст, такой как имя пользователя, имя хоста, текущий каталог, ветка Git или индикатор привилегий. Приглашение не является частью команды; это сигнал из оболочки.
Большинство команд имеют форму: имя команды, параметры, аргументы и перенаправления. Опции изменяют поведение. Аргументы сообщают команде, что делать.
grep -n "error" /var/log/app.log > errors.txt
# grep = command, -n = option, pattern and file = arguments, > = redirectionQuoting
Заключение в кавычки управляет тем, как оболочка обрабатывает пробелы, переменные и специальные символы. Одинарные кавычки сохраняют текст почти буквально. Двойные кавычки позволяют расширять переменные, сохраняя при этом пробелы.
Многие ошибки новичков происходят из-за переменных без кавычек или путей с пробелами. В случае сомнений заключите переменные в кавычки как «$name».
Трубы и перенаправление
Канал отправляет выходные данные одной команды на вход другой. Перенаправление отправляет выходные данные в файлы или считывает входные данные из файлов. Эти идеи делают инструменты в стиле Unix компонуемыми.
journalctl -u nginx --since today | grep -i error | lessecho "hello" > message.txt
cat message.txtПеременные среды и PATH
Переменные среды — это строки «ключ-значение», унаследованные дочерними процессами. PATH — это переменная среды, в которой перечислены каталоги, в которых оболочка ищет команды.
Если команда установлена, но не найдена, возможно, ее нет в PATH или ваша текущая оболочка не загрузила обновленную среду.
echo "$PATH"
which python3Псевдонимы и поведение оболочки при запуске
Псевдонимы — это интерактивные ярлыки. Они удобны, но на них не следует полагаться в сценариях. Файлы запуска оболочки, такие как ~/.bashrc, ~/.bash_profile, ~/.profile, ~/.zshrc и /etc/profile, загружаются в разных ситуациях.
Оболочки входа, интерактивные оболочки и неинтерактивные оболочки сценариев могут читать разные файлы. Если параметр отображается в одном терминале, но не отображается в другом, вероятной причиной является порядок файлов запуска.
Практические примеры
alias ll='ls -lah'export EDITOR=nanohistory 20