Gnu-Écran: Exécuter un script qui envoie des commandes à l'écran de session, il est en cours d'exécution dans
Est-il possible d'écrire un script pour modifier le nom et tourner sur la surveillance de l'onglet courant, en supposant qu'il est en cours d'exécution à l'écran?
if[-n "$STY"];then
screen -X title "foo"
screen -X monitor on
fi
Parfait! Merci! Je ne pense pas que le "if [-n..." choses " est nécessaire - l'écran -X ... de commande en silence les erreurs si il ne peut pas s'exécuter Avec cette technique, je pense que je vais oublier de suivi, je vais juste changer le titre de foo () lorsque le programme se termine. J'ai encore à comprendre quand est un bon moment pour revenir à "bash" depuis que je n'ai jamais vraiment utilisé les titres et n'a pas vraiment envie de changer manuellement. vous pouvez utiliser des chaînes de caractères s'échappe dans votre invite de commandes pour l'auto-magiquement changer le titre dans l'écran. Bash est probablement un peu différente, mais voici comment je le fais dans zsh: gist.github.com/143727
-X Send the specified command to a running screen session.You can
use the -d or -r option to tell screen to look only for attached
or detached screen sessions.Note that this command doesn't work
if the session is password protected.
Fondamentalement, run
screen -X title mynewtitle
screen -X monitor on
Si le terminal n'est pas en cours d'exécution à l'intérieur de l'écran, il silencieusement erreurs:
notinscreen:~$ screen -X title mynewtitle
notinscreen:~$
Vous pouvez également envoyer la commande à une session spécifique, même lorsqu'elle est détachée. Compte tenu d'une session écran nommé "main":
$ screen -S main
[detach from screen session]
$ screen -ls
There is a screen on:2073.main(Detached)1Socketin/tmp/uscreens/S-dbr.
..vous pouvez envoyé le titre de la dernière fenêtre active à blah:
$ screen -x main -X title blah
..ou une fenêtre spécifique (nommé oldwindow dans cet exemple):
$ screen -x main -p oldwindow -X title blah
Au lieu d'utiliser -x main vous pouvez utiliser l'ID de processus (à partir de screen -ls), aussi au lieu d'utiliser un nom de fenêtre ( -p oldwindow ), vous pouvez utiliser un nombre de fenêtre:
$ screen -x 2073-p 0-X title h
Si il y a une seule session, vous n'avez pas à spécifier la session PID ou nom.
LA LIGNE DE MESSAGE
L'écran affiche
les messages d'information et d'autres
diagnostics dans une ligne de message. Alors que
cette gamme est distribuée à apparaître à
le bas de l'écran, il peut être
définis pour apparaître en haut de la
l'écran lors de la compilation. Si votre
le terminal a une ligne de statut défini dans
son termcap, l'écran de l'utiliser pour
l'affichage de ses messages, sinon un
ligne de l'écran actuel sera
temporairement remplacé et de sortie
sera momentanément interrompue. L'
ligne de message est automatiquement supprimé
après quelques secondes de retard, mais il peut
également être retiré au début (sur les bornes
sans une ligne d'état), en commençant à
type.
La ligne de message peut être utilisé
par une application en cours d'exécution dans le
de la fenêtre courante par le biais de la norme ANSI
Message de confidentialité de la séquence de contrôle. Pour
exemple, à partir de l'intérieur de la coquille, essayez
quelque chose comme:
echo '<esc>^Hello world from window '$WINDOW'<esc>\\'
où " est une évasion, '^' est un
littérale "flèche en haut", et " \ " se transforme en
une seule barre oblique inverse.
Écran s'exécute de manière transparente, de sorte que la détection de l'écran session est dur. Si vous essayez d'envoyer des touches, qui serait à l'œuvre, et remplit votre terminal avec un peu de courrier indésirable si vous n'êtes pas dans une session.
Eh bien, si j'en ai besoin je peux mettre quelque chose dans mon screenrc fichier comme une déclaration de variable pour le rendre évident pour mon script bash (ce script est juste pour moi). Je suis toujours accroché à l'autre partie. J'ai ces programmes qui prennent plusieurs heures à courir, et c'est super si dès qu'un début de programme, le titre est renommé pour le processus en cours d'exécution (mon script est exécuté avec un seul argument) et de surveiller l'allumer, je pouvais espérer un autre onglet et être averti lorsque mon programme est fait.
Je pense que cela fonctionne:
Je ne pense pas que le "if [-n..." choses " est nécessaire - l'écran -X ... de commande en silence les erreurs si il ne peut pas s'exécuter
Avec cette technique, je pense que je vais oublier de suivi, je vais juste changer le titre de foo () lorsque le programme se termine. J'ai encore à comprendre quand est un bon moment pour revenir à "bash" depuis que je n'ai jamais vraiment utilisé les titres et n'a pas vraiment envie de changer manuellement.
vous pouvez utiliser des chaînes de caractères s'échappe dans votre invite de commandes pour l'auto-magiquement changer le titre dans l'écran. Bash est probablement un peu différente, mais voici comment je le fais dans zsh: gist.github.com/143727
OriginalL'auteur Joe Beda
À partir de l'écran manuel:
Fondamentalement, run
Si le terminal n'est pas en cours d'exécution à l'intérieur de l'écran, il silencieusement erreurs:
Vous pouvez également envoyer la commande à une session spécifique, même lorsqu'elle est détachée. Compte tenu d'une session écran nommé "main":
..vous pouvez envoyé le titre de la dernière fenêtre active à
blah
:..ou une fenêtre spécifique (nommé
oldwindow
dans cet exemple):Au lieu d'utiliser
-x main
vous pouvez utiliser l'ID de processus (à partir descreen -ls
), aussi au lieu d'utiliser un nom de fenêtre (-p oldwindow
), vous pouvez utiliser un nombre de fenêtre:Si il y a une seule session, vous n'avez pas à spécifier la session PID ou nom.
OriginalL'auteur dbr
Écran déclare
$STY
variable d'environnement, vous pouvez essayer de l'utiliser.OriginalL'auteur Piotr Findeisen
Vous êtes à la recherche pour afficher des informations ou d'interagir avec l'écran de la session elle-même?
Vous pouvez envoyer des messages de retour avec ceci: (http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html#lbAI)
OriginalL'auteur hometoast
Écran s'exécute de manière transparente, de sorte que la détection de l'écran session est dur. Si vous essayez d'envoyer des touches, qui serait à l'œuvre, et remplit votre terminal avec un peu de courrier indésirable si vous n'êtes pas dans une session.
OriginalL'auteur Andrew Scagnelli