Забавные и полезные команды для терминала Linux/Mac

За двадцать лет работы с 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 – это экстренное убийство,

Радик Камаев

Сисадмин с 20-летним опытом. Windows, Unix, Android.

Оцените автора
Познавательный портал