Pergunta

O que as pessoas pensam não são somente as coisas essenciais que você precisa saber sobre a Tela de excelente utilitário, mas as coisas que você acha que vale a pena ensinar a alguém, um iniciante, a partir do zero?

Eu apenas introduzido um amigo para Tela e eles estão tendo um tempo difícil habituar-se a ela.Assim, analogias e dicas úteis para se lembrar de liga, etc.seria incrível.

Foi útil?

Solução

Estou usando o ecrã durante mais de 10 anos e, provavelmente, usa menos da metade de recursos.Então, definitivamente não é necessário aprender todas as suas características de imediato (e eu não recomendo tentar).O meu dia-a-dia comandos são:

^A ^W - window list, where am I
^A ^C - create new window
^A space - next window
^A p - previous window
^A ^A - switch to previous screen (toggle)
^A [0-9] - go to window [0-9]
^A esc - copy mode, which I use for scrollback

Eu acho que é isso.Eu, às vezes, usar a tela dividida recursos, mas, certamente, não diariamente.Outra dica é se a tela parece ter bloqueado até porque você acertar algum aleatório combinação de teclas ao acidente, fazer tanto ^P e ^A ^P para tentar desbloqueá-lo.

Outras dicas

Eu não podia ter usado a tela até que eu encontrei uma maneira de definir uma "barra de status" na parte inferior da tela, que mostra o que 'tab' ou a 'tela virtual' você está e o que os outros existem.Aqui está a minha configuração:

[roel@roel ~]$ cat .screenrc
# Here comes the pain...
caption always "%{=b dw}:%{-b dw}:%{=b dk}[ %{-b dw}%{-b dg}$USER%{-b dw}@%{-b dg}%H %{=b dk}] [ %= %?%{-b dg}%-Lw%?%{+b dk}(%{+b dw}%n:%t%{+b dk})%?(%u)%?%{-b dw}%?%{-b dg}%+Lw%? %{=b dk}]%{-b dw}:%{+b dw}:"

backtick 2 5 5 $HOME/scripts/meminfo
hardstatus alwayslastline "%{+b dw}:%{-b dw}:%{+b dk}[%{-b dg} %0C:%s%a %{=b dk}]-[   %{-b dw}Load%{+b dk}:%{-b dg}%l %{+b dk}] [%{-b dg}%2`%{+b dk}] %=[ %{-b dg}%1`%{=b dk} ]%{-b dw}:%{+b dw}:%<"

sorendition "-b dw"
[roel@roel ~]$ cat ~/scripts/meminfo
#!/bin/sh
RAM=`cat /proc/meminfo | grep "MemFree" | awk -F" " '{print $2}'`
SWAP=`cat /proc/meminfo | grep "SwapFree" | awk -F" " '{print $2}'`
echo -n "${RAM}kb/ram ${SWAP}kb/swap"
[roel@roel ~]$

Ctrl+Um ?- mostra a tela de ajuda!

Se o seu amigo é o hábito de apertar ^A para chegar ao início da linha em bash, ele/ela é a por algumas surpresas, uma vez que ^A é a tela tecla de comando de ligação.Normalmente eu acabar com um ecrã bloqueado, possivelmente devido a algumas chave aleatória pressionado após ^A :-)

Nesses casos eu tento

^A s e ^A q bloquear/desbloquear o terminal de rolagem

para corrigir isso.Ir para o início de uma linha dentro da tela a sequência de teclas é ^A a

Você pode remapear a fuga chave do ctrl-a para ser outra chave de sua escolha, por isso, se você usá-lo para outra coisa, por exemplo,ir para o início da linha no bash, você só precisa adicionar uma linha ao seu ~/.screenrc arquivo.Para torná-lo ^b ^B use:

escape ^bB

A partir da linha de comando, use nomes de sessões para manter várias sessões sob controle.Eu uso uma sessão por tarefa, cada um com várias abas:

  screen -ls                lists your current screen sessions
  screen -S <name>          creates a new screen session called name
  screen -r <name>          connects to the named screen sessions

