Поскольку я использую * команда nix screen
весь день, и я не мог найти никого, кто бы начал этот вопрос, я решил, что его нужно начать. Вы знаете, что такое вики-сообщество, один ответ на каждую функцию, чтобы мы все могли проголосовать.
я люблю используя его для подключения к последовательным консолям, т.е.
screen /dev/ttyS0 19200
Эта команда просто открывает соединение с последовательным портом 0 (ttyS0) со скоростью передачи 19200 бод.
Лучшая особенность screen
- это Byobu (ранее - профили экрана), который по умолчанию поставляется с Ubuntu, начиная с Jaunty: https://launchpad.net/byobu
Это менеджер конфигурации с очень хорошими настройками по умолчанию, множеством уведомлений о состоянии и полезными сочетаниями клавиш (например, f2 для нового экрана, f3-f4 для предыдущего / следующего и т. Д.)
Я уж без него уже никуда не пойду :)
Из ответа KTamas: Несколько человек могут использовать один и тот же экран, т.е. если ваш друг ssh
в ваш компьютер, затем он сможет подключиться к вашему экрану. Здорово, когда два-три человека работают над одними и теми же проектами.
Не совсем «скрытая функция»; но правильно настроенный файл .screenrc может иметь огромное значение. Один из лучших примеров можно найти, выполнив поиск в Google 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
Я считаю полезным то, что экран может имитировать большую ширину, чем ваш терминал. Я считаю это полезным, если использую less
в настоящие файлы журнала, и я не хочу, чтобы строки переносились. С помощью:
Ctrl-A:width -w 999
Я могу установить screen
должен быть шире, чем мой терминал, и строки журнала в less
не оборачивается.
Возможность изменить контрольную клавишу с -et при запуске экрана. Я использую его, чтобы вкладывать сеансы экрана друг в друга. Пример: «screen -e ^ w ^ x» превращает управляющую клавишу ctr-w.
Одна приятная особенность: вы можете использовать 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
.)
Не «скрытая» функция, но возможность поделиться сеансом экрана с другим активным пользователем очень полезна.
Существуют сложные способы настройки совместного использования экрана, включая разрешения на управление доступом и управление именами пользователей. То, что я чаще всего делаю с коллегами, намного быстрее и грязнее:
chmod 777 $(tty)
sudo su <username>
screen -x <session>
Это не требует предварительной настройки или совместного использования пароля.
Маленькая шпаргалка, которую я распечатал для себя;
(Примечание: всему предшествует Ctrl-A)
A: rename a window ": show a list of windows d: detatch session
И screen -D -R
для отключения и повторного подключения текущего сеанса (на случай, если вы каким-то образом потеряете доступ к сеансу).
На самом деле ни одна из этих функций не является скрытой, но это те функции, которые я считаю наиболее полезными.
Это основная функция, но, конечно, самое лучшее Ctrl-A: разговаривать прямо с экраном. : screen -t title ssh hostname
и т.п.