Wie erstelle ich eine Hierarchie von Terminals oder Arbeitsbereichen?

1094
intuited

Ich frage mich, ob es eine Möglichkeit gibt, in einer Bildschirmsitzung unter Linux eine Terminologie- / Baumstruktur von Terminals zu erstellen?

Es macht mir nichts aus, hier zu hacken. Wenn also ein Projekt draußen ist, das daran arbeitet, würde ich mich gerne einbringen.


Erläuterung:

Ich hätte gerne so etwas

1 bash 1.1 bash 1.2 bash 2 bash 3 bash 3.1 bash 3.1.1 bash 3.1.2 bash 

Es wäre gut, wenn die Terminals gekennzeichnet werden könnten, anstatt über eine Anordnung navigiert zu werden, von der ich annehme, dass sie nicht existiert. Dann könnten Sie zB mit ^A:goto happydaysoder zu einem springen ^A:goto dykstra.angry.

Jeder Browser bietet die Möglichkeit, flache Registerkarten mit identischen Dokumenten zu erstellen. GNU- screenimplementiert die gleiche Funktionalität, ohne Tabulatoren zu verwenden. Linux- und OS / X-Fenstermanager bieten die Möglichkeit, Fenster in einer Reihe von Arbeitsbereichen zu organisieren, was sich wiederum auf den gleichen Deal auswirkt.

Ich möchte in der Lage sein, Dinge nicht nur in einer Baumstruktur zu gruppieren, sondern auch Referenzen (aka symbolische Links, aka-Zeiger) von einem Teil der Struktur auf einen anderen zu erstellen sowie Eigenschaften (z. B. Standardverzeichnis, Farbschema) anzuwenden, ...) rekursiv abwärts von einem gegebenen Knoten.

