Экран GNU: переменные среды - PullRequest
2 голосов
/ 23 августа 2009

[Обновлено] Вопрос связан с вопросами Экран GNU: Цитаты программистов в Readbuf и Экран GNU: файлы в пронумерованные буферы? . Поскольку они не решены, вопрос направлен на более общее представление о переменных среды. Я считаю, что они являются ключом к повышению эффективности экрана.

1. Как я могу использовать переменные Bash в Screen как:

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

2. Как я могу использовать буферы экрана как:

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

3. Как я могу использовать буферы экрана как переменные окружения?

Ответы [ 2 ]

4 голосов
/ 23 августа 2009

Следующая команда не создает новый сеанс экрана, но создает внутреннюю переменную экрана. Запуск его в командной строке позволит вам использовать расширение оболочки:

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

Затем используйте новую переменную:

C-a :readbuf $a
1 голос
/ 23 августа 2009

Я сделал патч для экрана 4.0.3, который поддерживает следующий синтаксис:

^A :readbuf !shell-command

Это позволяет вам выполнить любую произвольную команду оболочки и направить вывод в экранный буфер. Обратите внимание, что это реализуется путем выполнения subshell с использованием popen и копированием стандартного вывода в текущий файл, указанный в настройке bufferfile (и затем чтение этого файла), поэтому будьте осторожны, не перезаписывайте то, что не намерены. Кроме того, этот патч, вероятно, крайне небезопасен, поэтому, пожалуйста, используйте его на свой страх и риск.

Примером может быть:

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

Любая команда оболочки выполняется буквально так, как напечатано.

См. gnu-screen-readbuf-exec на Github для репозитория Git, содержащего патч.

...