Wie greife ich ohne Terminal-Emulator auf bash zu?

37

Sprich ich jeden Terminal - Emulator auf meinem System versehentlich deinstalliert haben: xterm, uxterm, gnome-terminal, guake, etc. Gibt es eine Möglichkeit , ich zugreifen kann , bashohne einen Terminal - Emulator?

Eine Möglichkeit, die mir in den Sinn kommt, besteht darin, ein Shell-Skript zu erstellen und auszuführen. Kann ich jedoch auch eine interaktive Shell erhalten?

Das ist rein hypothetisch, aber danke für alle Antworten!

Huey
quelle
2
Es gibt Programme , die eine Schale laufen kann, und bieten ein gewisses Maß an Interaktivität, durch (teilweise) ein Terminal Emulation, sind aber nicht erminal Emulatoren per se . GVim ist zum Beispiel eines.
Muru
@muru also warum hast du das noch nicht als Antwort gepostet? : D
Sergiy Kolodyazhnyy
@Serg aus dem gleichen Grund, aus dem ich Ihre IDE-Lösung oder die Python-Konsole von gedit nicht veröffentlicht habe - keine davon wird standardmäßig installiert (obwohl ich denke, dass wir die Python-Konsole von gedit aktivieren können, ohne etwas zusätzliches zu installieren).
muru
@muru Ah, ich verstehe. Lösungen, die keine zusätzliche Installation erfordern, werden immer bevorzugt. Auf jeden Fall
Sergiy Kolodyazhnyy

Antworten:

63

Ja, durch Drücken von CtrlAltF21 . Damit haben Sie Zugriff auf die virtuelle Konsole TTY2. Und Sie können von dort mit jeden Terminal-Emulator neu installieren sudo apt-get install terminal-name, gnome-terminalz. B. mit Terminal-Name .

Um zur Benutzeroberfläche zurückzukehren, geben Sie zuerst ein exit, dass Sie sich von der virtuellen Konsole abmelden möchten, und drücken Sie dann CtrlAltF7, um zur Benutzeroberfläche zurückzukehren. (Wenn Sie die TTY-Sitzung geöffnet lassen möchten, überspringen Sie den Eingabeabschnitt. exit)

Edit: June 17,2015

Ich habe mir eine andere Lösung ausgedacht: Wenn Sie eine C-IDE haben, können Sie den folgenden Code kompilieren, und die Konsole der IDE gibt Ihnen jetzt Zugriff auf bash

#include<stdio.h>
#include <unistd.h>

void main()
{
        system("bash");
}

Hinweis: CtrlAltF2 ist nicht die einzige Option. Sie können verwendet werden CtrlAltF1, CtrlAltF3, CtrlAltF4, CtrlAltF5und CtrlAltF6auch, was Sie virtuelle Konsole TTY1, TTY3, tty4, TTY5 oder tty6 bzw. geben wird.

Sergiy Kolodyazhnyy
quelle
1
@ThomasW. Ich weiß, aber auf einigen Systemen wie Fedora ist tty1 nicht da, also habe ich es mir zur Gewohnheit gemacht, F2
Sergiy Kolodyazhnyy
18
@Huey Auf diese Funktion kann auf allen Systemen ausfallsicher zugegriffen werden, es sei denn, Sie haben ttys manuell deaktiviert. Dies ist im Grunde genommen die Standardeinstellung für Linux / Unix - Textkonsole. GUI ist auf * nix-Systemen wirklich optional
Sergiy Kolodyazhnyy
8
@Huey Die virtuelle Konsole ist das, wofür Linux ursprünglich gebaut wurde. Alles andere ist eine Funktion, die später hinzugefügt wurde. Und es ist einfach zu nützlich, dass es Sinn macht, es wieder zu entfernen.
Kasperd
10
Früher haben Sie sich normalerweise über die Textkonsole angemeldet und dann xinitoder ausgeführt, startxum tatsächlich zu X11 zu gelangen, wenn Sie aus irgendeinem Grund ein GUI-Programm ausführen mussten. :)
flauschige
1
Ich habe eine andere Lösung durchgearbeitet. Siehe meine Bearbeitung, Jungs
Sergiy Kolodyazhnyy
30

