В Экран 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
подсказывает весь день).