Recursos ocultos do `screen`

Respostas:

31

Eu adoro usá-lo para conectar a consoles seriais, ou seja,

screen /dev/ttyS0 19200

Este comando simplesmente abre uma conexão à porta serial 0 (ttyS0) com uma velocidade de transmissão de 19200

Scott Pack
fonte
esta é uma das minhas coisas favoritas a As pessoas enlouquecem com, realmente um dos recursos menos esperados da tela
epic9x
11
E verdadeiramente um dos meus favoritos. Não há necessidade de lidar com, ou configurar, minicom, conservador, etc. Eu me senti como uma criança em uma loja de doces quando descobri isso.
9759 Scott Pack
Absolutamente - é bom ter uma sessão de tela aberta, dividida em duas janelas, com os dois dongles USB-Seriais visíveis.
dotwaffle
10

A melhor característica do screenByobu (anteriormente screen-profiles) é fornecida com o Ubuntu por padrão desde o Jaunty: https://launchpad.net/byobu

É um gerenciador de configuração com padrões muito bons, toneladas de notificações de status e atalhos de teclado úteis (por exemplo, f2 para nova tela, f3-f4 para prev / next etc.)

Eu realmente não vou a lugar nenhum sem ele :)

KTamas
fonte
10

Da resposta do KTamas: Mais de uma pessoa pode usar a mesma tela, ou seja, se um amigo seu estiver sshno seu computador, ele poderá se conectar à sua tela. É ótimo quando duas ou três pessoas estão trabalhando nos mesmos projetos.

Josh
fonte
11
Isso é muito melhor para acompanhar o que os usuários de suporte remoto estão fazendo e interromper a sessão, se não forem bons!
Tom O'Connor
6

Não é exatamente um "recurso oculto"; mas um arquivo .screenrc configurado corretamente pode fazer muita diferença. Um dos melhores exemplos lá fora, pode ser encontrado no google screenrc e 'brad sims' - ele tem um excelente arquivo para mexer.

Dito isto, minha configuração favorita seria 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
Eddy
fonte
2
Considerando que ctrl + a é usado com muita frequência fora da tela (início da linha no bash alguém?) Eu gosto disso.
Scott pacote de
11
ctrl + a / ctrl + e para mover o cursor, mas também quando o minicom está sendo executado em uma tela. Ctrl + a, a, o para opções ...
petrus
6

Não me lembro de quem roubei isso (alguém no dotfile.org). Eu o modifiquei um pouco para 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

Em seguida, defino os seguintes aliases de bash:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Ele abre uma nova tela para os aliases acima e, se usando ssh, renomeia o título da tela com o nome do host ssh.

Cheers z0mbix

z0mbix
fonte
: o. Você levantou e adaptou de mim? gist.github.com/137214
VxJasonxV
Não, acho que foi de um membro da equipe do last.fm que bloguou sobre isso uma vez.
Z0mbix
4

Uma coisa que acho útil é que a tela possa emular uma largura maior que o seu terminal. Acho isso útil se estou usando lessarquivos de log reais e não quero que as linhas sejam quebradas. Usando:

Ctrl-A:width -w 999

Eu posso definir screenque seja mais largo que o meu terminal, e as linhas de log lessnão serão quebradas.

Josh
fonte
10
Para sua informação, a opção less -sdirá para não quebrar linhas. Você pode usar Lefte Rightpara rolar as linhas.
11559 MikeyB
4

A capacidade de alterar a tecla de controle com -ethat ao iniciar a tela. Eu o uso para poder aninhar sessões de tela umas nas outras. Exemplo: "screen -e ^ w ^ x" faz com que a tecla de controle ctr-w.

jeffball
fonte
2

Um recurso interessante: você pode usar backtickpara extrair informações extras para exibição em uma legenda. Por exemplo, eu tenho um script que gera um resumo de uma linha de novas contagens de email em várias pastas e aparece na linha inferior se minha sessão de tela junto com o nome do host com uma configuração parecida com esta:

backtick 1 15 15 /home/waltermundt/bin/newmail

caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"

A chave é o% 1` bit, que se refere à saída do trabalho de backtick 1.

(Eu uso hardstatuscomo a sequência do título xterm e a defini de maneira diferente, portanto, use em captionvez de hardstatus alwayslastline.)

Walter Mundt
fonte
2

Não é um recurso "oculto", mas a capacidade de compartilhar uma sessão de tela com outro usuário ativo é muito útil.

Existem maneiras complicadas de configurar o compartilhamento de tela, incluindo permissões de controle de acesso e gerenciamento de nome de usuário. O que costumo fazer com colegas de trabalho é muito mais rápido e sujo:

  1. Faça login na máquina em questão em uma nova janela.
  2. Permitir que alguém escreva no meu terminal: chmod 777 $(tty)
  3. Sudo na conta deles: sudo su <username>
  4. Compartilhe a tela deles: screen -x <session>

Isso não requer nenhuma configuração avançada ou compartilhamento de senha.

Michael H.
fonte
1

Uma pequena folha de dicas que imprimi para mim;

(Nota: Tudo é precedido por Ctrl-A)

A: renomeie uma janela   
": mostra uma lista de janelas   
d: sessão de desprendimento

E screen -D -Rpara desanexar e reconectar uma sessão em execução (caso você perca o acesso à sua sessão).

Nenhum desses recursos é realmente oculto, mas esses são os que eu acho mais úteis.

Michael Pobega
fonte
1

É um recurso essencial, mas é claro que o melhor é Ctrl-A:conversar diretamente com a tela. : screen -t title ssh hostnameetc.

Zac Thompson
fonte