GNU Tela Guia de Sobrevivência [fechado]
-
09-06-2019 - |
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.
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 ↑