Подборка советов от опытного разработчика поможет значительно повысить эффективность работы в командной строке, автоматизировать рутинные задачи и упростить сложные операции.
Редактирование команд в текстовом редакторе
Часто при работе в терминале приходится набирать длинные и сложные команды, которые неудобно редактировать, даже с помощью горячих клавиш. На помощь придет ваш дефолтный текстовый редактор:
- Нажмите Ctrl+X, затем Ctrl+E в Bash или Alt+E в Fish. Это откроет ваш стандартный текстовый редактор.
- Отредактируйте команду и сохраните изменения.
- Команда будет выполнена после закрытия редактора.
Автоматизация с помощью tmux
tmux – мощный терминальный мультиплексор, который позволяет создавать и управлять несколькими терминальными сессиями одновременно. Как отмечает автор оригинала этой подборки, tmux может автоматизировать все действия, которые не поддаются автоматизации с помощью обычных скриптов. С помощью скриптов для tmux можно не только автоматизировать повторяющиеся действия (например, создание одинаковых сессий на разных серверах), но и:
- Программно читать вывод терминала и реагировать на события.
- Передавать данные между панелями.
- Управлять поведением физического устройства – останавливать и перезагружать в нужные моменты, менять конфигурацию и т. п.
- Автоматически выполнять команды в нескольких панелях одновременно.
Поиск и выбор с помощью fzf
fzf – продвинутый инструмент для нечеткого поиска. Работает с любыми текстовыми данными – списками, файлами, процессами, названиями хостов, закладками, коммитами Git и т.п. Отлично справляется с интерактивным выбором опций в пользовательских скриптах – можно, например, создать скрипт для выбора веток Git или для запуска нужных облачных сервисов, которые предусматривают выбор определенных параметров.
Использование /dev/stdin вместо heredoc
Heredoc предоставляет возможность вставки многострочного текста в командную строку. Однако у heredoc довольно сложный синтаксис, к тому же не все оболочки поддерживают этот способ ввода. Альтернатива – /dev/stdin, делает почти все то же самое, но проще. Недостатки – в отличие от heredoc не работает в скриптах и не сохраняет команды в истории оболочки.
SSH-мультиплексирование
Эта функция позволяет использовать одно SSH-соединение для нескольких сессий. Включается очень просто – достаточно добавить эти строки в ~/.ssh/config
:
И еще несколько советов
git checkout
– быстрое переключение на предыдущую активную ветку Git, аналогично командеcd -
для перехода в предыдущий каталог.$_
или!$
в Bash позволяет использовать последний аргумент предыдущей команды.Alt+.
в Bash и Fish – быстрый способ вставить последний аргумент предыдущей команды.- Пробел перед командой исключает эту команду из истории.
pushd
иpopd
сохраняют состояние перехода между директориями. Более простой способ управления директориями используется в оболочке Fish –nextd
иprevd
.- locate обеспечивает индексацию и мгновенный поиск файлов.
command | sudo tee file
вместоsudo command > file
позволяет запускать команду с правами администратора и перенаправлять ее вывод в файл с правами доступа.<<<
(herestring): Позволяет передать строку в качестве входных данных для команды. Например,cat – <<< "Hello, world!" выведет "Hello, world!"
.vim scp://<user>@<host>/<absolute-path>
позволяет редактировать удаленный файл напрямую через SSH.vim -
передает вывод команды в Vim, который гораздо удобнее less.
Какой из представленных лайфхаков вы находите наиболее полезным для своей работы? Есть ли у вас свои секретные приемы работы в терминале, которыми вы хотели бы поделиться?
Комментарии