In einem Bash-Skript verwende ich "screen -L", um ausgeführte Befehle in Farbe zu protokollieren. Zum Beispiel:
screen -L tree
Dann lesen wir die Logdatei mit less -R
.
Wenn dieses Skript ausgeführt wird, werden möglicherweise andere Bildschirme ausgeführt, sodass wir nicht wissen, welches Screenlog. * Unsere Ausgabe enthält. Ich kann nicht verlangen, dass der Benutzer sein / ihr anpasst .screenrc
.
Gibt es eine Möglichkeit, einen Protokollnamen in der Befehlszeile anzugeben oder bestimmte .screenrc
Befehle zu lesen ?
command-line-interface
logging
gnu-screen
color
Philippe Blayo
quelle
quelle
Antworten:
Ich habe ein paar Gedanken dazu. Beachten Sie zunächst, dass Sie den Startbildschirm steuern können, wenn Sie den Bildschirm über den
-c
Befehlszeilenschalter aufrufen . Zweitens können Sie Umgebungsvariablen in Ihrem .screenrc verwenden. Wenn Sie dies alles zusammenfassen, finden Sie hier ein Shell-Skript, mit dem Sie so etwas wie das tun können, was Sie wollen:Dieses Skript überschreibt den Benutzer screenrc und platziert die Ausgabe in einer bestimmten Datei. In diesem Fall
$$
generiere ich den Dateinamen durch Anhängen des Skriptprozessnamens. Beachten Sie, dass Sie im Allgemeinenmktemp
stattdessen sichere temporäre Dateien erstellen sollten, aber ich bin gerade faul.Auch dies ersetzt den Benutzer vollständig
.screenrc
. Wenn Sie weiterhin Einstellungen aus dieser Datei lesen möchten, sollten Sie die generierte Konfigurationsdatei folgendermaßen ändern:quelle
Verwenden:
Die
-C
Option erzwingt die Farbe auch dann, wenn die Ausgabe nicht auf tty erfolgt.Ähnlich:
Dienstprogramme, die Farben ausgeben, haben häufig Möglichkeiten, sie zu erzwingen, wenn die Ausgabe an eine Pipe gesendet oder umgeleitet wird.
quelle
Alternativ gibt es eine Möglichkeit, dies online zu tun.
Geben Sie den Befehl Modus in Bildschirm über Ctrl+ A, :und verwenden Sie den
logfile
Befehl mit dem Namen der Datei , die Sie als Argument wollen:Quelle: Manpage zum Bildschirm
quelle