Командная строка… Её можно любить или ненавидеть, но тому, кто пользуется Unix-подобными операционными системами, без неё не обойтись. Облегчить работу в командной строке можно с помощью утилиты marker. В её репозитории о ней говорят как о «панели команд для терминала». Полагаю, это — довольно полезная программа. Не могу подобрать точное сравнение для её описания. Не знаю, похожа ли она на продвинутую историю команд, или на систему управления закладками. Пожалуй, в ней есть немного и того и другого.
История работы с командами теряется, она содержит множество мелких команд (хотя, чтобы в историю не попадали бы определённые команды, можно воспользоваться переменной окружения
Конечно, можно просто написать скрипт, или создать псевдоним, и тем самым упростить работу с командами. Утилита
Далее, вы можете столкнуться с небольшой неприятностью, возможность возникновений которой зависит от используемого дистрибутива Linux. А именно, если ввод части команды и нажатие сочетания клавиш
Затем, если что-то пошло не так, можно просто выйти из оболочки и открыть новое окно. После того, как окажется, что настройки программы вас устраивают, можно воспользоваться инструкциями по внесению изменений в файл .
Испытайте
При повторном использовании некоей команды обычно нужно отредактировать ту её часть, которая относится к её входным и выходным данным. Marker позволяет решить эту задачу с использованием сочетания клавиш
Кроме того, можно писать и собственные команды, пользуясь местозаполнителями, после чего добавлять их в программу с помощью сочетания клавиш
Работа с marker
На вышеприведённом анимированном рисунке можно видеть пример работы с местозаполнителями (вроде
Управлять
Единственной серьёзной проблемой, которую я обнаружил, стало то, что в
Хочу дать совет. Обратите внимание на то, что код загружает файл
Выше я говорил о том, что настройки клавиатурных сокращений
Имена клавиш представлены в формате, который понимает команда
Если вы пользуетесь командной оболочкой нечасто, или если работаете с очень сложными командами, то
Пользуетесь ли вы какими-нибудь утилитами, облегчающими работу в командной строке Linux?
История работы с командами теряется, она содержит множество мелких команд (хотя, чтобы в историю не попадали бы определённые команды, можно воспользоваться переменной окружения
HISTIGNORE
). А при использовании marker
можно сохранить определённые команды, после чего они уже не потеряются. В хранилище marker
не попадает ничего лишнего, а то, что было сохранено, никуда не девается.Конечно, можно просто написать скрипт, или создать псевдоним, и тем самым упростить работу с командами. Утилита
marker
позволяет добавлять к командам описания, среди сохранённых команд можно искать нужные, пользуясь инкрементальным нечётким поиском. Кроме того, в командах, сохранённых в marker
, можно использовать местозаполнители, которые, при использовании команд, заменяются на реальные данные. В программе, сразу после установки, имеется встроенный список команд. Закладки marker
можно использовать и в bash, и в zsh, что пригодится тому, кто применяет обе эти командные оболочки.Установка marker
Marker
— это самостоятельный проект, который можно установить из его GitHub-репозитория. Установка проста и не требует root-прав. Но надо будет кое-что добавить в файл инициализации оболочки. Программа, правда, даст подсказку об этом после установки. Если клавиатурные привязки, используемые по умолчанию, вам не подойдут, вам может понадобиться их перенастроить, приведя к подходящему виду, запуская marker
с помощью команды source
. Это может занять некоторое время. Затем надо внести изменения в файл инициализации оболочки. Другими словами, между моментом выполнения команды установки программы и моментом выполнения следующих двух команд может пройти некоторое время.git clone --depth=1 https://github.com/pindexis/marker ~/.marker && ~/.marker/install.py
cp ~/.bashrc ~/.bashrc_backup
echo '[[ -s "$HOME/.local/share/marker/marker.sh" ]] && source "$HOME/.local/share/marker/marker.sh"' >> ~/.bashrc
Далее, вы можете столкнуться с небольшой неприятностью, возможность возникновений которой зависит от используемого дистрибутива Linux. А именно, если ввод части команды и нажатие сочетания клавиш
CTRL + Пробел
приводит к ошибке bash: bash_execute_unix_command: cannot find keymap for command
, это значит, что вы столкнулись с уже известной проблемой. Для того чтобы её решить, отредактируйте файл ~/.marker/bin/marker.sh
в соответствии с этими инструкциями. На самом деле, многие клавиатурные привязки способны вызывать проблемы в различных системах. Поэтому, прежде чем принимать решение о постоянном использовании marker
, легче просто выполнить команду source
в командной оболочке и активировать таким образом marker
:source ~/.local/share/marker/marker.sh
Затем, если что-то пошло не так, можно просто выйти из оболочки и открыть новое окно. После того, как окажется, что настройки программы вас устраивают, можно воспользоваться инструкциями по внесению изменений в файл .
bashrc
. Конечно, если вы следовали вышеприведённым инструкциям, вы всегда можете вернуть систему в прежнее состояние, скопировав содержимое .bashrc_backup
в .bashrc
.Использование marker
Испытайте
marker
, использовав возможности программы для поиска команд в вашей истории команд. Если вы привыкли использовать для обратного поиска в истории сочетание клавиш CTRL + R
, то вам будет удобно работать с marker
. При использовании стандартных настроек можно ввести часть команды и нажать CTRL + Пробел
для выполнения поиска команды. Вместо того, чтобы, просматривая по одной строке истории, постоянно нажимать на клавишу клавиатуры (как при обычной работе с историей), перед вами окажется приятно оформленный список, из которого можно выбрать то, что нужно.При повторном использовании некоей команды обычно нужно отредактировать ту её часть, которая относится к её входным и выходным данным. Marker позволяет решить эту задачу с использованием сочетания клавиш
CTRL + T
. Каждый раз, когда нажимают это сочетание клавиш, курсор будет перемещаться к следующему местозаполнителю, оформляемому с помощью пары фигурных скобок. При этом местозаполнитель автоматически удаляется, что позволяет просто перейти в нужное место команды и ввести там необходимые данные.Кроме того, можно писать и собственные команды, пользуясь местозаполнителями, после чего добавлять их в программу с помощью сочетания клавиш
CTRL + K
. Работа с закладками — это возможность marker
, которая выгодно отличает эту программу от обычного поиска по истории.Работа с marker
На вышеприведённом анимированном рисунке можно видеть пример работы с местозаполнителями (вроде
{{url}}
). По умолчанию при работе с программой используются сочетания клавиш CTRL + Пробел
, CTRL + K
и CTRL + T
, но, например, в моей системе они конфликтуют с другими клавиатурными привязками. Поэтому я поменял их на Alt-
., Alt-M
и Alt-P
(подробнее об этом я расскажу ниже). Кроме того, переназначить их можно, установив переменные окружения перед использованием команды source ~/.local/share/marker/marker.sh
.Проблемы
Управлять
marker
можно с помощью собственных команд утилиты, а не с использованием клавиатурных сокращений. Но иногда это вызывает определённые сложности. Например, я не пользовался командой marker update
. Если говорить о других командах, то удалять команды можно с помощью marker remove
.Единственной серьёзной проблемой, которую я обнаружил, стало то, что в
marker
имеется множество правил, которые мне не нужны. Но простого способа их удаления программа не даёт. Уверен, можно залезть в код программы и вручную от этих правил избавиться, но хорошо было бы, если бы их можно было удалить так же легко, как и собственные правила.Хочу дать совет. Обратите внимание на то, что код загружает файл
~/.marker/tldr/common.txt
и ещё один файл, ориентированный на конкретную операционную систему (например — linux.txt
). Редактирование этих файлов позволяет без труда менять стандартные правила. А ещё лучше — скопируйте то, что вам нужно, в ~/.local/share/marker/user_commands.txt
, а потом уберите куда-нибудь старые файлы. В результате настройки, используемые по умолчанию, будут в вашем распоряжении. Вы сможете их изменить или удалить.Выше я говорил о том, что настройки клавиатурных сокращений
marker
не подходят пользователям, которые используют клавиатурные привязки в духе emacs. К программе подготовлена не особенно подробная документация. Но в верхней части кода marker.sh
выполняется установка трёх клавиатурных привязок на основе переменных окружения и задаются значения, применяемые по умолчанию. Именно тут я и изменил стандартные привязки. Можно, конечно, просто задать переменные окружения. Вот код, о котором я говорю (с моими правками):# клавиатурные привязки, применяемые по умолчанию
marker_key_mark="${MARKER_KEY_MARK:-\em}"
marker_key_get="${MARKER_KEY_GET:-\e.}"
marker_key_next_placeholder="${MARKER_KEY_NEXT_PLACEHOLDER:-\ep}"
Имена клавиш представлены в формате, который понимает команда
bind
. Это — как раз то, что, в целом, плохо документировано. Легче всего в этом разобраться, выполнив команду bind -P
и посмотрев на то, как устроены другие привязки. Клавиша CTRL
выглядит здесь как \C-t
, клавиши с префиксом \e
(обычно — ALT
) выглядят так, как сделано в моём коде. Вы можете воспользоваться этими знаниями при настройке собственных привязок. Если вам нужна документация по клавиатурным привязкам — загляните сюда.Итоги
Если вы пользуетесь командной оболочкой нечасто, или если работаете с очень сложными командами, то
marker
может вам пригодиться. Но работу с командной строкой можно упростить и другими способами. А если вы очень сильно перенастроили bash, и при этом пользуетесь несколькими компьютерами, то вам, возможно, пригодится моя система для управления настройками, основанная на Git.Пользуетесь ли вы какими-нибудь утилитами, облегчающими работу в командной строке Linux?
eumorozov
Проект интересный, но fish + fzf + vim-keys позволяют почти всё то же самое, при этом как-то универсальнее что-ли.
ProffX
Спасибо за fzf.
fish уже довольно давно пользую и очень нравится.
убеждён, что vim и всё что около него придумано рептилоидами, но я когда-нибудь это освою, да…