Come accedere a bash senza un emulatore di terminale?


37

Dire che ho accidentalmente disinstallato ogni emulatore di terminale sul mio sistema: xterm, uxterm, gnome-terminal, guake, ecc C'è un modo per accedere bashsenza un emulatore di terminale?

Un possibile modo a cui riesco a pensare sarebbe quello di creare ed eseguire uno script di shell, ma a parte questo, posso ottenere una shell interattiva?

Questo è puramente ipotetico, ma grazie per tutte le risposte!


2
Esistono programmi che possono eseguire una shell e fornire un certo livello di interattività, emulando (parzialmente) un terminale, ma di per sé non sono emulatori di germi . GVim è uno, per esempio.
muru,

@muru, quindi perché non l'hai ancora pubblicato come risposta? : D
Sergiy Kolodyazhnyy,

@Serg per lo stesso motivo per cui non ho pubblicato la tua soluzione IDE o la console Python di gedit - nessuna di queste è installata di default (anche se penso che possiamo abilitare la console gedit Python senza installare nulla di aggiuntivo).
Muru,

@muru Ah, capisco. Le soluzioni che non richiedono alcuna installazione aggiuntiva sono sempre preferite. Sicuramente
Sergiy Kolodyazhnyy il

Risposte:


63

Sì, premendo CtrlAltF21 . Ciò ti dà accesso alla console virtuale TTY2. E puoi reinstallare qualsiasi emulatore di terminale da lì con sudo apt-get install terminal-name, ad esempio , dove nome-terminale è gnome-terminal.

Per tornare alla GUI, digitare prima exitdi disconnettersi dalla console virtuale, quindi premere CtrlAltF7per tornare alla GUI. (Nel caso in cui si desideri mantenere aperta la sessione TTY, saltare la exitparte di battitura )

Modifica: giugno 17,2015

Ho pensato a un'altra soluzione: se si dispone di un IDE in linguaggio C, è possibile compilare il codice seguente e la console dell'IDE ora ti darà accesso a bash

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

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

Nota: CtrlAltF2 non è l'unica opzione. È possibile utilizzare CtrlAltF1, CtrlAltF3, CtrlAltF4, CtrlAltF5e CtrlAltF6anche, che vi darà tty1 Virtual Console, tty3, tty4, TTY5 o tty6 rispettivamente.


1
@ThomasW. Lo so, ma su alcuni sistemi come Fedora tty1 non c'è, quindi mi sono appassionato a dire F2
Sergiy Kolodyazhnyy il

18
@Huey questo è accessibile su tutti i sistemi, fail-safe, a meno che tu non abbia disabilitato manualmente ttys, ed è sostanzialmente come linux / unix è di default - console di testo. La GUI è davvero facoltativa sui sistemi * nix
Sergiy Kolodyazhnyy,

8
@Huey La console virtuale è ciò che Linux è stato creato per fare in primo luogo. Tutto il resto è una funzionalità che è stata aggiunta in seguito. Ed è solo una caratteristica troppo utile che avrebbe senso rimuoverlo di nuovo.
Kasperd,

10
C'era una volta, normalmente si accedeva tramite la console di testo e quindi si eseguiva xinito startxeffettivamente si accedeva a X11, se per qualche motivo fosse necessario eseguire un programma di interfaccia grafica. :)
soffice

1
Ho trovato un'altra soluzione. Guarda la mia modifica, ragazzi
Sergiy Kolodyazhnyy,

30

Se hai un server SSH in esecuzione, allora puoi connetterti via SSH da un altro sistema.

ssh <your_remote_user_name>@<your_remote_host>

Se installo un sistema, prima installo e avvio il server SSH. Una specie di assicurazione sulla vita. =)


24

Ctrl+ Alt+ ( almeno F1attraverso F4, forse fino a F6) eseguire un'interfaccia terminale sulle console virtuali. Una volta lì, per tornare alla GUI, usa Ctrl+ Alt+ F7.

Se esegui una di queste operazioni, dovresti essere in grado di accedere a un terminale a cui puoi accedere e quindi accedere al terminale. Gli script Bash, tuttavia, continueranno a essere eseguiti, se sono script automatici rilasciati crone tali o doppio clic per l'esecuzione (ma non nel terminale). Gli emulatori di terminale che "ti danno" una shell interattiva, ma alla fine bash, zshecc., Che sono le shell effettive, esistono ancora e possono essere eseguiti tramite cron, script e persino le console virtuali sulle combinazioni di tastiera sopra.

Nota che se i tuoi script necessitano dell'interfaccia interattiva, dovrai usare le console virtuali o installare di nuovo un emulatore.


2
Da F1 a F6 sul mio computer.
Scimonster,

14

Se questa è una domanda di un test, per completezza aggiungerei i normali tty seriali, dove ti collegheresti al tuo computer con un cavo seriale. avresti bisogno di un getty (o come si chiamano adesso i tty serial listener) precedentemente configurato prima di perdere il terminale, e avresti bisogno di un secondo computer per parlare con il primo, quindi in caso di emergenza domestica non è probabile che accada .

