Como acessar o bash sem um emulador de terminal?

37

Digamos que eu desinstalado acidentalmente cada emulador de terminal no meu sistema: xterm, uxterm, gnome-terminal, guake, etc. Existe uma maneira que eu possa acessar bashsem um emulador de terminal?

Uma maneira possível de pensar seria criar e executar um script de shell, mas, além disso, posso obter um shell interativo?

Isso é puramente hipotético, mas obrigado por todas as respostas!

Huey
fonte
2
Existem programas que podem executar um shell e fornecer algum nível de interatividade, emulando (parcialmente) um terminal, mas não são emuladores erminais em si . GVim é um, por exemplo.
Muru
@ muru Então, por que você ainda não postou isso como resposta? : D
Sergiy Kolodyazhnyy
@Serg pelo mesmo motivo que não publiquei sua solução IDE ou o console Python do gedit - nenhum deles é instalado por padrão (embora eu ache que podemos ativar o console gedit Python sem instalar nada adicional).
Muru
@ muru Ah, entendo. Soluções que não requerem instalação adicional são sempre preferidas. Definitivamente
Sergiy Kolodyazhnyy

Respostas:

63

Sim, pressionando CtrlAltF21 . Isso fornece acesso ao console virtual TTY2. E você pode reinstalar qualquer emulador de terminal de lá com sudo apt-get install terminal-name, onde terminal-name é, gnome-terminalpor exemplo.

Para voltar à GUI, primeiro digite o exitlogout do console virtual e pressione CtrlAltF7para voltar à GUI. (Caso deseje manter a sessão TTY aberta, pule a exitparte de digitação )

Edição: junho 17,2015

Pensei em outra solução: se você tiver algum IDE em linguagem C, poderá compilar o código a seguir e o console do IDE agora dará acesso ao bash

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

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

Nota: CtrlAltF2 não é a única opção. Você pode usar CtrlAltF1, CtrlAltF3, CtrlAltF4, CtrlAltF5e CtrlAltF6também, o que lhe dará virtual tty1 console, tty3, tty4, TTY5 ou tty6 respectivamente.

Sergiy Kolodyazhnyy
fonte
11
@ThomasW. Eu sei, mas em alguns sistemas, como Fedora tty1 não está lá, então eu entrei habbit de dizer F2
Sergiy Kolodyazhnyy
18
@ Huey, isso é acessível em todos os sistemas, à prova de falhas, a menos que você tenha desativado manualmente os ttys e é basicamente como o linux / unix é por padrão - console de texto. GUI é realmente opcional em sistemas * nix
Sergiy Kolodyazhnyy
8
@Huey O console virtual é o que o Linux foi criado para fazer em primeiro lugar. Tudo o resto é um recurso que foi adicionado mais tarde. E é apenas um recurso muito útil que faria sentido removê-lo novamente.
kasperd
10
Era uma vez, normalmente, você entrava no console de texto e, em seguida, executava xinitou startxrealmente entrava no X11, se precisasse executar um programa GUI por algum motivo. :)
fluffy
11
Encontrei outra solução. Veja minha edição, pessoal
Sergiy Kolodyazhnyy
30

Se você tiver um servidor ssh em execução, poderá se conectar via ssh a partir de outro sistema.

ssh <your_remote_user_name>@<your_remote_host>

Se eu instalar um sistema, primeiro instalo e inicio o servidor SSH. Um tipo de seguro de vida. =)

AB
fonte
24

Ctrl+ Alt+ ( F1por F4pelo menos, talvez até F6) executar uma interface de terminal nos consoles virtuais. Uma vez lá, para voltar à GUI, use Ctrl+ Alt+F7 .

Se você fizer alguma dessas opções, poderá acessar um terminal no qual possa fazer login e acessar o terminal. Porém, os scripts bash continuarão em execução, se forem scripts automatizados inseridos crone assim ou clicados duas vezes para executar (mas não no terminal). Os emuladores de terminal que 'fornecem' um shell interativo, mas bash, finalmente zsh, etc., que são os shells reais, ainda existem e podem ser executados viacron scripts e até dos consoles virtuais nos combos de teclado acima.

Observe que, se seus scripts precisarem da interface interativa, você precisará usar os consoles virtuais ou instalar um emulador novamente.

Thomas Ward
fonte
2
F1 a F6 no meu computador.
Scimonster
14

Se esta é uma pergunta de um teste, para completar, eu adicionaria tty serial normal, onde você se conectaria ao seu computador com um cabo serial. você precisaria de um getty (ou qualquer tty ouvintes seriais agora chamados) configurado anteriormente antes de perder o terminal, e de um segundo computador para conversar com o primeiro, portanto, como uma emergência em casa, é improvável que isso aconteça .

Você também pode ter algum console webmin que ofereça (com efeito) acesso ao shell, embora não seja tecnicamente interativo. Nesse ponto, é melhor executar comandos fáceis, como o apt-get some-terminal-emulator.