Quando utilizar tela, você só precisa de alguns comandos:

  ^A c          create a new shell
  ^A [0-9]      switch shell
  ^A k          kill the current shell
  ^A d          disconnect from screen
  ^A ?          show the help

Uma excelente referência rápida pode ser encontrado aqui.Bookmarking.

Algumas dicas para aqueles sorta familiarizado com a tela, mas que tendem a não se lembrar de coisas que ler na página de man:

  • Para alterar o nome de uma janela de tela é muito fácil: ctrl+Um mudança+Um.
  • Faltou-lhe a última mensagem a partir do ecrã? ctrl+um ctrl+m vai mostrar isso para você.
  • Se você deseja executar algo, como extrair um arquivo) e tem tela informá-lo quando houver uma alteração, uso ctrl+Um mudança+m na janela de destino.Aviso:ele vai deixar você saber se nada alterações.
  • Deseja selecionar janela de 15 diretamente?Tente estas em sua .screenrc arquivo:
bind  ! select 11
bind  @ select 12
bind \# select 13
bind  $ select 14
bind  % select 15
bind \^ select 16
bind  & select 17
bind  * select 18
bind  ( select 19
bind  ) select 10

Que atribui ctrl+um mudança+De 0 a 9 para windows 10 a 19.

http://www.debian-administration.org/articles/34

Eu escrevi que um par de anos atrás, mas ainda é uma boa introdução, que recebe uma grande quantidade de feedback positivo.

Eu "preciso" adicionar este:adicionar

bind s

para o seu .screenrc, se Você - como eu - usado para utilização de divisão windows, como C-a S divide a janela real, mas C-a s congela-lo.Então, eu só desactivado o congelamento de atalho.

ctrl+um é uma chave especial.

ctrl+um d - [d]etach, deixar de programas (irssi?) no plano de fundo, ir para casa.

ctrl+um c [c]riar uma nova janela ctrl+um 0-9 alternar entre janelas por número

tela -r - voltar para a sessão desanexado

Que cobre 90% de casos de uso.Não tente mostrar todas as funcionalidades no momento.

Ctrl+Um é a base de comando

Ctrl+Um N = ir para a ***N***ext tela

Ctrl+Um P = ir para a ***P***revious tela

Ctrl+Um C = ***C** * *riar nova tela

Ctrl+Um D = ***D***etach sua tela

Não é realmente essencial, não apenas relacionadas com a tela, mas permitindo 256 cores no meu terminal, o GNU Screen e Vim melhorou a minha experiência de ecrã grande de tempo (especialmente desde que eu o código no Vim cerca de 8h de um dia - há grande olho-amigável colorschemes).

