Однострочные команды shell давно стали незаменимым инструментом для программистов, системных администраторов и продвинутых пользователей Linux и Unix-систем. Журналисты и технические блогеры нередко публикуют разнообразные коллекции утончённых и сложных команд, но редко можно встретить подборки, которые отражают реальную практику и ежедневное применение. Недавняя дискуссия на популярном форуме Hacker News показала, что именно те команды, которые упоминаются повторно и используются на практике, проходят испытание временем и служат настоящими помощниками в работе. В этом материале мы рассмотрим самые востребованные и полезные однострочники, которые помогли многим пользователям сделать работу в shell более эффективной и удобной. Начнём с простого, но крайне полезного примера, предложенного одним из участников под ником samgutentag.
Он поделился своим алиасом «huh», который запускает сразу две команды: pwd и whoami. Таким образом, он быстро получает информацию о текущей директории и пользователе, под которым работает. Несмотря на свою простоту, такая команда помогает избежать путаницы в окружении и точно понимать, где именно находится пользователь и от чьего имени выполняются действия. Команда идеально подходит для тех, кто часто переключается между несколькими сессиями или соединениями. Другой участник, jauco, рассказал о том, как он заменяет стандартную команду cat на утилиту pv (pipeviewer), чтобы визуально отслеживать прогресс обработки очень больших файлов.
Это особенно полезно при применении grep к огромным логам или данным, где обычный вывод может занять много времени и не давать обратной связи. Использование pv позволяет получить индикацию скорости передачи данных и приблизительное время завершения операции, что значительно улучшает пользовательский опыт. Особое внимание в обсуждении уделялось команде find с параметром -exec, которая позволяет искать файлы по определённым критериям и сразу же применять к ним заданные команды. Это даёт мощный инструмент для автоматизации задач, например, удаления старых резервных копий, оптимизации баз данных или других операций с множеством файлов, подходящих под заданные условия. Пользователи советовали всегда сначала запускать find без -exec, чтобы убедиться, что список найденных файлов правильный, а затем использовать выполнение команд, что помогает избежать непреднамеренного удаления или изменений.
Другие опытные специалисты делились более сложными примерами. Участник с ником geocrasher опубликовал серию команд, связанных с мониторингом ресурсов. Например, проверка свободного места на дисках и оптимизация таблиц MySQL, поиск крупных файлов по системе, просмотр последних записей в логах nginx с фильтрацией по IP-адресу хоста и многое другое. Его команды содержат последовательность вызовов утилит df, awk, sed, find и mysql, которые дают широкие возможности для анализа и автоматизации на серверах с повышенной нагрузкой и многочисленными базами данных. Пользователи также отметили следующие алиасы и команды, которые значительно упрощают их рабочие процессы.
Среди них можно выделить стандартные алиасы ll и lln для подробного и отсортированного по времени вывода содержимого директорий, команды для определения размера папок с удобочитаемым выводом (du с флагом -h). Такая простота позволяет быстро получать необходимую информацию без длинных и сложных строк вызовов. Среди команд для работы с Git отмечались команды git grep, pgrep -fl для поиска процессов по имени и различные полезные трюки, облегчавшие работу с репозиториями и процессами. Например, git grep -l foo помогает найти имена файлов, содержащих строку foo, а pgrep -fl предоставляет упрощённый способ просмотра запущенных процессов без необходимости использования комбинации ps и grep. Такие команды экономят время и снижают количество ошибок, связанных с неправильным вводом параметров.
Большая часть обсуждения коснулась улучшения повседневных рабочих привычек при использовании оболочки. Некоторые опытные пользователи рекомендовали использовать сочетания клавиш readline, такие как Ctrl+R — отказ назад по истории команд, что значительно ускоряет повторный вызов ранее применявшихся команд, освобождая от необходимости помнить точный синтаксис. Инструменты вроде fzf — интерактивный fuzzy finder — интегрируются с консолью и дают возможность быстро находить нужные команды и файлы с помощью поиска по частичному совпадению. В списках однострочников встретились и простейшие, но действенные решения. Команда cd - позволяет мгновенно переключаться между текущей и предыдущей директориями, что особенно полезно при частых перемещениях в файловой системе.
Для временного перехода в другую директорию без выхода из текущей сессии можно запускать вложенный bash-процесс и по завершении просто выйти из него. Такой подход уберегает от потери контекста и ускоряет навигацию. Интересным примером, хоть и юмористическим, стала команда fork bomb :(){ :|:& };:, которая запускает себя в цикле, быстро загружая систему. Несмотря на шутливый характер, этот пример стоит упоминания как демонстрация мощи и ответственности при работе с командами shell. Для профессионалов, работающих с сетями, полезными оказались простые тесты скорости передачи данных, основанные на вызове dd с последующим подключением через netcat.