Se você tiver uma janela do navegador aberta, você poderia, em teoria, procurar um emulador de terminal java, mas meu palpite é que você precisará instalar com antecedência e apenas ter uma janela do navegador não permitirá que você acesse o arquivo subjacente, mas não tenho tempo para testar de qualquer maneira.

portanto, as perguntas acima são "de todas as formas possíveis", não necessariamente úteis na vida real para uso doméstico, embora a maioria das salas de servidores provavelmente tenha acesso serial.

hmm, muitas outras ferramentas (emacs, vim, etc) permitem algum nível de descasque. vamos esperar que você tenha o xemacs aberto

Rich Homolka
fonte
+1 para o registro no emacs, você pode usar o Mx shell ; em gvim existe ESC :shell; enquanto geany tem um "Widget virtual emulador de terminal (TEV)" em uma guia do painel de mensagens, desde que libvte.soestá disponível
steeldriver
6

Embora todas as respostas acima sejam perfeitas, e como você usa o Linux, você tem muitas outras soluções possíveis:

  • Ttys virtuais, conforme descrito na resposta do @serg, que é a solução perfeita
  • SSH, conforme descrito na solução @AB, que é um truque adorável, mas é necessário levar em consideração o funcionamento do servidor openssh.
  • Outras soluções possíveis (não é a perfeita, mas apenas para mostrar outras possibilidades): LiveCD , Modo de Recuperação
Maythux
fonte
3
Solução de exagero.
Thomas Ward
@ThomasW. Por quê!? É apenas outra opção? Por que você considerou a solução exagerada ?!
Maythux
2
@ Maythux, embora tecnicamente correto, é realmente um pouco exagerado, quando já temos TTYs disponíveis e ssh. A solução LiveCD é mais aplicável quando você instala o coreutils (sim, eu já fiz isso antes por acidente) ou algo realmente ficou bagunçado.
Sergiy Kolodyazhnyy
11
@Serg mas ainda é um caso, mais É apenas mais uma solução, eu disse, além de usar o tty, como você descreveu, ele tem uma opção do liveCd, também tem a opção do modo de recuperação ... Estamos falando de linux, muitas soluções para mesmo problema. Não acho que recomendar um liveCd seja um problema!
Maythux 15/06
11
@ Maythux Se eles já conseguem fazer login e têm os 'consoles virtuais' nos TTYs, é um exagero e trabalho extra apenas inicializar em um LiveUSB / LiveCD para fazer isso. Especialmente desde que não é um caso de "Eu não posso acessar qualquer coisa" assim não há necessidade para as grandes armas (como Serg aludido nos comentários)
Thomas Ward
2

Então, eu vou ser pedante aqui:

Existe uma maneira de acessar o bash sem um emulador de terminal?

Certamente, qualquer script que comece com #!/bin/bashfará isso.

Existe uma maneira de obter um prompt do bash sem um emulador de terminal?

Continuando com o meu tema de ser pedante, vamos fazer alguns buracos em algumas das outras respostas.

Digamos que eu desinstalei acidentalmente todos os emuladores de terminal no meu sistema:

Isso é realmente muito difícil de fazer, porque

pressionando CtrlAltF2

você alterna para outro console virtual que possui o emulador de terminal virtual do kernel do linux em execução, o que é muito difícil de remover e requer a recompilação do kernel com opções fora do padrão. Então, vamos fazer furos nas opções ssh / telnet / porta serial, que requerem um emulador de terminal remoto; quanto ao webmin, ele também possui um emulador de terminal (apenas um péssimo).

Há apenas uma maneira de usar a função de um terminal sem um emulador de terminal: use um terminal real. Eu costumava ter um Televideo e um teletipo (não um TeleType, isso era uma imitação). Eu era capaz de editar arquivos com ambos (vi no Televideo, ed no teletipo (que dor na parte traseira)) fazem chamadas para um especialista local usando minicom e seyon do televideo. Você sabe que a única coisa que sinto falta deles são os direitos de se gabar, mas eu peguei alguns terminais de configuração para impressoras industriais que têm uma tela de duas linhas com 20 colunas, um teclado e uma interface rs232 que trabalharão para o reparo de configurações de emergência assim que eu descobrir onde está o meu manual de instruções.

hildred
fonte
0

Semelhante à resposta da @AB , se você tem um servidor web em execução (acredito que o Ubuntu padrão seja fornecido com o apache), você pode executar um shell no seu próprio navegador com algo como phpshell .

Pessoalmente, eu acabei de lançar o emacs e M-x shell RETURN.

user420930
fonte
O Ubuntu padrão não vem com um servidor web.
Muru
2
@muru Ele vem com um servidor web no repositório . Basta abrir um terminal e digite sudo apt-get install apache. Oh espere.
Sr. Lister,