Wenn Sie einen SSH-Server haben, können Sie eine Verbindung über SSH von einem anderen System aus herstellen.

ssh <your_remote_user_name>@<your_remote_host>

Wenn ich ein System installiere, installiere und starte ich zuerst den SSH-Server. Eine Art Lebensversicherung. =)

AB
quelle
24

Ctrl++ Alt( F1durch F4zumindest, vielleicht bis zu F6) Ausführen einer Terminalschnittstelle auf den virtuellen Konsolen. Wenn Sie dort angekommen sind, verwenden Sie Ctrl+ Alt+ , um zur GUI zurückzukehren F7.

Wenn Sie einen dieser Schritte ausführen, sollten Sie in der Lage sein, zu einem Terminal zu gelangen, bei dem Sie sich anmelden können, und dann auf das Terminal zuzugreifen. Bash-Skripte werden jedoch weiterhin ausgeführt, wenn sie in automatisierten Skripten abgelegt sind cronund zum Ausführen doppelt angeklickt wurden (jedoch nicht im Terminal). Die Terminal - Emulatoren , die ‚Sie geben‘ eine interaktive Shell, aber letztlich bash, zshusw. , die sind die eigentlichen Schalen bestehen nach wie vor und kann entweder über laufen cron, Skripte, und auch die virtuellen Konsolen auf der Tastatur Combos oben.

Beachten Sie jedoch, dass Sie die virtuellen Konsolen verwenden oder einen Emulator erneut installieren müssen, wenn Ihre Skripte die interaktive Oberfläche benötigen.

Thomas Ward
quelle
2
F1 bis F6 auf meinem Computer.
Scimonster
14

Wenn dies eine Frage aus einem Test ist, würde ich der Vollständigkeit halber normale serielle Verbindungen hinzufügen, bei denen Sie eine Verbindung mit Ihrem Computer über ein serielles Kabel herstellen würden. Sie benötigen ein getty (oder was auch immer tty serielle Listener jetzt genannt werden), das zuvor konfiguriert wurde, bevor Sie Ihr Terminal verloren haben, und Sie benötigen einen zweiten Computer, um mit dem ersten zu sprechen. Als Notfall zu Hause ist dies wahrscheinlich nicht der Fall .

Möglicherweise verfügen Sie auch über eine Webmin-Konsole, mit der Sie (tatsächlich) auf die Shell zugreifen können, obwohl dies technisch keine interaktive Shell ist. An diesem Punkt ist es besser, einfache Befehle wie apt-get some-terminal-emulator auszuführen.

Wenn Sie ein geöffnetes Browserfenster haben, könnten Sie theoretisch nach einem Java-Terminalemulator suchen, aber ich vermute, dass Sie die Installation im Voraus durchführen müssen, und wenn Sie nur ein Browserfenster haben, können Sie nicht auf das Recht des zugrunde liegenden Piktogramms zugreifen. aber ich habe keine zeit so oder so zu testen.

Daher sind die obigen Fragen "Was sind alle möglichen Wege", die im wirklichen Leben für zu Hause nicht unbedingt nützlich sind, obwohl die meisten Serverräume wahrscheinlich seriellen Zugriff haben würden.

hmm, viele andere tools (emacs, vim, etc) erlauben ein gewisses Maß an Beschuss. Hoffen wir, dass Sie Xemacs geöffnet haben

Reiche Homolka
quelle
+1 für den Datensatz in Emacs können Sie Mx-Shell verwenden ; in gvim gibt es ESC :shell; Während Geany hat ein "Virtual Terminal Emulator Widget (VTE)" in einer Registerkarte des Nachrichtenfensters, sofern libvte.soverfügbar
Steeldriver
6

Obwohl alle obigen Antworten perfekt sind und Sie Linux verwenden, haben Sie viele andere mögliche Lösungen:

  • Virtuelle ttys wie in @serg Antwort beschrieben, die die perfekte Lösung ist
  • SSH wie in der @AB-Lösung beschrieben, ein toller Trick, aber Sie müssen berücksichtigen, dass der openssh-Server ausgeführt wird.
  • Andere mögliche Lösungen (es ist nicht perfekt, aber nur um andere Möglichkeiten aufzuzeigen ): LiveCD , Wiederherstellungsmodus
