Назад | Перейти на главную страницу

Как привязать ключ к макросу на экране GNU из командной строки?

В Экран GNU утилита имеет удобную функцию привязки ключей к screen команды или макросы. В stuff Команда особенно удобна для расширения аббревиатуры на другую строку при вводе.

Например, если я в screen и я использую свой мета-ключ ([Ctrl-А] по умолчанию), за которым следует :bindkey -t #@@ stuff "set -o vi; bind C-l:clear-screen C-i:complete" ... затем ##@ становится быстрым способом изменить настройки bash shell в соответствии с моими предпочтениями, даже когда я использую общую учетную запись (например, когда я использовал sudo чтобы получить доступ к корневой оболочке на сервере, пытаясь устранить или исправить это).

Это здорово, и вы можете добавить такие привязки в свой ~/.screenrc файл.

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

Как ты это делаешь?

Вы могли подумать, что использовать screen -X (заглавная X) переключатель, который принимает команду. Но очевидные попытки сделать это терпят неудачу:

screen -X 'bindkey -t #@p stuff mysecretpasswordhere'

Затем screen строка состояния с коротким светом с ошибкой типа -X: неизвестная команда ...

Почему это сообщение об ошибке так бесполезно?

Я уже понял это пару раз. Первый раз был несколько лет назад, и я пользовался им долгое время. Тогда мне пришлось СНОВА разобраться в этом утром. Вот почему я размещаю это здесь. Так мне будет легче найти его в следующий раз, когда он мне понадобится, если я не помню лучше.

Проблема в том, что -X не принимает и не анализирует один аргумент как всю команду. Это требует, чтобы вы передавали каждый из элементов команды как отдельный аргумент в screen командная строка.

Итак, это работает:

screen -X bindkey -t '#@p' stuff "mysecretpasswordhere"

... и вот как я использую его из сценария оболочки:

#!/bin/bash
read -sp "GNU Screen PW Setting:" pw
echo 
screen -X 'bindkey' '-t' '#@p' 'stuff' "$pw"

Затем, когда я запускаю новый GNU screen сеанс (обычно раз в несколько месяцев), затем я просто запускаю ~/bin/setpw чтобы сохранить свой пароль в памяти, не записывая его где-либо в файлы.

(Да, фактическая последовательность клавиш, к которой я привязываю его, была очищена для этой публикации. Да! Кроме того, да, я очень последовательно использую блокировку экрана в своих системах, и пароль длинный, надежный и, следовательно, довольно неудобный для печатая в sudo подсказывает весь день).