¿Cómo acceder a bash sin un emulador de terminal?

37

Di He desinstalado accidentalmente todos emulador de terminal en mi sistema: xterm, uxterm, gnome-terminal, guake, etc ¿Hay alguna manera de acceder bashsin un emulador de terminal?

Una posible forma de pensar sería crear y ejecutar un script de shell, pero aparte de eso, ¿puedo obtener un shell interactivo?

Esto es puramente hipotético, ¡pero gracias por todas las respuestas!

Huey
fuente
2
Hay programas que pueden ejecutar un shell y proporcionar cierto nivel de interactividad, emulando (parcialmente) un terminal, pero no son emuladores erminales per se . GVim es uno, por ejemplo.
muru
@muru, ¿por qué no has publicado eso como respuesta todavía? : D
Sergiy Kolodyazhnyy
@Serg por la misma razón por la que no publiqué su solución IDE o la consola Python de gedit: ninguna de estas está instalada de forma predeterminada (aunque creo que podemos habilitar la consola Python de gedit sin instalar nada adicional).
muru
@muru Ah, ya veo. Siempre se prefieren las soluciones que no requieren instalación adicional. Definitivamente
Sergiy Kolodyazhnyy

Respuestas:

63

Sí, presionando CtrlAltF21 . Eso le da acceso a la consola virtual TTY2. Y puede reinstalar cualquier emulador de terminal desde allí sudo apt-get install terminal-name, donde está el nombre del terminal, gnome-terminalpor ejemplo.

Para volver a la GUI, primero escriba exitpara cerrar sesión en la consola virtual, luego presione CtrlAltF7para volver a la GUI. (En caso de que desee mantener abierta la sesión TTY, omita la exitparte de escritura )

Edición: junio 17,2015

He pensado en otra solución: si tiene algún IDE en lenguaje C, podría compilar el siguiente código, y la consola del IDE ahora le dará acceso a bash

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

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

Nota: CtrlAltF2 no es la única opción. Se puede utilizar CtrlAltF1, CtrlAltF3, CtrlAltF4, CtrlAltF5y CtrlAltF6también, lo que le dará TTY1 consola virtual, tty3, tty4, TTY5 o tty6 respectivamente.

Sergiy Kolodyazhnyy
fuente
1
@ThomasW. Lo sé, pero en algunos sistemas como Fedora tty1 no está allí, así que me puse a decir F2
Sergiy Kolodyazhnyy
18
@Huey, esto es accesible en todos los sistemas, a prueba de fallas, a menos que haya deshabilitado manualmente ttys, y es básicamente cómo Linux / Unix es por defecto - consola de texto. La GUI es realmente opcional en los sistemas * nix
Sergiy Kolodyazhnyy
8
@Huey La consola virtual es lo que Linux fue creado para hacer en primer lugar. Todo lo demás es una característica que se agregó más tarde. Y es una característica demasiado útil que tendría sentido eliminarla nuevamente.
kasperd
10
Érase una vez, normalmente iniciaría sesión a través de la consola de texto y luego ejecutaría xinito startxacceder a X11, si necesitara ejecutar un programa GUI por alguna razón. :)
esponjoso
1
He encontrado otra solución. Vea mi edición, chicos
Sergiy Kolodyazhnyy
30

Si tiene un servidor ssh ejecutándose, puede conectarse a través de ssh desde otro sistema.

ssh <your_remote_user_name>@<your_remote_host>

Si instalo un sistema, primero instalo e inicio el servidor SSH. Un tipo de seguro de vida. =)

AB
fuente
24

Ctrl+ Alt+ (a F1través de F4al menos, tal vez hasta F6) ejecutar una interfaz de terminal en las consolas virtuales. Una vez allí, para volver a la GUI, use Ctrl+ Alt+ F7.

Si hace alguno de estos, debería poder acceder a un terminal en el que puede iniciar sesión y luego acceder al terminal. Sin embargo, los scripts de Bash continuarán ejecutándose, si son scripts automatizados que se insertan crony hacen doble clic para ejecutarse (pero no en la terminal). Los emuladores de terminal que 'le dan' un shell interactivo, pero en última instancia bash, zshetc., que son los shells reales, todavía existen y pueden ejecutarse a través de cronscripts e incluso las consolas virtuales en los combos de teclado anteriores.

Tenga en cuenta que si sus scripts necesitan la interfaz interactiva, tendrá que usar las consolas virtuales o instalar un emulador nuevamente.

Thomas Ward
fuente
2
F1 a F6 en mi computadora.
Scimonster
14

Si esta es una pregunta de una prueba, para completarlo, agregaría tty en serie normales, donde se conectaría a su computadora con un cable en serie. necesitaría un getty (o como se llame ahora a los oyentes en serie tty) previamente configurados antes de perder su terminal, y necesitaría una segunda computadora para hablar con la primera, por lo que, como una emergencia en el hogar, es poco probable que esto suceda .

