Linux GNU-Bildschirm – Befehle sofort ausführen, wenn der Bildschirm startet?

Linux GNU-Bildschirm – Befehle sofort ausführen, wenn der Bildschirm startet?

In meiner .screenrc-Datei habe ich diese Zeile, um ein Bildschirmfenster zu öffnen:

screen -t "normal"

Und diese Zeile, um ein weiteres Fenster zu öffnen und top auszuführen:

screen -t "top" top

Diese funktionieren einwandfrei, ich wollte sie also sofort df && ls -alhin einem dritten Fenster ausführen und habe daher diese Zeile in die .screenrc eingefügt:

screen -t "df" df && ls -alh

Das df-Fenster wird nie angezeigt, daher dachte ich, dass && die Ursache des Problems sein könnte, und habe es nur mit df versucht.

screen -t "df" df

Das DF-Fenster wird immer noch nicht angezeigt.

Frage: Wie kann ich über screenrc einen Befehl nach dem anderen im selben Bildschirmfenster ausführen? Ich möchte, dass es sich genauso verhält wie in Bash. Danke für jeden Rat.

Antwort1

Es wird wahrscheinlich angezeigt, verschwindet aber nach der Ausführung.

Versuche Folgendes:

screen -t "df" bash -c 'df && sleep 50'

Dadurch wird die Ausgabe des dfBefehls für 50einige Sekunden angezeigt.

Um eine nützliche dfAusgabe zu erhalten, empfehle ich Ihnen die Verwendung von watch:

screen -t "df" watch -n 10 df

Dies wird dfalle 10 Sekunden ausgeführt, sodass Sie auf diesem Terminal den aktuellen Status Ihres freien Speicherplatzes haben.

Antwort2

Alte Frage, erschien aber in den Suchergebnissen vor der Antwort, die ich am saubersten fandHier.

Einige Lösungen, die bei mir funktioniert haben:

screen -t Files zsh -c 'ls -lahG; exec zsh'

In meiner .screenrc-Datei öffnet „exec zsh“ eine weitere Eingabeaufforderung in einem Fenster innerhalb einer Region, nachdem der „ls“-Befehl/Prozess abgeschlossen ist (ähnlich dem Verhalten, wenn man in einem Fenster im GNU-Bildschirm einen Befehl manuell in die Shell eingibt; ich gehe davon aus, dass dies effizienter ist, als einen „sleep“-Befehl auszuführen, bin aber für eine Korrektur dankbar, wenn ich falsch liege).

screen -t Files zsh -c 'vim .'

Das Obige funktioniert im speziellen Fall der Verwendung von „ls“.

verwandte Informationen