Qu’est-ce que les gens pensent que ce ne sont pas seulement les choses essentielles que vous devez savoir sur l’excellent utilitaire Screen, mais aussi les choses que vous penseriez utiles d’enseigner à quelqu’un, un débutant, à partir de zéro?
Je viens de présenter un ami à Screen et ils ont du mal à s’y habituer. Donc, les analogies et les conseils pratiques pour se souvenir des liens, etc. seraient géniaux.
J’utilise l’écran depuis plus de 10 ans et utilise probablement moins de la moitié des fonctionnalités. Il n’est donc pas nécessaire d’apprendre toutes ses fonctionnalités immédiatement (et je ne recommanderais pas d’essayer). Mes commandes quotidiennes sont:
^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
Je pense que c’est ça. J’utilise parfois les fonctionnalités de l’écran partagé, mais certainement pas quotidiennement. L’autre astuce est que si l’écran semble être bloqué parce que vous avez heurté une combinaison de touches au hasard, faites les deux ^ Q et ^ A ^ Q pour essayer de le déverrouiller.
Je ne pouvais pas m’habituer à filtrer jusqu’à ce que je trouve un moyen de définir une “barre d’état” au bas de l’écran qui montre quel “onglet” ou “écran virtuel” vous êtes et quels autres sont présents. Voici ma configuration:
[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 ? – afficher l’écran d’aide!
Si votre ami a l’habitude d’appuyer sur ^A
pour arriver au début de la ligne dans bash, il / elle aura des sursockets, puisque ^A
est la liaison de la touche de commande de l’écran. D’habitude je me retrouve avec un écran gelé, peut-être à cause d’une touche aléatoire sur laquelle j’ai appuyé après ^A
🙂
Dans ces cas, j’essaye
^A s
et ^A q
bloquer / débloquer le terminal défilement
pour réparer ça. Pour aller au début d’une ligne à l’intérieur de l’écran, la séquence de touches est ^A a
Vous pouvez reconfigurer la touche d’échappement de ctrl-A pour qu’elle soit une autre de votre choix. Si vous l’utilisez pour autre chose, par exemple pour aller au début de la ligne dans bash, il vous suffit d’append une ligne à votre ~ /.screenrc fichier. Pour le faire ^ b ou ^ B utiliser:
escape ^bB
À partir de la ligne de commande, utilisez les sessions de noms pour garder plusieurs sessions sous contrôle. J’utilise une session par tâche, chacune avec plusieurs tabs:
screen -ls liste vos sessions d'écran actuelles screen -Scrée une nouvelle session d'écran appelée name screen -r se connecte aux sessions d'écran nommées
Lors de l’utilisation de l’écran, vous n’avez besoin que de quelques commandes:
^ A c créer un nouveau shell ^ Une coquille de commutateur [0-9] ^ K tuer le shell actuel ^ A d déconnecter de l'écran ^ A? montrer l'aide
Une excellente référence rapide peut être trouvée ici . Cela vaut la peine de mettre en favori.
Quelques astuces pour ceux qui connaissent un peu l’écran, mais qui ont tendance à ne pas se souvenir des choses qu’ils lisent dans la page de manuel:
.screenrc
: 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
Cela assigne ctrl + un décalage + 0 à 9 pour les fenêtres 10 à 19.
http://www.debian-administration.org/articles/34
Je l’ai écrit il y a quelques années, mais c’est toujours une bonne introduction qui suscite beaucoup de réactions positives.
Je dois “append” ceci: append
bind s
à votre .screenrc
, si vous – comme moi – .screenrc
fenêtres fractionnées, comme Ca S
divise la fenêtre réelle, mais Ca s
fige. Donc, j’ai juste désactivé le raccourci de gel.
ctrl + a est une touche spéciale.
ctrl + a d – [d] etach, laisse les programmes (irssi?) en arrière-plan, rentre à la maison.
ctrl + a c [c] créer une nouvelle fenêtre ctrl + a 0-9 passer d’une fenêtre à l’autre par numéro
screen -r – retourne à la session détachée
Cela couvre 90% des cas d’utilisation. N’essayez pas d’afficher toutes les fonctionnalités à la fois.
Ctrl + A est la commande de base
Ctrl + A N = aller à l’écran *** N *** ext
Ctrl + A P = aller à l’écran *** P *** revious
Ctrl + A C = *** C *** crée un nouvel écran
Ctrl + A D = *** D *** attachez votre écran
Pas vraiment essentiel non seulement lié à l’écran, mais en activant 256 couleurs dans mon terminal, GNU Screen et Vim ont amélioré mon expérience d’écran (surtout que je code dans Vim environ 8h par jour – il y a de superbes couleurs pour les yeux).
Un travail intéressant est en cours pour obtenir une bonne configuration de gnu-screen par défaut dans la prochaine version de Ubuntu Server, qui comprend l’utilisation du bas de l’écran pour afficher toutes les fenêtres ainsi que d’autres détails utiles (comme # updates disponible et si la machine nécessite un redémarrage). Vous pouvez probablement récupérer leur .screenrc
et le personnaliser selon vos besoins.
Les commandes les plus utiles que j’ai dans mon .screenrc
sont les suivantes
shelltitle "$ |bash" # make screen assign window titles automatically hardstatus alwayslastline "%w" # show all window titles at bottom line of term
De cette façon, je sais toujours quelles fenêtres sont ouvertes, et ce qui s’y passe actuellement.
La première modification que je fais à .screenrc est de changer la commande d’échappement. À l’instar de beaucoup d’entre vous, je n’aime pas la séquence par défaut Ctrl-A en raison de son interférence avec cette fonctionnalité fondamentale dans presque tous les autres contextes. Dans mon fichier .screenrc, j’ajoute:
échapper `e
C’est le backtick-e.
Cela me permet d’utiliser le backtick comme clé d’échappement (par exemple, pour créer un nouvel écran, j’appuie sur backtick-c, detach est backtick-d, backtick-? Est une aide, backtick-backtick est l’écran précédent, etc.). La seule façon dont il interfère (et je devais rompre avec l’habitude) consiste à utiliser un backtick sur la ligne de commande pour capturer les résultats de l’exécution, ou à coller tout ce qui contient un backtick. Pour le premier, j’ai modifié mon habitude en utilisant la convention BASH $ (commande). Pour ce dernier, il suffit généralement d’ouvrir un autre xterm ou de le détacher de l’écran, puis de coller le contenu contenant le backtick. Enfin, si je souhaite insérer un backtick littéral, j’appuie simplement sur backtick-e.
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, je définis les alias de 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
J’aime configurer une session d’écran avec des noms descriptifs pour les fenêtres. ^ un A vous permettra de donner un nom à la fenêtre en cours et ^ un “vous donnera une liste de vos fenêtres. Une fois terminé, détachez l’écran avec ^ ad et reliez-le avec l’écran -R
Quelqu’un a posté une question similaire à celle-ci sur Server Fault .
J’aime utiliser screen -d -RR
pour créer / attacher automatiquement à un écran donné. J’ai créé des fonctions bash pour le rendre plus facile …
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; }
Ils créent un alias dans /usr/bin/screen -d -RR -S $name $command
. Par exemple, j’aime utiliser irssi dans une session d’écran, donc dans mon .bashrc (sous ces fonctions), j’ai:
mkscreen irc /usr/bin/irssi
Ensuite, je peux simplement taper irc
dans un terminal pour entrer dans irssi. Si l’écran ‘irc’ n’existe pas encore, il est créé et / usr / bin / irssi est lancé depuis celui-ci (qui se connecte automatiquement, bien sûr). S’il est déjà en cours d’exécution, je le rattache simplement, en détachant de force toute autre instance qui lui est déjà attachée. C’est plutôt sympa.
Un autre exemple est la création d’alias d’écran temporaires pour les perldocs lorsque je les rencontre:
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’option -a (doit être le premier argument) ajoute l’alias d’écran à .bashrc (il est donc persistant) et -d le supprime (ceux-ci peuvent potentiellement être destructeurs, donc à utiliser à vos risques et périls). xd
Ajouter:
Un autre bash-ism que je trouve pratique lorsque je travaille beaucoup avec l’écran:
alias sls='/usr/bin/screen -ls'
De cette façon, vous pouvez répertorier vos écrans avec beaucoup moins de frappes. Je ne sais pas si sls
entre en collision avec des utilitaires existants, mais ce n’était pas le cas à l’époque sur mon système, alors je l’ai fait.
^ AA revient à l’écran dont vous venez de parler.
^ A est un excellent outil spécial pour les personnes UNIX, mais si vous utilisez l’écran pour parler à OpenVMS, alors ne pas pouvoir ^ A vous rendra chauve prématurément. Dans VMS, si vous éditez une commande DCL avant son exécution à partir du tampon d’historique, le mode Insertion est désactivé (cela doit être pour quelques raisons que je n’entrerai pas ici). tapez votre commande plutôt que d’espacer les choses, vous devez taper ^ A