Há alguns trabalho interessante sendo feito na obtenção de um bom gnu-tela de configuração acontecendo por padrão na próxima versão do Ubuntu Server, que inclui o uso da parte inferior da tela para mostrar todas as janelas, bem como outras informações úteis, máquina de detalhes (como # atualizações disponíveis e se a máquina precisa de um reboot).Provavelmente, você pode pegar sua .screenrc e personalizá-lo às suas necessidades.

A maioria dos comandos úteis que eu tenho em meu .screenrc são os seguintes

shelltitle "$ |bash" # make screen assign window titles automatically
hardstatus alwayslastline "%w" # show all window titles at bottom line of term

Desta forma eu sempre sei o que janelas estão abertas, e o que está sendo executado no-los no momento, também.

A primeira modificação que eu te faça .screenrc é para alterar o comando de escape.Não, ao contrário de muitos de vocês, eu não gosto do padrão Ctrl-Uma sequência devido à sua interferência com que fundamental a funcionalidade de quase todos os outros do contexto.No meu .screenrc arquivo, adicionar:

escape `e

Que backtick-e.

Isto permite-me usar o backtick como a tecla escape (por exemplo,para criar uma nova tela, pressione backtick-c, desanexar é backtick-d, backtick-?é ajuda, backtick-backtick é tela anterior, etc.).A única maneira de interferir (e eu tinha que quebrar-me do hábito) está usando backtick na linha de comando para capturar a saída de execução, ou colar qualquer coisa que contém um backtick.Para o primeiro, modifiquei o meu hábito de usar o BASH $(comando) da convenção.Para o último, eu normalmente só pop abrir um xterm ou desanexar da tela, em seguida, colar o conteúdo com o backtick.Finalmente, se eu quiser inserir um literal backtick, eu simplesmente pressione backtick-e.

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

Então eu defini o seguinte bash aliases:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Ele abre uma nova tela para o acima aliases e iff usando o ssh, ele muda a tela de título com o ssh da máquina.

Felicidades z0mbix

Eu gostaria de configurar uma sessão de tela com nomes descritivos para o windows.↑ a Um vai deixar você dar um nome para a janela atual e ^um " vai dar a você uma lista do seu windows.Quando terminar, retirar a tela com ^a d e re-conectar com tela -R

Alguém postou uma pergunta semelhante a essa no Falha Do Servidor.

Eu gosto de usar screen -d -RR para criar automaticamente/anexar a uma determinada tela.Eu criei bash funções para torná-la mais fácil...

function mkscreen
{
    local add=n

    if [ "$1" == '-a' ]; then
        add=y
        shift;
    fi

    local name=$1;
    shift;
    local command="$*";

    if [ -z "$name" -o -z "$command" ]; then
        echo 'Usage: mkscreen [ -a ] name command

    -a          Add to .bashrc.' 1>&2;
        return 1;
    fi

    if [ $add == y ]; then
        echo "mkscreen $name $command" >> $HOME/.bashrc;
    fi

    alias $name="/usr/bin/screen -d -RR -S $name $command";

    return 0;
}

function rmscreen
{
    local delete=n

    if [ "$1" == '-d' ]; then
        delete=y
        shift;
    fi

    local name=$1;

    if [ -z "$name" ]; then
        echo 'Usage: rmscreen [ -d ] name

    -d          Delete from .bashrc.' 1>&2;
        return 1;
    fi

    if [ $delete == y ]; then
        sed -i -r "/^mkscreen $name .*/d" $HOME/.bashrc;
    fi

    unalias $name;

    return 0;
}

Eles criar um alias para /usr/bin/screen -d -RR -S $name $command.Por exemplo, eu gosto de usar o irssi em uma sessão de tela, então, na minha .bashrc (sob essas funções), eu tenho:

mkscreen irc /usr/bin/irssi

Posso, então, basta digitar irc em um terminal para entrar em irssi.Se a tela 'irc' ainda não existe, então ele é criado e /usr/bin/irssi é executado a partir dele (que liga automaticamente, claro).Se ele já estiver sendo executado, então eu só volte a ele, à força de desanexação de qualquer outra instância que já está anexado a ele.É muito bom.

Outro exemplo é a criação temporária de tela aliases para perldocs como eu venho por entre eles:

mkscreen perlipc perldoc perlipc
perlipc # Start reading the perldoc, ^A d to detach.
...
# Later, when I'm done reading it, or at least finished
# with the alias, I remove it.
rmscreen perlipc 

A opção-a (deve ser o primeiro argumento) acrescenta a tela de alias .bashrc (por isso é persistente) e -d remove-lo (estes podem ser potencialmente destrutivo, por isso use por sua conta e risco).xD

Acrescentar:

Outro bash-ism que eu achar conveniente quando se trabalha muito com a tela:

alias sls='/usr/bin/screen -ls'

De que maneira você pode listar suas telas com muito menos pressionamentos de teclas.Eu não sei se sls colide com qualquer utilitários existentes, mas não no momento em meu sistema, então eu fui para ela.

↑ A Uma muda de volta para a tela que você acabou de visitar.

^A é um ótimo char especial para UNIX pessoas, mas se o uso da tela de falar para OpenVMS, em seguida, não sendo capaz de ^A é vai fazer você ficar careca prematuramente.Em VMS, se a edição de um comando DCL antes da execução do buffer de histórico, o modo de Inserção está fora (tem que ser por algumas razões eu não vou entrar aqui) ..para ativá-la assim que você não sobre-escreva o seu comando, ao invés de incluir espaço para as coisas, você tem que acertar ↑

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top