Frage

Was sind Ihrer Meinung nach nicht nur die wesentlichen Dinge, die Sie über das hervorragende Screen-Dienstprogramm wissen müssen, sondern auch die Dinge, die Sie jemandem, einem Anfänger, von Grund auf beibringen sollten?

Ich habe gerade einem Freund Screen vorgestellt und es fällt ihm schwer, sich daran zu gewöhnen.Also Analogien und praktische Tipps zum Erinnern an Bindungen usw.das wäre großartig.

War es hilfreich?

Lösung

Ich bin seit über 10 Jahren und wahrscheinlich verbrauchen weniger als die Hälfte der Funktionen mit Bildschirm. So ist es auf jeden Fall nicht notwendig, alle ihre Funktionen zu lernen, sofort (und ich würde versuchen, nicht empfehlen). Mein Tag-zu-Tag-Befehle sind:

^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

Ich denke, das ist es. Manchmal benutze ich die Split-Screen-Funktionen, aber sicher nicht täglich. Die andere Spitze ist, wenn Bildschirm bis zu haben scheint gesperrt, weil Sie einige zufällige Tastenkombination zufällig getroffen, sie beide ^ Q und ^ A ^ Q, um zu versuchen, es zu entsperren.

Andere Tipps

Ich konnte nicht auf Bildschirm gewöhnen, bis ich einen Weg, um eine ‚Statusleiste‘ am unteren Rande des Bildschirms zu setzen gefunden, die zeigt, was ‚Tab‘ oder ‚virtueller Bildschirm‘ bist du auf, und die andere, die es . Hier ist mein Setup:

[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 ~]$

Strg + A ? - zeigt den Hilfebildschirm

Wenn Ihr Freund in der Gewohnheit ist ^A des Drückens auf den Anfang der Zeile in bash zu bekommen, er / sie ist in einigen Überraschungen, da ^A die Befehlstaste-Bildschirm ist verbindlich. Normalerweise beende ich mit einem gefrorenen Bildschirm, möglicherweise aufgrund eines zufälligen Schlüssels ich nach ^A :-) gedrückt

In den Fällen, ich versuche

^A s und ^A q Block / unblock Terminal Scrollen

zu beheben, dass. Um zum Anfang einer Zeile innerhalb Bildschirm wird die Tastenfolge ^A a

Sie können die Neuzuordnung der Escape-Taste von Strg-A ein weiterer Schlüssel Ihrer Wahl zu sein, so dass, wenn Sie es für etwas verwenden Sie sonst, zum Beispiel geht an den Anfang der Zeile in der Bash, brauchen Sie nur eine Zeile in ~ / .screenrc Datei hinzuzufügen. Um es ^ b oder ^ B Verwendung:

escape ^bB

Von der Befehlszeile verwenden, um Namen Sitzungen mehr Sitzungen unter Kontrolle zu halten. Ich benutze eine Sitzung pro Aufgabe, die jeweils mit mehreren Registerkarten:

  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

Wenn der Bildschirm verwenden, müssen Sie nur ein paar Befehle ein:

  ^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

Eine ausgezeichnete schnelle Referenz kann hier . Worth bookmarking.

Einige Tipps für die sorta vertraut mit Bildschirm, aber die sind in der Regel nicht an Dinge erinnern, sie in der man-Seite:

  • den Namen eines Bildschirmfenster zu ändern ist sehr einfach: ctrl + A verschieben + A .
  • Haben Sie verpassen die letzte Meldung Bildschirm? ctrl + a ctrl + m wird es für Sie noch einmal zeigen.
  • Wenn Sie etwas wollen (wie Tailing eine Datei) und haben Bildschirm Ihnen sagen, laufen, wenn es eine Änderung ist, verwenden Sie ctrl + A verschieben + m auf dem Zielfenster. Achtung: es wird Sie wissen lassen, wenn alles Änderungen
  • .
  • Möchten Sie Fenster auszuwählen 15 direkt? Versuchen Sie diese in Ihrer .screenrc-Datei:
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

Das ordnet ctrl + a verschieben + 0 bis 9 für Fenster 10 bis 19.

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

Ich schrieb, dass ein paar Jahren, aber es ist immer noch eine gute Einführung, die eine Menge positives Feedback bekommt.

I "muss" hinzufügen: add

bind s

Ihren .screenrc, wenn Sie - wie ich - verwendet Split-Fenster zu verwenden, da C-a S das eigentliche Fenster teilt, aber C-a s friert es. Also habe ich nur die Freeze-Verknüpfung deaktiviert.

ctrl + a ist eine spezielle Taste.

ctrl + a d -. [D] Etach, lassen Sie Programme (? Irssi) im Hintergrund, nach Hause gehen

ctrl + a c [c] reate ein neues Fenster ctrl + a 0-9 Umschalten zwischen Fenstern nach Anzahl

screen -r - zurück zu frei stehende Sitzung

Das deckt 90% der Anwendungsfälle. Versuchen Sie nicht, alle Funktionen an der einzigen Zeit zu zeigen.

Strg + A ist die Basis Befehl

Strg + A N go = zum *** N *** ext Bildschirm

Strg + A P go = zum *** P *** revious Bildschirm

Ctrl + A C = C *** *** reate neuen Bildschirm

Strg + A D = *** D *** Etach dem Bildschirm

Nicht wirklich wichtig, nicht nur auf Bildschirm verwendet, aber ermöglicht 256 Farben in meinem Terminal, GNU-Bildschirm und Vim meinem Bildschirm Erfahrung große Zeit verbessert (vor allem, da ich Code in Vim über 8h pro Tag - es gibt einige große augenfreundliche colorschemes) <. / p>