También puede tener alguna consola webmin que le brinde (en efecto) acceso al shell, aunque no un shell técnicamente interactivo. en ese punto, es mejor hacer comandos fáciles, como apt-get some-terminal-emulator.

Si tiene una ventana de navegador abierta, en teoría podría buscar un emulador de terminal java, pero supongo que tendría que instalarlo con anticipación, y solo tener una ventana de navegador no le permitiría acceder a la pty subyacente, pero no tengo tiempo para probar de ninguna manera.

entonces, las preguntas anteriores son "cuáles son todas las formas posibles", no necesariamente útiles en la vida real para el hogar, aunque la mayoría de las salas de servidores probablemente tendrían acceso en serie.

hmm, muchas otras herramientas (emacs, vim, etc.) permiten cierto nivel de desvanecimiento. Esperemos que tengas xemacs abiertos

Rich Homolka
fuente
+1 para el registro en emacs puede usar Mx shell ; en gvim hay ESC :shell; mientras que geany tiene un "widget de emulador de terminal virtual (VTE)" en una pestaña del panel de mensajes siempre que libvte.soesté disponible
steeldriver
6

Aunque todas las respuestas anteriores son perfectas, y dado que está utilizando Linux, tiene muchas otras posibles soluciones:

  • Ttys virtuales como se describe en @serg answer, que es la solución perfecta
  • SSH como se describe en la solución @AB, que es un truco encantador, pero debe tener en cuenta para tener el servidor openssh en ejecución.
  • Otras posibles soluciones (no es la perfecta sino solo para mostrar otras posibilidades): LiveCD , Modo de recuperación
Maythux
fuente
3
Solución excesiva.
Thomas Ward
@ThomasW. ¿¡Por qué!? ¿Es solo otra opción? ¿Por qué lo considerabas una solución exagerada?
Maythux
2
@Maythux, aunque técnicamente es correcto, de hecho es un poco exagerado, cuando ya tenemos TTY disponibles y ssh. La solución LiveCD es más aplicable cuando ha instalado coreutils (sí, lo he hecho antes por accidente) o algo realmente se estropeó.
Sergiy Kolodyazhnyy
1
@Serg, pero sigue siendo un caso, además Es solo otra solución, dije además de usar tty como describiste, tiene una opción de liveCd, también tiene la opción de modo de recuperación ... Estamos hablando de Linux, muchas soluciones para el mismo problema. ¡No creo que recomendar un liveCd sea un problema!
Maythux
1
@Maythux Si ya pueden iniciar sesión y tener las 'consolas virtuales' en los TTY, es excesivo y un trabajo adicional arrancar en un LiveUSB / LiveCD para hacerlo. Especialmente porque no es un caso de "No puedo acceder a nada", así que no hay necesidad de las armas grandes (como Serg aludió en los comentarios)
Thomas Ward
2

Así que voy a ser pedante aquí:

¿Hay alguna manera de acceder a bash sin un emulador de terminal?

Seguro que cualquier script que comience #!/bin/bashhará eso.

¿Hay alguna manera de obtener un mensaje bash sin un emulador de terminal?

Continuando con mi tema de ser pedante, hagamos algunos agujeros en algunas de las otras respuestas.

Digamos que accidentalmente desinstalé cada emulador de terminal en mi sistema:

Esto es realmente muy difícil de lograr porque

presionando CtrlAltF2

cambia a otra consola virtual que tiene el emulador de terminal virtual del kernel de Linux ejecutándose, lo cual es muy difícil de eliminar y requiere volver a compilar el kernel con opciones no estándar. Entonces, hagamos agujeros en las opciones de ssh / telnet / puerto serie, que requieren un emulador de terminal remoto; En cuanto a webmin, también tiene un emulador de terminal (solo uno pésimo).

Solo hay una forma de usar la función de un terminal sin un emulador de terminal: usar un terminal real. Solía ​​tener un Televideo y un teletipo (no un TeleType, esto era una imitación). Pude editar archivos con ambos (vi en el Televideo, ed en el teletipo (qué dolor en la parte trasera)). un bbs local usando minicom y seyon del televideo. Sabes que lo único que extraño de ellos son los derechos de alardear, pero tomé un par de terminales de configuración para impresoras industriales que tienen una pantalla de dos líneas de 20 columnas, un teclado y una interfaz rs232 que funcionará para la reparación de la configuración de emergencia una vez que calcule fuera de donde está mi manual de educación.

hildred
fuente
0

Similar a la respuesta de @AB , si tiene un servidor web en ejecución (creo que Ubuntu estándar viene con Apache), podría ejecutar un shell en su propio navegador con algo como phpshell .

Personalmente, simplemente encendía emacs y M-x shell RETURN.

usuario420930
fuente
Ubuntu estándar no viene con un servidor web.
muru
2
@muru Viene con un servidor web en el repositorio . Simplemente abra una terminal y escriba sudo apt-get install apache. Oh espera.
Sr. Lister