За двадцать лет работы с Linux и macOS (да и с Windows, чего уж там скрывать) терминал стал мне вторым домом. Не просто набор команд, а целая философия, способ мышления. Это как кухня для повара: знаешь потроха, чувствуешь ингредиенты, и тогда рождаются шедевры. Или, в нашем случае, стабильно работающие системы и быстро решенные проблемы. Многие думают, что консоль – это что-то архаичное, для бородатых админов, которые сидят в подвале и жуют семки. А я вам скажу: это живой, дышащий инструмент, который, если уметь с ним обращаться, может сэкономить часы, а то и дни работы. И иногда даже подарить улыбку.
Базовый арсенал: куда без него?
Начнем с классики, без которой никуда. Эти команды — азбука, но даже в них есть свои фишки.
ls
: Список файлов. Банально? Да. Но сколько раз я видел, как новички забывают про-l
для подробного вывода или про-a
, чтобы показать скрытые файлы. А уж про-h
(human-readable) для размеров файлов и каталогов – вообще отдельная песня. Мой личный лайфхак, который выработан годами: сразу же создать алиасll='ls -lhF'
. БукваF
покажет, что есть директория (/
), исполняемый файл (*
) или символическая ссылка (@
). Это мелочь, но экономит долю секунды каждый раз, когда смотришь на вывод. А таких раз в день – сотни.cd
: Смена директории. Все знаютcd /var/log
. А вотcd -
– это уже для продвинутых. Возвращает в предыдущую директорию. Однажды, когда я бегал между двумя папками с конфигами на продакшн-сервере, пытаясь синхронизировать изменения,cd -
спас меня от целого вороха опечаток и лишних телодвижений. Мелочь, а приятно.pwd
: Печать текущей директории. Полезно, когда потерялся в глубоких дебрях файловой системы. Особенно, если путь длинный и в промпте не отображается полностью.
Магия истории: не повторяйте ошибок, повторяйте команды
history
– это не просто список того, что вы делали. Это ваш личный дневник продуктивности и спасательный круг.
history
: Выводит список всех выполненных команд. У меня он настроен так, чтобы хранить тысячи команд. Это позволяет вернуться к тому, что я делал неделю назад, или найти ту самую команду, которая заработала.!n
: Выполнить команду под номеромn
из истории.!string
: Выполнить последнюю команду, начинающуюся наstring
. Моя любимая! Надо повторитьssh user@server.prod.company.ru -p 2222
? Просто набираю!ssh
. Это быстрее, чем стрелка вверх и поиск.!$
: Последний аргумент предыдущей команды. Вот это настоящий бриллиант. Вы только что скопировали файлscp /path/to/my/big_file.tar.gz user@remote:/tmp/
, а теперь хотите перейти в/tmp/
на удаленной машине? Простоssh user@remote 'cd !$ && ls -l'
. Или локально:mkdir my_new_project
, а потомcd !$
. Спасает от опечаток и лени.!!
: Повторить предыдущую команду целиком. Тоже очень удобно, особенно если надо добавитьsudo
:sudo !!
.
Но есть и предостережение: если вы только что выполнили что-то деструктивное типа rm -rf /some/path/*
, то !!
может сыграть злую шутку. Всегда смотрите, что именно вы повторяете.
Навигация по файловой системе: как не заблудиться в трех соснах
Когда файловая система разрастается до гигантских размеров, искать нужный файл или директорию становится тем еще квестом.
find
: Мощнейший инструмент для поиска файлов. Если вы не знаете, где лежит тот самый конфиг, который сломал все к чертям,find
– ваш друг.find /var/www -name "*.php" -mtime +7 -delete
Вот это уже серьезно: найти все PHP-файлы в
/var/www
, которые не менялись более 7 дней, и удалить их. Очень опасно, но иногда необходимо для очистки старых кешей или логов. Помню, как-то раз на старом китайском NAS-е (таком, который еще на Atom-е и с прошивкой от энтузиастов) место закончилось, и он перестал писать.find
спас, вычистив тонны старых бэкапов, о которых все забыли. Но я сначала делал-print
, а потом уже-delete
. Всегда так делайте!tree
: Визуализация структуры директорий. Не всегда предустановлен, но штука очень удобная, особенно когда надо быстро понять иерархию нового проекта или дистрибутива. Выводит красивое дерево.
Диспетчер задач по-админски: когда top
не вывозит
Когда сервер начинает тормозить, первое, что приходит на ум – посмотреть, кто жрет ресурсы.
top
: Стандартный, но не самый информативный. Показывает процессы, нагрузку CPU, память. Но для быстрого анализа часто не хватает.htop
: Мой фаворит. Это какtop
на стероидах. Цветной, интерактивный, с древовидным представлением процессов, с показателями по ядрам CPU, с удобным поиском и сортировкой. На любом новом сервере или рабочей станции, куда я попадаю,htop
устанавливается первым делом. Помню, как-то раз клиент жаловался, что его новомодный микросервис на Java потребляет слишком много памяти.top
показывал непонятные цифры, аhtop
сразу показал, что там не один процесс, а целая пачка дочерних, и каждый жрет как не в себя.ps aux
: Все процессы. Очень много вывода, но в сочетании сgrep
– мощнейший инструмент.ps aux | grep nginx
Покажет все процессы, связанные с Nginx. Полезно, когда надо найти PID процесса, чтобы его убить (
kill PID
). И помните:kill -9 PID
– это экстренное убийство,