Скрытые возможности `экрана`
Так как я использую команду *nixscreen
весь день, и я не мог найти никого, кто начал бы этот вопрос, я подумал, что он должен быть начат. Вы знаете упражнение: вики сообщества, один ответ на каждую функцию, чтобы мы все могли голосовать.
11 ответов
Я люблю использовать его для подключения к последовательным консолям, т.е.
screen /dev/ttyS0 19200
Эта команда просто открывает соединение с последовательным портом 0 (ttyS0) со скоростью 19200 бод
Из ответа KTamas: более одного человека могут использовать один и тот же экран, например, если ваш друг ssh
в ваш компьютер, то он может подключиться к вашему экрану. Здорово, когда два или три человека работают над одними и теми же проектами.
Лучшая особенность screen
это Byobu (ранее экранные профили), который поставляется с Ubuntu по умолчанию с Jaunty: https://launchpad.net/byobu
Это менеджер конфигурации с очень хорошими настройками по умолчанию, тоннами уведомлений о состоянии и полезными сочетаниями клавиш (например, f2 для нового экрана, f3-f4 для предыдущей / следующей и т. Д.)
Я действительно больше никуда не хожу без этого:)
Не совсем "скрытая особенность"; но правильно настроенный файл.screenrc может иметь огромное значение. Один из лучших примеров можно найти в googling screenrc и 'brad sims' - у него есть отличный файл для работы.
Тем не менее, мой любимый параметр будет bindkey:
# bind F7 to detach screen session from this terminal
# bind F8 to kill current screen window.
# bind F9 to create a new screen
# bind F10 to rename current screen window
# bind F11 to move to previous window
# bind F12 to move to next window
bindkey -k k7 detach
bindkey -k k8 kill
bindkey -k k9 screen
bindkey -k k; title
bindkey -k F1 prev
bindkey -k F2 next
Я не могу вспомнить, у кого я это украл (кто-то на dotfile.org). Я слегка изменил его для ssh:
#!/bin/sh
# scr - Runs a command in a fresh screen
#
# Get the current directory and the name of command
wd=`pwd`
cmd=$1
shift
# We can tell if we are running inside screen by looking
# for the STY environment variable. If it is not set we
# only need to run the command, but if it is set then
# we need to use screen.
if [ -z "$STY" ]; then
$cmd $*
else
# Screen needs to change directory so that
# relative file names are resolved correctly.
screen -X chdir $wd
# Ask screen to run the command
if [ $cmd == "ssh" ]; then
screen -X screen -t ""${1##*@}"" $cmd $*
else
screen -X screen -t "$cmd $*" $cmd $*
fi
fi
Затем я установил следующие псевдонимы bash:
vim() {
scr vim $*
}
man() {
scr man $*
}
info() {
scr info $*
}
watch() {
scr watch $*
}
ssh() {
scr ssh $*
}
Он открывает новый экран для указанных выше псевдонимов и, если он использует ssh, переименовывает заголовок экрана с именем хоста ssh.
Ура z0mbix
Возможность смены управляющей клавиши с -это при запуске экрана. Я использую это, чтобы я мог вкладывать сеансы экрана друг в друга. Пример: "screen -e ^w^x" делает ключ управления ctr-w.
Одна вещь, которую я считаю полезной, заключается в том, что экран может эмулировать большую ширину, чем ваш терминал. Я считаю это полезным, если я использую less
к реальным файлам журнала, и я не хочу, чтобы строки переносились. С помощью:
Ctrl-A:width -w 999
Я могу установить screen
должен быть шире, чем мой терминал, и регистрировать строки в less
не заверну.
Не "скрытая" функция, но возможность поделиться сеансом экрана с другим активным пользователем очень полезна.
Существуют сложные способы настройки общего доступа к экрану, включая права доступа и управление именами пользователей. То, что я чаще всего делаю с коллегами, гораздо быстрее и грязнее:
- Войдите в машину, о которой идет речь, в новом окне.
- Разрешить кому-либо писать в мой терминал:
chmod 777 $(tty)
- Судо на свой счет:
sudo su <username>
- Поделитесь своим экраном:
screen -x <session>
Это не требует предварительной настройки или обмена паролями.
Одна приятная особенность: вы можете использовать backtick
добавить дополнительную информацию для отображения в подписи. Например, у меня есть скрипт, который выводит однострочную сводку количества новых писем в разных папках, и у меня он появляется в нижней строке, если мой сеанс экрана вместе с именем хоста с конфигом выглядит так:
backtick 1 15 15 /home/waltermundt/bin/newmail
caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"
Ключом является бит%1`, который относится к выводу задания обратной связи 1.
(Я использую hardstatus
в качестве строки заголовка xterm и установить ее по-другому, таким образом, использование caption
вместо hardstatus alwayslastline
.)
Это основная функция, но, конечно же, лучше всего использовать Ctrl-A: общаться напрямую с экраном. : screen -t title ssh hostname
и т.п.
Небольшую шпаргалку, которую я распечатал для себя;
(Примечание: всему предшествует Ctrl-A)
A: переименовать окно ": показать список окон d: сеанс освобождения
А также screen -D -R
отсоединить и снова подключить текущий сеанс (в случае, если вы каким-либо образом потеряете доступ к своему сеансу).
Ни одна из них не является действительно скрытыми функциями, но это те функции, которые я считаю наиболее полезными.