Es gibt einige interessante Arbeit sowie andere nützliche Maschinen Details getan ein gutes Gnu-Screen-Setup standardmäßig in der nächsten Version von Ubuntu Server geschieht auf immer, die den unteren Rande des Bildschirms umfasst die Verwendung all Fenster zu zeigen (wie # Updates zur Verfügung und ob die Maschine braucht einen Neustart). Sie können sich wahrscheinlich ihre .screenrc greifen und es an Ihre Bedürfnisse anpassen.

Die nützlichsten Befehle, die ich in meinem .screenrc haben, sind folgende

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

Auf diese Weise Ich weiß immer, was Fenster sind offen, und was in ihnen im Moment läuft, auch.

Die erste Modifikation I .screenrc machen ist den Escape-Befehl zu ändern. Nicht anders als viele von Ihnen, ich weiß nicht wie die Standard-Ctrl-A-Sequenz wegen seiner Interferenz mit dieser grundlegenden Funktionalität in fast jedem anderen Kontext. In meiner .screenrc Datei, füge ich hinzu:

Flucht `e

Das ist Graviszeichen-e.

Dies ermöglicht es mir, die Graviszeichen als Escape-Taste zu verwenden (zB einen neuen Bildschirm zu erstellen, ich drücke Graviszeichen-c, lösen ist Graviszeichen-d, backtick-? Ist Hilfe, Graviszeichen-Graviszeichen sind vorheriger Bildschirm, etc.) . Der einzige Weg, stört es (und ich hatte mich von der Gewohnheit zu brechen) auf der Kommandozeile Graviszeichen Ausführung Ausgang zu erfassen, oder irgendetwas einfügen, die eine Graviszeichen enthält. Für den ehemaligen, ich habe meine Gewohnheit geändert durch die BASH $ (Befehl) Konvention. Für letztere in der Regel Pop ich nur ein weiteres xterm öffnen oder vom Bildschirm lösen dann den Inhalt fügen Sie den Graviszeichen enthält. Schließlich, wenn ich eine wörtliche Graviszeichen einfügen wollen, drücke ich einfach Graviszeichen-e.

Ich kann mich nicht erinnern, wer ich stahl diese aus (jemand auf dotfile.org). Ich habe es leicht modifiziert für 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

Dann habe ich die folgenden Bash-Aliase:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Es öffnet sich ein neues Fenster für die oben genannten Aliase und ssh iff verwenden, es benennt den Bildschirm Titel mit dem SSH-Host-Namen.

Prost z0mbix

Ich mag für die Fenster einen Bildschirm Sitzung mit beschreibenden Namen einzurichten. ^ A A werden Sie einen Namen für das aktuelle Fenster geben lassen und ^ eine "Sie eine Liste Ihrer Fenster geben. Wenn Sie fertig sind, nehmen Sie den Bildschirm mit ^ a d und wieder befestigen mit Bildschirm -R

Jemand hat eine ähnliche Frage dazu auf Server Fehler geschrieben.

Ich benutze es gerne screen -d -RR um automatisch einen bestimmten Bildschirm zu erstellen/an ihn anzuhängen.Ich habe Bash-Funktionen erstellt, um es einfacher zu machen ...

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

Sie erstellen einen Alias ​​für /usr/bin/screen -d -RR -S $name $command.Zum Beispiel verwende ich irssi gerne in einer Bildschirmsitzung, also habe ich in meiner .bashrc-Datei (unter diesen Funktionen) Folgendes:

mkscreen irc /usr/bin/irssi

Dann kann ich einfach tippen irc in einem Terminal, um in Irssi einzusteigen.Wenn der Bildschirm „irc“ noch nicht existiert, wird er erstellt und /usr/bin/irssi von dort aus ausgeführt (wodurch natürlich automatisch eine Verbindung hergestellt wird).Wenn es bereits ausgeführt wird, verbinde ich es einfach erneut und trenne alle anderen Instanzen, die bereits damit verbunden sind, zwangsweise ab.Es ist ganz nett.

Ein weiteres Beispiel ist das Erstellen temporärer Bildschirm-Aliase für Perldocs, wenn ich auf sie stoße:

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 Option -a (muss das erste Argument sein) hängt den Bildschirmalias an .bashrc an (damit er dauerhaft ist) und -d entfernt ihn (diese können potenziell destruktiv sein, daher erfolgt die Verwendung auf eigenes Risiko).xD

Anhängen:

Ein weiterer Bash-Ismus, den ich praktisch finde, wenn ich viel mit dem Bildschirm arbeite:

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

Auf diese Weise können Sie Ihre Bildschirme mit viel weniger Tastenanschlägen auflisten.Ich weiß nicht, ob sls kollidiert mit allen vorhandenen Dienstprogrammen, aber auf meinem System war das damals noch nicht der Fall, also habe ich mich dafür entschieden.

^ A A schaltet auf den Bildschirm zurück Sie kam gerade aus.

^ A ist ein großes Spezial-char für UNIX Menschen, aber wenn Ihr mit Bildschirm OpenVMS zu sprechen, dann nicht in der Lage zu ^ A wird Sie kahle vorzeitig machen. In VMS, wenn Ihr einen Befehl vor der Ausführung DCL Bearbeitung aus dem Historienspeicher, Insert-Modus ausgeschaltet ist (hat ein paar Gründe, werde ich nicht in hier) .. es einzuschalten so über Sie dies nicht tun geben Sie Ihren Befehl, anstatt Raum Dinge aus, man muss getroffen ^ A

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top