Раскройте секреты вашей командной строки
Терминал Linux не поддерживает использование функциональности копирования и вставки через веб-интерфейс, что заставляет полагаться на ручной ввод. Хотя поначалу это неприятно, это может оказаться прекрасной возможностью побороть некоторые плохие привычки, выработанные со временем. В этой статье мы рассмотрим удобный способ для решения этой проблемы.
Команда history
Команда history
— мощный инструмент в Linux, разработанный для отслеживания команд, введенных в терминал. Она часто используется для поиска команд, к которым можно вернуться, чтобы освежить память.
Например, вот фрагмент истории терминала, иллюстрирующий, действие команды:
history
547 echo "Rebuilding sendmail.cf file"
548 echo "=========================="
549 vim /etc/mail/sendmail.mc
550 m4 sendmail.mc >sendmail.cf
551 systemctl restart sendmail
552 echo "Subject: Test Email"|sendmail -v info@sebostechnology.ca
553 echo "Rebuilding after changing access file"
554 echo "=========================="
555 vim /etc/mail/access
556 makemap hash /etc/mail/access < /etc/mail/access
557 vim /etc/mail/sendmail.mc
558 m4 sendmail.mc >sendmail.cf
559 systemctl restart sendmail
560 journalctl --unit=sendmail
561 echo "Subject: Test Email"|sendmail -v info@sebostechnology.ca
С помощью команды history
можно легко ссылаться на предыдущие команды или повторно запускать их, экономя время и усилия при выполнении повторяющихся задач, таких как перестроение файлов конфигурации или устранение неполадок. Это бесценный ресурс, который превращает терминал в личного помощника, регистрирующего каждый ваш шаг.
Повторный запуск команды через history
Команда history
делает невероятно простым повторный запуск предыдущей команды, используя символ !
с последующим связанным с командой номером. Например, чтобы повторить m4 sendmail.mc >sendmail.cf
, можно ввести либо !550
или !558
, в зависимости от того, какой экземпляр вы хотите выполнить. Эта функция особенно полезна для повторяющихся задач.
В ходе проекта вы регулярно запускаете последовательность одних и тех же команд, чтобы упростить этот процесс, объединим команду history
с оператором Bash &&
, что позволит выполнить несколько команд за один раз. Например, вот набор команд, которые могут часто использоваться:
556 makemap hash /etc/mail/access < /etc/mail/access
558 m4 sendmail.mc >sendmail.cf
559 systemctl restart sendmail
561 echo "Subject: Test Email"|sendmail -v info@sebostechnology.ca
Используя history
, можно запустить все четыре команды с помощью одной строки:
!556 && !558 && !559 && !561
Эта последовательность команд переводится как:
makemap hash /etc/mail/access < /etc/mail/access && m4 sendmail.mc >sendmail.cf && systemctl restart sendmail && echo "Subject: Test Email"|sendmail -v info@sebostechnology.ca
Использование этого метода экономит значительное количество времени и снижает риск ошибок при ручном наборе. Эта команда может быть чем-то большим, чем просто журнал — она может служить усилителем производительности.
Но чем еще она может быть полезна? Для начала, вы можете искать определенные команды с помощью history | grep
, создавать повторно используемые скрипты из часто используемых последовательностей или даже предотвращать ошибки повторного ввода, ссылаясь на предыдущие записи.
Чем может быть полезна команда history?
Команда history
предлагает широкий спектр функций, которые могут быть невероятно полезны для управления и оптимизации вашего рабочего процесса в терминале. Вот несколько практических способов извлечь из этого максимум пользы:
- Начинаем с чистого листа: перед началом нового проекта иногда полезно очистить историю, чтобы убедиться, что вы начинаете с чистого листа. Это можно сделать с помощью:
history -c
- Сохранение истории для документации: при завершении проекта вы можете захотеть сохранить историю команд как часть документации проекта. Это позволит вам ссылаться на команды, которые вы использовали позже:
history > project_history.txt
- Анализ использования команд: для больших проектов, где вы часто повторяете команды, может быть полезно проанализировать использование команд. Следующая команда генерирует список наиболее часто используемых команд:
history | awk '{CMD[$2]++} END {for (a in CMD) print CMD[a], a}' | sort -nr | head
- Временное отключение истории: если вы хотите запускать конфиденциальные команды без их регистрации в файле истории, вы можете временно отключить функцию истории:
unset HISTFILE
- Обратный поиск: если вам нужно быстро найти ранее использованную команду, вы можете нажать
Ctrl + r
, чтобы начать обратный поиск. Начните вводить текст, и терминал отобразит соответствующие команды из вашей истории. - Поиск по ключевым словам: другой способ найти определенную команду — использовать
grep
для фильтрации истории. Например:
history | grep <some string>
Эти методы могут сэкономить время, повысить эффективность и даже помочь в устранении неполадок, предоставляя запись того, что было сделано. Независимо от того, очищаете ли вы историю, сохраняете ее или анализируете, history
команда является универсальным инструментом для любого пользователя терминала.
Вам нужно использовать history?
Нужно ли вам использовать history
команду? Не обязательно. Ее использование не делает вас автоматически лучшим пользователем Linux, и это не та команда, на которую вы, скорее всего, будете полагаться ежедневно. Тем не менее, это один из тех недооцененных инструментов, который может сэкономить вам много времени и усилий, если вы его используете.