Maythux
quelle
3
Overkill-Lösung.
Thomas Ward
@ThomasW. Warum!? Es ist nur eine andere Option? Warum hast du es für eine Overkill-Lösung gehalten ?!
15.
2
@Maythux obwohl technisch korrekt, ist es in der Tat ein bisschen übertrieben, wenn wir bereits TTYs und ssh zur Verfügung haben. Die LiveCD-Lösung ist besser geeignet, wenn Sie coreutils installiert haben (ja, das habe ich schon aus Versehen gemacht) oder wenn etwas wirklich durcheinander gekommen ist.
Sergiy Kolodyazhnyy
1
@ Serg, aber es ist immer noch ein Fall, und es ist nur eine andere Lösung, ich sagte, zusätzlich zur Verwendung von tty, wie Sie beschrieben haben, hat er eine Option für liveCd, auch er hat eine Option für den Wiederherstellungsmodus ... Wir sprechen über Linux, viele Lösungen für gleiches Problem. Ich denke nicht, dass es ein Problem ist, eine Live-CD zu empfehlen!
15.
1
@Maythux Wenn sie sich bereits anmelden können und die 'virtuellen Konsolen' auf TTYs haben, ist es übertrieben und zusätzliche Arbeit, einfach eine LiveUSB / LiveCD zu starten, um dies zu tun. Zumal es sich nicht um "Ich kann auf nichts zugreifen" handelt und daher keine großen Waffen benötigt werden (wie Serg in den Kommentaren angedeutet hat)
Thomas Ward
2

Also werde ich hier pedantisch sein:

Gibt es eine Möglichkeit, ohne Terminalemulator auf bash zuzugreifen?

Sicher, dass jedes Skript, das mit beginnt, #!/bin/bashdas tut.

Gibt es eine Möglichkeit, eine Bash-Eingabeaufforderung ohne Terminalemulator zu erhalten?

Setzen wir mein Thema der Pedantik fort und lassen Sie uns einige Löcher in andere Antworten stecken.

Angenommen, ich habe versehentlich jeden Terminalemulator auf meinem System deinstalliert:

Das ist eigentlich sehr schwer durchzuziehen, weil

durch Drücken CtrlAltF2

Sie wechseln zu einer anderen virtuellen Konsole, auf der der Linux-Kernel-Emulator für virtuelle Terminals ausgeführt wird. Dies ist sehr schwer zu entfernen und erfordert eine Neukompilierung des Kernels mit nicht standardmäßigen Optionen. Lassen Sie uns also Lücken in den Optionen ssh / telnet / serial-port schließen, für die ein Remote-Terminal-Emulator erforderlich ist. Webmin hat auch einen Terminal-Emulator (nur ein mieser).

Es gibt nur eine Möglichkeit, die Funktion eines Terminals ohne Terminalemulator zu nutzen: Verwenden Sie ein echtes Terminal. Früher hatte ich ein Televideo und einen Teletyp (kein TeleType, das war ein Knockoff). Ich konnte Dateien mit beiden (vi im Televideo, ed im Teletyp (was für ein Problem)) bearbeiten, um Anrufe zu tätigen ein lokales bbs mit minicom und seyon aus dem televideo. Sie wissen, dass das einzige, was ich an ihnen vermisse, die prahlerischen Rechte sind, aber ich habe ein paar Konfigurationsterminals für Industriedrucker mit einem zweizeiligen 20-Spalten-Display, einer Tastatur und einer RS232-Schnittstelle ausgewählt, die für die Notfallkonfigurationsreparatur geeignet sind, sobald ich es mir vorgestellt habe raus wo mein ed handbuch ist.

hildred
quelle
0

Ähnlich wie bei der Antwort von @AB , wenn Sie einen Webserver haben (ich glaube, Stanard Ubuntu wird mit Apache ausgeliefert), können Sie eine Shell in Ihrem eigenen Browser mit so etwas wie phpshell ausführen .

Persönlich würde ich nur Emacs starten und M-x shell RETURN.

user420930
quelle
Standard Ubuntu wird ohne Webserver ausgeliefert.
muru
2
@muru Es kommt mit einem Webserver im Repository . Öffnen Sie einfach ein Terminal und tippen Sie sudo apt-get install apache. Oh, Moment mal.
Mr Lister