Vra

Wat dink mense is nie net die noodsaaklike dinge wat jy moet weet oor die uitstekende Skerm-nutsding nie, maar die dinge wat jy dink die moeite werd is om iemand, 'n beginner, van die grond af te leer?

Ek het sopas 'n vriend aan Screen voorgestel en hulle sukkel om daaraan gewoond te raak.So analogieë en handige wenke om binde te onthou ens.sal wonderlik wees.

Was dit nuttig?

Oplossing

Ek het al met behulp van die skerm vir meer as 10 jaar en waarskynlik minder as die helfte van die funksies. So dit is beslis nie nodig om al sy funksies te leer dadelik (en ek sal nie aanbeveel probeer). My dag-tot-dag-opdragte is:

^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

Ek dink dit is dit. Ek gebruik soms die gesplete skerm funksies, maar beslis nie elke dag. Die ander punt is as skerm lyk opgesluit omdat jy 'n paar random sleutel kombinasie per ongeluk getref, moenie beide ^ Q en ^ A ^ Q om te probeer om dit te ontsluit.

Ander wenke

Ek kon nie gewoond te raak aan die skerm totdat ek 'n pad na 'n "status bar" aan die onderkant van die skerm stel gevind wat wys wat 'blad' of 'n virtuele skerm 'jy op en wat ander mense daar . Hier is my opstel:

