Domanda

Cosa pensa la gente che non siano solo le cose essenziali che devi sapere sull'eccellente utility Screen ma anche le cose che ritieni utile insegnare a qualcuno, un principiante, da zero?

Ho appena presentato Screen a un amico e per lui è difficile abituarsi.Quindi analogie e consigli pratici per ricordare i legami, ecc.sarebbe fantastico.

È stato utile?

Soluzione

Utilizzo lo schermo da oltre 10 anni e probabilmente utilizzo meno della metà delle funzionalità.Quindi sicuramente non è necessario apprenderne subito tutte le funzionalità (e non consiglierei di provarci).I miei comandi quotidiani sono:

^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

Penso che sia tutto.A volte utilizzo le funzionalità dello schermo diviso, ma certamente non quotidianamente.L'altro suggerimento è che se lo schermo sembra essersi bloccato perché hai premuto per sbaglio una combinazione di tasti casuale, esegui sia ^Q che ^A ^Q per provare a sbloccarlo.

Altri suggerimenti

Non sono riuscito ad abituarmi allo schermo finché non ho trovato un modo per impostare una "barra di stato" nella parte inferiore dello schermo che mostra su quale "scheda" o "schermo virtuale" ti trovi e quali altri ci sono.Ecco la mia configurazione:

[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+UN ?- mostra la schermata di aiuto!

Se il tuo amico ha l'abitudine di insistere ^A per arrivare all'inizio della riga in bash, avrà delle sorprese, da allora ^A è l'associazione dei tasti di comando sullo schermo.Di solito mi ritrovo con lo schermo bloccato, probabilmente a causa di qualche tasto casuale che ho premuto dopo ^A :-)

In questi casi ci provo

^A s E ^A q bloccare/sbloccare lo scorrimento del terminale

per sistemarlo.Per andare all'inizio di una riga all'interno dello schermo la sequenza di tasti è ^A a

Puoi rimappare il tasto Esc da ctrl-A in modo che sia un altro tasto a tua scelta, quindi se lo usi per qualcos'altro, ad es.per andare all'inizio della riga in bash, devi solo aggiungere una riga al tuo file ~/.screenrc.Per farlo ^b o ^B usa:

escape ^bB

Dalla riga di comando, utilizzare le sessioni dei nomi per tenere sotto controllo più sessioni.Utilizzo una sessione per attività, ciascuna con più schede:

  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 usi screen hai solo bisogno di pochi comandi:

  ^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

È possibile trovare un eccellente riferimento rapido Qui.Vale la pena aggiungerlo ai segnalibri.

Alcuni suggerimenti per coloro che hanno familiarità con lo schermo, ma che tendono a non ricordare le cose che hanno letto nella pagina man:

  • Cambiare il nome di una finestra sullo schermo è molto semplice: Ctrl+UN spostare+UN.
  • Ti sei perso l'ultimo messaggio sullo schermo? Ctrl+UN Ctrl+M te lo mostrerò di nuovo.
  • Se vuoi eseguire qualcosa (come seguire un file) e fare in modo che lo schermo ti indichi quando c'è una modifica, usa Ctrl+UN spostare+M sulla finestra di destinazione.Avvertimento:ti farà sapere se nulla i cambiamenti.
  • Vuoi selezionare direttamente la finestra 15?Prova questi nel tuo .screenrc file:
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

Questo assegna Ctrl+UN spostare+da 0 a 9 per Windows da 10 a 19.

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

L'ho scritto un paio di anni fa, ma è comunque una buona introduzione che riceve molti feedback positivi.

"devo" aggiungere questo:aggiungere

bind s

alla tua .screenrc, se tu, come me, usavi le finestre divise, come C-a S divide la finestra effettiva, ma C-a s lo congela.Quindi ho semplicemente disabilitato la scorciatoia di blocco.

Ctrl+UN è una chiave speciale.

Ctrl+UN D - [d]etach, lascia i programmi (irssi?) in sottofondo, torna a casa.

Ctrl+UN C [c]crea una nuova finestraCtrl+UN 0-9 passare da una finestra all'altra in base al numero

screen -r - torna alla sessione scollegata

Ciò copre il 90% dei casi d'uso.Non provare a mostrare tutte le funzionalità contemporaneamente.

Ctrl+UN è il comando di base

Ctrl+UN N = vai alla ***N***schermata successiva

Ctrl+UN P = vai alla schermata ***P***precedente

Ctrl+UN C = ***C***crea una nuova schermata

Ctrl+UN D = ***S***stacca lo schermo

Non proprio essenziale, non solo legato allo schermo, ma abilitando 256 colori nel mio terminale, GNU Screen e Vim migliorato alla grande la mia esperienza sullo schermo (soprattutto da quando codifico in Vim circa 8 ore al giorno - ci sono alcuni fantastici schemi di colori piacevoli per la vista).

Ce ne sono alcuni lavoro interessante fatto per ottenere una buona configurazione dello schermo gnu per impostazione predefinita nella prossima versione di Ubuntu Server, che include l'uso della parte inferiore dello schermo per mostrare tutte le finestre e altri dettagli utili sulla macchina (come il numero di aggiornamenti disponibili e se la macchina necessita di un riavvio).Probabilmente puoi prenderli .screenrc e personalizzalo in base alle tue esigenze.

I comandi più utili che ho nel mio file .screenrc sono i seguenti

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

In questo modo so sempre quali finestre sono aperte e cosa è in esecuzione in esse in quel momento.

La prima modifica che apporto a .screenrc è cambiare il comando escape.Non diversamente da molti di voi, non mi piace la sequenza predefinita Ctrl-A a causa della sua interferenza con quella funzionalità fondamentale in quasi ogni altro contesto.Nel mio file .screenrc, aggiungo:

scappare `e

Questo è il backtick-e.

Ciò mi consente di utilizzare il backtick come tasto Esc (ad es.per creare una nuova schermata, premo backtick-c, stacco backtick-d, backtick-?è un aiuto, backtick-backtick è la schermata precedente, ecc.).L'unico modo in cui interferisce (e ho dovuto perdere l'abitudine) è usare il backtick sulla riga di comando per acquisire l'output dell'esecuzione o incollare qualsiasi cosa che contenga un backtick.Per quanto riguarda il primo, ho modificato la mia abitudine utilizzando la convenzione BASH $(comando).Per quest'ultimo, di solito apro semplicemente un altro xterm o lo stacco dallo schermo, quindi incollo il contenuto contenente il backtick.Infine, se desidero inserire un apice inverso letterale, premo semplicemente backtick-e.

Non riesco a ricordare a chi l'ho rubato (qualcuno su dotfile.org).L'ho modificato leggermente per 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

Quindi ho impostato i seguenti alias bash:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Apre una nuova schermata per gli alias di cui sopra e, se utilizza ssh, rinomina il titolo della schermata con il nome host ssh.

Saluti z0mbix

Mi piace impostare una sessione dello schermo con nomi descrittivi per le finestre.^a A ti permetterà di dare un nome alla finestra corrente e ^a " ti darà un elenco delle tue finestre.Al termine, stacca lo schermo con ^a d e ricollegalo con screen -R

Qualcuno ha postato una domanda simile a questa Errore del server.

Mi piace usare screen -d -RR per creare/allegare automaticamente a una determinata schermata.Ho creato funzioni bash per renderlo più semplice...

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;
}

Creano un alias per /usr/bin/screen -d -RR -S $name $command.Ad esempio, mi piace usare irssi in una sessione dello schermo, quindi nel mio .bashrc (sotto quelle funzioni), ho:

mkscreen irc /usr/bin/irssi

Quindi posso semplicemente digitare irc in un terminale per entrare in irssi.Se lo schermo 'irc' non esiste ancora, viene creato e da esso viene eseguito /usr/bin/irssi (che si connette automaticamente, ovviamente).Se è già in esecuzione, mi ricollego ad esso, staccando forzatamente qualsiasi altra istanza già collegata ad esso.È piuttosto carino.

Un altro esempio è la creazione di alias di schermo temporanei per i perldoc non appena li incontro:

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 

L'opzione -a (deve essere il primo argomento) aggiunge l'alias dello schermo a .bashrc (quindi è persistente) e -d lo rimuove (possono essere potenzialmente distruttivi, quindi utilizzali a tuo rischio e pericolo).xD

Aggiungere:

Un altro bashismo che trovo utile quando lavoro molto con lo schermo:

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

In questo modo puoi elencare i tuoi schermi premendo molti meno tasti.Non so se sls si scontra con qualsiasi utilità esistente, ma in quel momento non era presente sul mio sistema, quindi l'ho provato.

^A A torna alla schermata da cui sei appena arrivato.

^A è un carattere speciale per gli utenti UNIX, ma se usi lo schermo per parlare con OpenVMS, non essere in grado di ^A ti renderà calvo prematuramente.In VMS, se stai modificando un comando DCL prima dell'esecuzione dal buffer della cronologia, la modalità di inserimento è disattivata (deve essere per alcuni motivi di cui non entrerò qui).per attivarlo in modo da non sovrascrivere il comando anziché distanziare le cose, devi premere ^A

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top