Caractéristiques cachées de `screen`

31

Étant donné que j'utilise la commande * nixscreen toute la journée et que je n'ai trouvé personne commençant cette question, j'ai pensé qu'elle devrait être lancée. Vous connaissez l'exercice: wiki communautaire, une réponse par fonctionnalité pour que nous puissions tous voter.

Josh
la source
5
l'écran est si utile qu'il appartient à tous les sites: stackoverflow.com/questions/70614/gnu-screen-survival-guide
Zac Thompson

Réponses:

31

J'adore l' utiliser pour me connecter à des consoles série, c'est-à-dire

screen /dev/ttyS0 19200

Cette commande ouvre simplement une connexion au port série 0 (ttyS0) avec une vitesse de transmission de 19200

Scott Pack
la source
c'est l'une de mes choses préférées avec
lesquelles je flippe
1
Et vraiment l'un de mes favoris. Pas besoin de gérer ou de configurer minicom, conserver, etc. Je me sentais comme un petit enfant dans un magasin de bonbons quand j'ai découvert cela.
Scott Pack
Absolument - c'est agréable d'avoir une session d'écran ouverte, divisée en deux fenêtres, avec les deux dongles USB-Serial visibles.
dotwaffle
10

La meilleure fonctionnalité de screenByobu (anciennement profils d'écran) est fournie avec Ubuntu par défaut depuis Jaunty: https://launchpad.net/byobu

C'est un gestionnaire de configuration avec de très belles valeurs par défaut, des tonnes de notifications d'état et des raccourcis clavier utiles (par exemple, f2 pour le nouvel écran, f3-f4 pour prev / next etc.)

Je ne vais plus nulle part sans ça :)

KTamas
la source
10

De la réponse de KTamas: Plus d'une personne peut utiliser le même écran, c'est-à-dire si un de vos amis sshdans votre ordinateur, alors il peut se connecter à votre écran. C'est super quand deux ou trois personnes travaillent sur les mêmes projets.

Josh
la source
1
C'est bien mieux pour suivre ce que font les utilisateurs du support à distance et tuer leur session s'ils ne sont pas bons!
Tom O'Connor
6

Pas exactement une "fonction cachée"; mais un fichier .screenrc correctement configuré peut faire toute la différence. L'un des meilleurs exemples là-bas peut être trouvé en googlant screenrc et «brad sims» - il a un excellent fichier à bricoler.

cela dit, mon réglage préféré serait bindkey:

# bind F7  to detach screen session from this terminal
# bind F8  to kill current screen window.
# bind F9  to create a new screen
# bind F10 to rename current screen window
# bind F11 to move to previous window
# bind F12 to move to next window
bindkey -k k7 detach
bindkey -k k8 kill
bindkey -k k9 screen
bindkey -k k; title
bindkey -k F1 prev
bindkey -k F2 next
Tourbillon
la source
2
Étant donné que ctrl + a est utilisé trop souvent en dehors de l'écran (début de la ligne dans bash n'importe qui?) J'aime ça.
Scott Pack
1
ctrl + a / ctrl + e pour déplacer le curseur, mais aussi lorsque minicom fonctionne sur un écran. Ctrl + a, a, o pour les options ...
petrus
6

Je ne me souviens plus de qui j'ai volé ça (quelqu'un sur dotfile.org). Je l'ai légèrement modifié pour 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

Ensuite, j'ai défini les alias bash suivants:

vim() {
        scr vim $*
}

man() {
        scr man $*
}

info() {
        scr info $*
}

watch() {
        scr watch $*
}

ssh() {
        scr ssh $*
}

Il ouvre un nouvel écran pour les alias ci-dessus et iff en utilisant ssh, il renomme le titre de l'écran avec le nom d'hôte ssh.

Cheers z0mbix

z0mbix
la source
: o. L'avez-vous soulevé et adapté de moi? gist.github.com/137214
VxJasonxV
Non, je pense que c'était d'un membre du personnel de last.fm qui a blogué à ce sujet une fois.
z0mbix
4

Une chose que je trouve utile est que l'écran peut émuler une plus grande largeur que votre terminal. Je trouve cela utile si j'utilise lessde vrais fichiers journaux, et je ne veux pas que les lignes se terminent. En utilisant:

Ctrl-A:width -w 999

Je peux paramétrer screenle paramètre avec pour qu'il soit plus large que mon terminal et les lignes de connexion lessne seront pas bouclées.

Josh
la source
10
Pour info, l'option less lui -sdira de ne pas boucler les lignes. Vous pouvez utiliser Leftet Rightpour faire défiler les lignes.
MikeyB
4

La possibilité de changer la touche de contrôle avec -ethat lors du démarrage de l'écran. Je l'utilise pour pouvoir imbriquer les sessions d'écran les unes dans les autres. Exemple: "screen -e ^ w ^ x" rend la touche de contrôle ctr-w.

Jeffball
la source
2

Une fonctionnalité intéressante: vous pouvez utiliser backtickpour extraire des informations supplémentaires à afficher dans une légende. Par exemple, j'ai un script qui génère un résumé sur une ligne du nombre de nouveaux messages dans divers dossiers, et je l'ai qui apparaît dans la dernière ligne si ma session d'écran avec le nom d'hôte avec une configuration qui ressemble à ceci:

backtick 1 15 15 /home/waltermundt/bin/newmail

caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"

La clé est le bit% 1`, qui fait référence à la sortie de la tâche de backtick 1.

(J'utilise hardstatuscomme chaîne de titre xterm et je l'ai réglé différemment, donc l'utilisation de captionau lieu de hardstatus alwayslastline.)

Walter Mundt
la source
2

Ce n'est pas une fonction "cachée", mais la possibilité de partager une session d'écran avec un autre utilisateur actif est très utile.

Il existe des moyens compliqués de configurer le partage d'écran, notamment les autorisations de contrôle d'accès et la gestion des noms d'utilisateur. Ce que je fais le plus souvent avec mes collègues est beaucoup plus rapide et sale:

  1. Connectez-vous à la machine en question dans une nouvelle fenêtre.
  2. Autoriser n'importe qui à écrire sur mon terminal: chmod 777 $(tty)
  3. Sudo sur leur compte: sudo su <username>
  4. Partagez leur écran: screen -x <session>

Cela ne nécessite aucune configuration préalable ni partage de mot de passe.

Michael H.
la source
1

Une petite feuille de triche que j'ai imprimée pour moi-même;

(Remarque: tout est précédé de Ctrl-A)

A: renommer une fenêtre   
": afficher une liste de fenêtres   
d: détacher la session

Et screen -D -Rpour rattacher et rattacher une session en cours (au cas où vous perdriez en quelque sorte l'accès à votre session).

Aucune de ces fonctionnalités n'est vraiment cachée, mais ce sont les fonctionnalités que je trouve les plus utiles.

Michael Pobega
la source
1

C'est une fonctionnalité de base, mais bien sûr, le mieux est Ctrl-A:de parler directement à l'écran. : screen -t title ssh hostnameetc.

Zac Thompson
la source