[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 + A ? - wys die hulp skerm

As jou vriend is in die gewoonte om te druk ^A na die begin van die lyn in bash te kry, sal hy / sy is in vir 'n paar verrassings, want ^A is die skerm opdrag sleutel bindend. Gewoonlik ek uiteindelik met 'n bevrore skerm, moontlik as gevolg van 'n paar random sleutel ek na ^A :-) gedruk

In daardie gevalle ek probeer

^A s en ^A q blok / unblock terminale blaai

op te los nie. Om te gaan na die begin van 'n lyn in die skerm die sleutel ry ^A a

Jy kan die ontsnapping sleutel uit Ctrl-A verander om na 'n ander sleutel van jou keuse, so as jy dit gebruik vir iets anders, bv om te gaan na die begin van die lyn in bash, jy hoef net 'n lyn toe te voeg tot jou ~ / .screenrc lêer. Maak dit ^ b of ^ B gebruik:

escape ^bB

Van die command line, gebruik name sessies om verskeie sessies onder beheer te hou. Ek gebruik een sessie per taak, elk met verskeie afdelings:

  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

By die gebruik van die skerm wat jy nodig het slegs 'n paar opdragte:

  ^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

'n uitstekende vinnige verwysing gevind kan word hier . Die moeite werd om Marken.

'N paar wenke vir diegene Sorta vertroud is met die skerm, maar wat geneig is om nie dinge wat hulle lees in die man bladsy onthou:

  • Om die naam van 'n skerm venster verander is baie maklik: Ctrl + A verskuif + A .
  • Het jy die laaste boodskap van die skerm mis? Ctrl + n Ctrl + m sal dit weer wys vir jou.
  • As jy wil iets (soos 'n lêer stert) hardloop en het die skerm vir jou sê wanneer daar 'n verandering, gebruik Ctrl + A verskuif + m op die teiken venster. Waarskuwing: dit sal jou laat weet as enigiets veranderings
  • .
  • Wil jy venster 15 direk kies? Probeer hierdie in jou .screenrc lêer:
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

Dit ken Ctrl + n verskuif + 0 tot 9 vir vensters 10 deur 19.

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

Ek het geskryf dat 'n paar jaar gelede, maar dit is nog steeds 'n goeie inleiding wat 'n baie positiewe terugvoer kry.

Ek "moet" voeg hierdie: voeg

bind s

om jou .screenrc, as U - soos ek - wat gebruik word om split vensters gebruik, as C-a S split die werklike venster, maar C-a s vries dit. So ek het net afgeskakel die vries kortpad.

Ctrl + n is 'n spesiale sleutel.

Ctrl + n d -. [D] etach, laat programme (? Irssi) in agtergrond, gaan huis toe

Ctrl + n c [c] reate 'n nuwe venster Ctrl + n 0-9 skakel tussen vensters volgens getal

skerm-r - kom terug na losstaande sessie

Dit dek 90% van die gebruik gevalle. Moenie probeer om al die funksies te wys op die enkele tyd.

Ctrl + A is die basis opdrag

Ctrl + A N = gaan na die *** N *** ext skerm

Ctrl + A P = gaan na die *** P *** ge skerm

Ctrl + A C = *** C *** reate nuwe skerm

Ctrl + A D = *** D *** etach jou skerm

Nie regtig noodsaaklik nie uitsluitlik verband hou met die skerm, maar sodat 256 kleure in my terminale, GNU skerm en Vim verbeter my skerm ervaring big time (veral omdat ek-kode in Vim oor 8h per dag - daar is 'n paar groot eye-vriendelike colorschemes) <. / p>

Daar is 'n paar interessante werk gedoen oor hoe om 'n goeie GNU-skerm opset gebeur deur verstek in die volgende weergawe van Ubuntu Server, wat insluit die gebruik van die onderkant van die skerm om al die vensters asook ander nuttige masjien besonderhede (soos # updates wys beskikbaar is en of die masjien moet 'n reboot). Jy kan waarskynlik gryp hul .screenrc en pas dit aan jou behoeftes.

Die mees bruikbare instruksies Ek het in my .screenrc is die volgende

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

Op hierdie manier het ek altyd weet wat vensters is oop, en wat loop in hulle op die oomblik ook.

Die eerste verandering wat ek maak om .screenrc is om die ontsnapping opdrag verander. Nie in teenstelling met baie van julle, ek hou nie van die standaard Ctrl-A volgorde as gevolg van sy inmenging met daardie fundamentele funksie in feitlik elke ander konteks. In my .screenrc lêer, ek voeg:

ontsnap `e

Dit is backtick-e.

Dit stel my aan die backtick as die Escape-sleutel te gebruik (bv om 'n nuwe skerm te skep, ek druk backtick-c, los is backtick-d, backtick-? Is hulp, backtick-backtick is vorige skerm, ens) . Die enigste manier om dit inmeng (en ek moes myself te breek van die gewoonte) is die gebruik van backtick op die command line om uitvoering uitset te vang, of enigiets wat 'n backtick bevat plak. Vir die voormalige, het ek my gewoonte verander word deur gebruik te maak van die Bash $ (opdrag) konvensie. Vir die laasgenoemde, het ek gewoonlik net pop oop 'n ander xterm of losmaak van die skerm dan plak die inhoud met die backtick. Ten slotte, as ek wil 'n letterlike backtick voeg, ek druk net backtick-e.

Ek kan nie onthou wat ek hierdie gesteel uit (iemand op dotfile.org). Ek het dit effens aangepaste vir 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

Toe het ek die volgende bash aliasse:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Dit maak 'n nuwe skerm vir die bogenoemde aliasse en IFF met behulp van ssh, dit herbenoem die skerm titel met die ssh masjien naam.

Cheers z0mbix

Ek hou van om 'n skerm sessie met beskrywende name vir die vensters. ^ 'N A sal toelaat dat jy 'n naam 'n "sal gee jou 'n lys van jou vensters te gee aan die huidige venster en ^. As jy klaar is, los die skerm met ^ n d en re-heg met skerm -R

Iemand het 'n soortgelyke vraag gepos word aan hierdie op Server Fout .

Ek hou daarvan om te gebruik screen -d -RR om outomaties te skep/aan 'n gegewe skerm te heg.Ek het bash-funksies geskep om dit makliker te maak ...

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

Hulle skep 'n alias vir /usr/bin/screen -d -RR -S $name $command.Byvoorbeeld, ek hou daarvan om irssi in 'n skermsessie te gebruik, so in my .bashrc (onder daardie funksies), het ek:

mkscreen irc /usr/bin/irssi

Dan kan ek maar tik irc in 'n terminaal om in irssi te kom.As die skerm 'irc' nog nie bestaan ​​nie, word dit geskep en /usr/bin/irssi word daaruit uitgevoer (wat natuurlik outomaties verbind).As dit reeds aan die gang is, heg ek net weer daaraan en maak enige ander instansie wat reeds daaraan gekoppel is, met geweld los.Dis nogal lekker.

Nog 'n voorbeeld is om tydelike skermaliasse vir perldocs te skep soos ek hulle teëkom:

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 

Die -a-opsie (moet eerste argument wees) voeg die skermalias by .bashrc (so dit is aanhoudend) en -d verwyder dit (dit kan moontlik vernietigend wees, dus gebruik dit op eie risiko).xD

Voeg by:

Nog 'n bash-isme wat ek gerieflik vind as ek baie met skerm werk:

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

Op hierdie manier kan jy jou skerms lys met baie minder toetsaanslagen.Ek weet nie of sls bots met enige bestaande nutsprogramme, maar dit het nie destyds op my stelsel gedoen nie, so ek het daarvoor gegaan.

^ A A skakel terug na die skerm wat jy nou net vandaan kom.

^ A is 'n groot spesiale kar vir UNIX mense, maar as jou gebruik van die skerm om OpenVMS te praat, dan nie in staat is om ^ A gaan jy kaal voortydig maak. In VMS, as jou redigering van 'n DCL opdrag voor uitvoering van die geskiedenis buffer, af Voeg af (moet wees vir 'n paar redes wat ek sal nie in hier) .. om dit te draai op, sodat jy doen nie oor- tik jou bevel eerder as ruimte dinge uit, jy het om te tref ^ A

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top