3
....Beeindruckend. Wo soll man anfangen? Oh ja. Super User ist kein Diskussionsforum. Verstehen Sie mich nicht falsch, dieser Gesang ist der Beginn einer faszinierenden Diskussion, aber dies ist nicht der richtige Ort dafür. quack quixote vor 13 Jahren 1
Tatsächlich. Ich stimme dem zu, was Sie sagen, aber dies könnte mit einer "tl; dr" -Version geschehen, die eine bestimmte Frage stellt. Phoshi vor 13 Jahren 0
@ quack quixote: Einverstanden .. Ich war definitiv auf einer Wut, und vielleicht ein paar andere Sachen, als ich das geschrieben habe. Ich habe eine Zusammenfassung in Form einer Frage hinzugefügt. intuited vor 13 Jahren 0
@intuited: ok, ich mag die tl; dr zusammenfassung, wiedereröffnung. Aber komm schon, du könntest diese Aussage auf zwei Absätze reduzieren und (a) immer noch den Punkt rüberbringen und (b) den Riesen nicht brauchen`Tags. oder besser noch, bewegen Sie das Wort ganz auf einen Blogpost, irgendetwas, lassen Sie das Tl; dr, zwei Hintergrundabsätze, die nicht ausgesprochen sind, und einen Link zum Blogpost für mehr Hintergrund. quack quixote vor 13 Jahren 1
Pfff was für ein Chaos ... Hoffe das ist lesbarer! @Quack hat jedoch Recht: Dies ist kein Diskussionsforum, es sei denn, jemand kann Sie auf etwas verweisen, das Sie kein Glück haben. Ivo Flipse vor 13 Jahren 0
@ vivo: nette bearbeitung. @intuited: Ich weiß, dass der Schnitt eine Menge herausgeschnitten hat, die Sie für wichtig halten könnten. Wenn Sie etwas hinzufügen, bemühen Sie sich um Prägnanz und Kürze. quack quixote vor 13 Jahren 0
Hey, es sieht gut aus. Danke, Leute. intuited vor 13 Jahren 0

3 Antworten auf die Frage

1
Journeyman Geek

Yanno, das klingt sehr nach dem, was Byobu kann

Really? can you elaborate? I read through the manpage and [a tutorial](http://lcorg.blogspot.com/2010/03/byobu.html). I learned that byobu can make it convenient to re-title a window, and can set up default windows for a session. But I'm really hoping for a way to set up a tree of windows, which can then be navigated with keymappings relevant to their perceived position within the tree structure. Did I miss that? intuited vor 14 Jahren 0
@intuited: Sie können in Byobu (oder einer beliebigen Bildschirm-basierten Sache) einen "Baum" -Effekt erzielen, indem Sie mehrere verschachtelte Sitzungen verwenden. Sie könnten eine Sitzung mit einem Satz von Fenstern öffnen, eine weitere Sitzung mit einem anderen Satz von Fenstern usw. abtrennen und öffnen, dann eine weitere Sitzung öffnen, in Fenster 1 erneut zu , in Fenster 2 neu zu usw. fügen Sie ein Terminal mit Registerkarten wie gnome-terminal hinzu, und öffnen Sie eine dieser "Mastersitzungen" in verschiedenen Registerkarten, und Sie haben einen Sitzungsbaum. (viel Spaß mit Escape-Zeichen tho.) quack quixote vor 13 Jahren 1
@quack: Ich habe mich damit beschäftigt und es ist manchmal nützlich. Eine Sache, die wichtig ist, ist, dass es eine Möglichkeit gibt, die Dinge in der Hierarchie zu verschieben. Ich denke, wenn ich in jedem Bildschirm einen Bildschirm * Sitzung * erstellt habe, könnte ich ihn nicht nur öffnen, sondern auch trennen und an eine andere Stelle in der Baumstruktur verschieben. intuited vor 13 Jahren 0
Wenn es tatsächlich möglich ist, dem Bildschirm mitzuteilen, dass er durch ^ Aas gehen kann, wenn nur ein Fenster geöffnet ist, könnte dies ziemlich gut funktionieren ... dh der ^ Aa würde an die übergeordnete Bildschirmsitzung weitergeleitet, es sei denn, diese Bildschirmsitzung wurde bereits aufgeteilt in zwei Kindersitzungen. Ich denke, es gibt ein paar Tricksereien, aber das scheint zumindest vage vielversprechend zu sein. intuited vor 13 Jahren 0
Ich habe irgendwo gelesen, dass das Verschieben von Fenstern zwischen Sitzungen bereits auf der Bildschirmentwicklung "Wunschliste" steht. und soweit es um Flucht geht, bin ich mir ziemlich sicher, dass die äußere Sitzung es zuerst bekommt. Ich würde erwarten, dass * die * Elternsitzung * wäre, aber es kann davon abhängen, wie genau die Dinge verbunden sind. (Wenn ich die Sitzung , und im Hintergrund öffne, könnte ich ihnen 3 Fenster von anhängen, aber ich könnte auch an Fenster , { B: 7} und . Welches ist nun das "Elternteil"? :) @intuited quack quixote vor 13 Jahren 0
@quack: Ja, das Übergeben von Escape ist nicht so schlimm, es funktioniert so: Wenn Sie einen Bildschirm innerhalb eines Bildschirms haben, können Sie in dieser inneren Sitzung zum vorherigen Fenster wechseln. Es schraubt den Convenience-Faktor, aber es ist nicht zu schwer, sich daran zu erinnern. Oh Mist, du hast recht, ich bekam eine Legasthenie, als ich den letzten Kommentar schrieb: Du würdest einfach tun, um zu der anderen Bildschirmsitzung zu wechseln. Wie auch immer, ich mag die Art und Weise, wie der Bildschirm den Computer zu einer polyphilen Kommune macht. intuited vor 13 Jahren 0
@quack: Es wäre jedoch viel einfacher, den Überblick zu behalten, wenn es nur eine Kommune statt einer Reihe von Kreuzungen gäbe. Mit anderen Worten, wenn Sie innerhalb einer verknüpften Hierarchie navigieren könnten, anstatt sich irgendwie daran erinnern zu müssen, dass Sie dies tun müssen Drücken Sie ^ aa ^ aa ^ aa ^ aa, weil Sie von 1.2.1 auf 1.2.2 wechseln möchten. oder sowas ähnliches. Zum Beispiel, wenn es wie eine Verzeichnisstruktur (mit Symlinks) funktioniert, und Sie könnten das Äquivalent von "cd .." oder "cd SOMESESSION" tun. vielleicht, indem Sie das tatsächlich eingeben, via `^ a-:`? und einen "ex" -Modus, um das Neuordnen von Sachen bequemer zu gestalten? intuited vor 13 Jahren 0
1
Arcege

habe gerade diese Frage gefunden.

Sie können tun, was ich glaube, dass Sie direkt im Gnu-Bildschirm suchen. Fügen Sie in .screenrc Folgendes hinzu:

screen -t 1.1 0 # just a shell

screen -t 1.2 1 screen -m -e^ xx-c $/.screenrc-1.2 #new session inside accessed by Ctrl-x

screen -t 1.3 2 screen -m -e '^xx' -c $/.screenrc-1.3 #yet another new session

Dann könnten ~ / .screenrc-1.2 und ~ / .screenrc-1.3 separate Setups für die Subsessions sein. Zum Beispiel könnte .screenrc-1.3 mehr Subsessions definieren. Sobald Sie sich in der gesamten Sitzung befinden, können Sie zwischen ihnen wechseln, und die inneren Sitzungen haben ihre eigenen Steuerungssequenzen (Strg-x). Sie können nach Name oder Nummer zu: navigieren select 1.2.

An diesem Punkt bin ich ziemlich gut geeignet, ^ Aaa zu verwenden, um auf Bildschirme innerhalb von Bildschirmen innerhalb von ... zuzugreifen. Es ist jedoch gut, die Optionen -t und die Option und den Befehl `: select` zu kennen. intuited vor 13 Jahren 0
Was hier fehlt, ist die Möglichkeit, ein Fenster von einer "Bildschirm" -Sitzung zu einer anderen zu verschieben. intuited vor 13 Jahren 0
0
redyoshi49q

Durch Verschachteln von Bildschirmsitzungen (wie von Archege vorgeschlagen) werden die gewünschten Ziele erreicht. Die Verwaltung der mehreren Ebenen der Verschachtelung (insbesondere beim Senden von Befehlen an die richtige Bildschirmsitzung) kann jedoch ein Problem sein. Neuere Versionen von screen (ich verwende 4.1.0) unterstützen Fenstergruppen, die die meisten Ihrer Aufgaben erfüllen können. Fenstergruppen scheinen nichts vergleichbar mit Hardlinking zu sein, und das Feature ist nur minimal integriert und dokumentiert (vermutlich weil es vergleichsweise neu und relativ unübersichtlich ist). Ein bemerkenswerter Vorteil von Fenstergruppen ist jedoch, dass sie über eine einzige Bildschirmsitzung arbeiten. Daher ist das Verwalten der verschachtelten Anordnung weniger lästig.

Der folgende Codeblock ist eine kommentierte Kopie / Einfügung der Abschnitte von .screenrc, die für Fenstergruppen relevant sind:

# first, make a root group that all of the other groups will go into # note that the "//group" is *NOT* a comment; without it, only a # standard window will be spawned screen -t root 0 //group  # select the root window to make sure that the next created group will # end up there, and make another group nested inside of it select 0 screen -t shells 1 //group  # rinse and repeat for more groups select 0 screen -t editors 2 //group select 0 screen -t SSH 3 //group select 0 screen -t scratch 4 //group select 0 screen -t scripts 5 //group  # to add windows into first group, select it and then create windows # as normal select 1 screen 6 screen 7  # rinse and repeat as desired for the other groups select 2 screen 8 # and so on...