Potresti anche avere una console webmin che ti dà (in effetti) accesso alla shell, anche se non shell tecnicamente interattiva. a quel punto è meglio eseguire comandi semplici, come apt-get some-terminal-emulator.

Se hai una finestra del browser aperta, potresti in teoria cercare un emulatore di terminale java ma la mia ipotesi è che dovresti installare in anticipo e avere solo una finestra del browser non ti permetterebbe di accedere al diritto di pty sottostante, ma non ho tempo di provare in entrambi i modi.

quindi, le domande precedenti sono "quali sono tutti i modi possibili", non necessariamente utili nella vita reale per la casa, anche se la maggior parte delle sale server avrebbe probabilmente accesso seriale.

hmm, molti altri strumenti (emacs, vim, ecc.) consentono un certo livello di bombardamento. speriamo che tu abbia xemacs aperto


+1 per la registrazione in emacs puoi usare la shell Mx ; in gvim c'è ESC :shell; mentre geany ha un "widget di emulatore di terminale virtuale (VTE)" in una scheda del riquadro dei messaggi, a condizione che libvte.sosia disponibile
steeldriver,

6

Sebbene tutte le risposte sopra siano perfette, e dal momento che stai usando Linux, hai molte altre possibili soluzioni:

  • Tty virtuali come descritto nella risposta @serg che è la soluzione perfetta
  • SSH come descritto nella soluzione @AB che è un bel trucco, ma devi prendere in considerazione per avere il server openssh in esecuzione.
  • Altre possibili soluzioni (non è perfetto ma solo per mostrare altre possibilità): LiveCD , Recovery Mode

3
Soluzione eccessiva.
Thomas Ward

@ThomasW. Perché!? È solo un'altra opzione? Perché l'hai considerata una soluzione eccessiva ?!
Maythux,

2
@Maythux sebbene tecnicamente corretto, è davvero un po 'eccessivo, quando abbiamo già TTY disponibili e SSH. La soluzione LiveCD è più applicabile quando hai installato coreutils (sì, l'ho già fatto per caso) o qualcosa è davvero incasinato.
Sergiy Kolodyazhnyy,

1
@Serg ma è ancora un caso, in più È solo un'altra soluzione, ho detto oltre a usare tty come hai descritto ha un'opzione di liveCd, ha anche un'opzione di modalità di recupero ... Stiamo parlando di Linux, molte soluzioni per stesso problema. Non credo che raccomandare un liveCd sia un problema!
Maythux,

1
@Maythux Se sono già in grado di accedere e hanno le "console virtuali" su TTY, è eccessivo e lavoro extra avviare semplicemente un LiveUSB / LiveCD per farlo. Soprattutto dal momento che non si tratta di "Non riesco ad accedere a nulla", quindi non c'è bisogno delle grandi pistole (come ha accennato Serg nei commenti)
Thomas Ward

2

Quindi sarò pedante qui:

C'è un modo per accedere a bash senza un emulatore di terminale?

Sicuramente qualsiasi sceneggiatura che inizia con #!/bin/bashlo farà.

C'è un modo per ottenere un prompt di bash senza un emulatore di terminale?

Continuando con il mio tema di essere pedante, lascia che faccia qualche buco in alcune delle altre risposte.

Supponiamo di aver disinstallato accidentalmente ogni emulatore di terminale sul mio sistema:

Questo è in realtà molto difficile da realizzare perché

premendo CtrlAltF2

si passa a un'altra console virtuale su cui è in esecuzione l'emulatore di terminale virtuale del kernel linux, che è molto difficile da rimuovere e richiede la ricompilazione del kernel con opzioni non standard. Quindi lascia bucare le opzioni ssh / telnet / serial-port, quelle richiedono un emulatore di terminale remoto; per quanto riguarda il webmin, ha anche un emulatore di terminale (solo uno schifoso).

C'è solo un modo per usare la funzione di un terminale senza un emulatore di terminale: usare un terminale reale. Avevo un Televideo e un teletype (non un TeleType, questo era un knockoff) Ero in grado di modificare i file con entrambi (vi sul Televideo, ed sul teletype (che dolore nella parte posteriore)) un bbs locale che usa minicom e seyon dal televideo. Sai che l'unica cosa che mi manca di loro sono i diritti di vantarsi, ma ho raccolto un paio di terminali di configurazione per stampanti industriali che hanno un display a due righe da 20 colonne, una tastiera e un'interfaccia RS232 che funzionerà per la riparazione della configurazione di emergenza una volta che ho capito dove si trova il mio manuale.


0

Simile alla risposta di @AB , se hai un server web in esecuzione (credo che Ubuntu standard venga fornito con apache), potresti eseguire una shell nel tuo browser con qualcosa come phpshell .

Personalmente, accenderei solo emacs e M-x shell RETURN.


Ubuntu standard non viene fornito con un server web.
Muru,

2
@muru Viene fornito con un web server nel repository . Basta aprire un terminale e digitare sudo apt-get install apache. Oh aspetta.
Lister,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.