Frog Proger 29 июля 2024

💻 15 продвинутых лайфхаков для работы в терминале Linux

Рассказываем, как использовать малоизвестные, но мощные инструменты терминала: от редактирования длинных команд в текстовом редакторе до автоматизации сложных процессов с помощью tmux.
💻 15 продвинутых лайфхаков для работы в терминале Linux

Подборка советов от опытного разработчика поможет значительно повысить эффективность работы в командной строке, автоматизировать рутинные задачи и упростить сложные операции.

Редактирование команд в текстовом редакторе

Часто при работе в терминале приходится набирать длинные и сложные команды, которые неудобно редактировать, даже с помощью горячих клавиш. На помощь придет ваш дефолтный текстовый редактор:

  • Нажмите Ctrl+X, затем Ctrl+E в Bash или Alt+E в Fish. Это откроет ваш стандартный текстовый редактор.
  • Отредактируйте команду и сохраните изменения.
  • Команда будет выполнена после закрытия редактора.
Такие команды удобнее править в редакторе
Такие команды удобнее править в редакторе
♾️ Библиотека devops’a
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека devops’a»
♾️🎓 Библиотека DevOps для собеса
Подтянуть свои знания по DevOps вы можете на нашем телеграм-канале «Библиотека DevOps для собеса»
♾️🧩 Библиотека задач по DevOps
Интересные задачи по DevOps для практики можно найти на нашем телеграм-канале «Библиотека задач по DevOps»

Автоматизация с помощью tmux

tmux – мощный терминальный мультиплексор, который позволяет создавать и управлять несколькими терминальными сессиями одновременно. Как отмечает автор оригинала этой подборки, tmux может автоматизировать все действия, которые не поддаются автоматизации с помощью обычных скриптов. С помощью скриптов для tmux можно не только автоматизировать повторяющиеся действия (например, создание одинаковых сессий на разных серверах), но и:

  • Программно читать вывод терминала и реагировать на события.
  • Передавать данные между панелями.
  • Управлять поведением физического устройства – останавливать и перезагружать в нужные моменты, менять конфигурацию и т. п.
  • Автоматически выполнять команды в нескольких панелях одновременно.
tmux позволяет передавать данные из одной панели в другую
tmux позволяет передавать данные из одной панели в другую

Поиск и выбор с помощью fzf

fzf – продвинутый инструмент для нечеткого поиска. Работает с любыми текстовыми данными – списками, файлами, процессами, названиями хостов, закладками, коммитами Git и т.п. Отлично справляется с интерактивным выбором опций в пользовательских скриптах – можно, например, создать скрипт для выбора веток Git или для запуска нужных облачных сервисов, которые предусматривают выбор определенных параметров.

Использование /dev/stdin вместо heredoc

Heredoc предоставляет возможность вставки многострочного текста в командную строку. Однако у heredoc довольно сложный синтаксис, к тому же не все оболочки поддерживают этот способ ввода. Альтернатива – /dev/stdin, делает почти все то же самое, но проще. Недостатки – в отличие от heredoc не работает в скриптах и не сохраняет команды в истории оболочки.

Многострочный ввод с помощью /dev/stdin
Многострочный ввод с помощью /dev/stdin

SSH-мультиплексирование

Эта функция позволяет использовать одно SSH-соединение для нескольких сессий. Включается очень просто – достаточно добавить эти строки в ~/.ssh/config:

        Host *
	ControlPath /tmp/ssh-%r@%h:%p
	ControlMaster auto
	ControlPersist 10m

    

И еще несколько советов

  1. git checkout – быстрое переключение на предыдущую активную ветку Git, аналогично команде cd - для перехода в предыдущий каталог.
  2. $_ или !$ в Bash позволяет использовать последний аргумент предыдущей команды.
  3. Alt+. в Bash и Fish – быстрый способ вставить последний аргумент предыдущей команды.
  4. Пробел перед командой исключает эту команду из истории.
  5. pushd и popd сохраняют состояние перехода между директориями. Более простой способ управления директориями используется в оболочке Fish – nextd и prevd.
  6. locate обеспечивает индексацию и мгновенный поиск файлов.
  7. command | sudo tee file вместо sudo command > file позволяет запускать команду с правами администратора и перенаправлять ее вывод в файл с правами доступа.
  8. <<< (herestring): Позволяет передать строку в качестве входных данных для команды. Например, cat – <<< "Hello, world!" выведет "Hello, world!".
  9. vim scp://<user>@<host>/<absolute-path> позволяет редактировать удаленный файл напрямую через SSH.
  10. vim - передает вывод команды в Vim, который гораздо удобнее less.
***

Какой из представленных лайфхаков вы находите наиболее полезным для своей работы? Есть ли у вас свои секретные приемы работы в терминале, которыми вы хотели бы поделиться?

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