2009-08-23 7 views
2

[Mise à jour] La question est liée aux questions GNU Screen: Programmers quotes in Readbuf et GNU Screen: files to numbered buffers?. Comme ils ne sont pas résolus, la question vise un concept plus général sur les variables d'environnement. Ma conviction est qu'ils sont la clé pour rendre l'écran plus efficace.GNU Screen: Les variables d'environnement

1. Comment puis-je utiliser les variables de Bash dans l'écran comme:

$ export path=`pwd` 
$ ^a :readbuf `echo $path`/debugging_code.php 

2. Comment puis-je réutiliser les tampons d'écran comme:

$ ^a :readreg a `echo $path` 
$ ^a :readbuf $a/debugging_code.php 
$ ^a ] 

3. Comment J'utilise les tampons de Screen comme les variables d'environnement?

+0

Cela semble être la même question que celle que je viens de répondre ici: http://stackoverflow.com/questions/1318186/gnu-screen-programmer-quotes-in-readbuf –

+0

Greg: Mise à jour, espérons-le plus clair à présent. –

+0

contre-question pour (1): lorsque vous avez plusieurs shells ouverts, chacun avec un environnement différent, quelles variables d'environnement de shell voulez-vous que l'écran utilise? – rampion

Répondre

4

La commande suivante ne crée pas une nouvelle session d'écran, mais crée une variable interne à l'écran. Courir sur la ligne de commande vous permet d'utiliser l'extension shell:

$ screen -X setenv a "$PWD/debugging_code.php" 

Ensuite, utilisez la nouvelle variable:

C-a :readbuf $a 
+0

+1 pour sa fraîcheur. Un semblable dans Ubuntu 'écran -X export foo = "monde foo"' ne fonctionne pas pour une raison quelconque. –

+3

Notez que setenv dans ce contexte est une commande d'écran et non une commande * shudder * csh. –

+0

Pourriez-vous clarifier comment vous l'utilisez. Je ne sais pas pourquoi ça ne marche pas sur mon Ubuntu. –

1

J'ai fait un patch à l'écran 4.0.3 qui prend en charge la syntaxe suivante: Cela vous permet d'exécuter n'importe quelle commande shell arbitraire et de rediriger la sortie dans le tampon d'écran. Notez que ceci est implémenté en exécutant un sous-shell en utilisant popen et en copiant la sortie standard dans le fichier courant spécifié dans le paramètre bufferfile (puis en lisant ce fichier), donc faites attention à ne pas écraser quelque chose que vous n'avez pas l'intention de faire. En outre, ce patch est probablement très peu sécurisé, veuillez l'utiliser à vos risques et périls.

Un exemple pourrait être:

^A :readbuf !cat $HOME/projects/foobar/file.txt

Toute commande shell est exécutée littéralement tapé comme.

Voir gnu-screen-readbuf-exec sur Github pour le référentiel Git contenant le correctif.

+0

+1 cool! Avoir à travailler dessus: D –