Скрытые возможности `экрана`

Так как я использую команду *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 не заверну.

Не "скрытая" функция, но возможность поделиться сеансом экрана с другим активным пользователем очень полезна.

Существуют сложные способы настройки общего доступа к экрану, включая права доступа и управление именами пользователей. То, что я чаще всего делаю с коллегами, гораздо быстрее и грязнее:

  1. Войдите в машину, о которой идет речь, в новом окне.
  2. Разрешить кому-либо писать в мой терминал: chmod 777 $(tty)
  3. Судо на свой счет: sudo su <username>
  4. Поделитесь своим экраном: 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 отсоединить и снова подключить текущий сеанс (в случае, если вы каким-либо образом потеряете доступ к своему сеансу).

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

Другие вопросы по тегам