Comment accéder à bash sans émulateur de terminal?

37

Dire que je l' ai accidentellement désinstallé chaque émulateur de terminal sur mon système: xterm, uxterm, gnome-terminal, guake, etc. Est - il possible que je peux accéder bashsans un émulateur de terminal?

Une façon possible de penser serait de créer et d’exécuter un script shell, mais à part cela, puis-je obtenir un shell interactif?

Ceci est purement hypothétique, mais merci pour toutes les réponses!

Huey
la source
2
Il existe des programmes qui peuvent exécuter un shell et fournir un certain niveau d'interactivité en émulant (partiellement) un terminal, mais ne sont pas des émulateurs erminaux en soi . GVim en est un, par exemple.
muru
@muru alors pourquoi vous n'avez pas encore posté cette réponse? : D
Sergiy Kolodyazhnyy
@Serg pour la même raison que je n'ai pas posté votre solution IDE, ni la console Python de gedit - aucun d'entre eux n'est installé par défaut (bien que je pense que nous pouvons activer la console gedit Python sans rien installer de plus).
Muru
@muru Ah, je vois. Les solutions qui ne nécessitent aucune installation supplémentaire sont toujours préférées. Certainement
Sergiy Kolodyazhnyy

Réponses:

63

Oui, en appuyant sur CtrlAltF21 . Cela vous donne accès à la console virtuelle TTY2. Et vous pouvez réinstaller n'importe quel émulateur de terminal à partir de là sudo apt-get install terminal-name, où nom-terminal est, gnome-terminalpar exemple.

Pour revenir à l'interface graphique, tapez d'abord exitpour vous déconnecter de la console virtuelle, puis appuyez sur CtrlAltF7pour revenir à l'interface graphique. (Si vous souhaitez garder la session TTY ouverte, ignorez la exitpartie saisie ).

Edit: 17 juin 2015

J'ai imaginé une autre solution: si vous avez un IDE en langage C, vous pouvez compiler le code suivant, et la console de l'EDI vous donnera désormais accès à bash

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

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

Remarque: CtrlAltF2 n'est pas la seule option. Vous pouvez utiliser CtrlAltF1, CtrlAltF3, CtrlAltF4, CtrlAltF5et CtrlAltF6aussi, ce qui vous donnera TTY1 de la console virtuelle, tty3, tty4, TTY5 ou tty6 respectivement.

Sergiy Kolodyazhnyy
la source
1
@ThomasW. Je sais, mais sur certains systèmes comme Fedora tty1 n'y est pas, je me suis donc mis à dire: F2
Sergiy Kolodyazhnyy
18
@ Huey, il est accessible sur tous les systèmes, de sécurité intégrée, sauf si vous avez désactivé manuellement ttys, et correspond en gros à la configuration par défaut de linux / unix: console de texte. L'interface graphique est vraiment facultative sur les systèmes * nix
Sergiy Kolodyazhnyy
8
@ Huey La console virtuelle est ce que Linux a été créé pour faire en premier lieu. Tout le reste est une fonctionnalité qui a été ajoutée plus tard. Et c’est une fonctionnalité trop utile pour laquelle il serait logique de la supprimer à nouveau.
Kasperd
10
Il était une fois, vous vous connecteriez normalement via la console texte, puis exécutez xinitou startxentrez réellement dans X11, si vous aviez besoin d'exécuter un programme graphique pour une raison quelconque. :)
moelleux
1
J'ai déjà trouvé une autre solution. Voir mon montage, les gars
Sergiy Kolodyazhnyy
30

Si vous avez un serveur ssh en cours d'exécution, vous pouvez vous connecter via ssh à partir d'un autre système.

ssh <your_remote_user_name>@<your_remote_host>

Si j'installe un système, je commence par installer et démarrer le serveur SSH. Une sorte d'assurance vie. =)

UN B
la source
24

Ctrl+ Alt+ ( F1Par F4au moins, peut - être jusqu'à F6) exécuter une interface terminal sur les consoles virtuelles. Une fois là-bas, pour revenir à l'interface graphique, utilisez Ctrl+ Alt+ F7.

Dans ce cas, vous devriez pouvoir accéder à un terminal auquel vous pouvez vous connecter, puis accéder au terminal. Les scripts Bash continueront cependant à s'exécuter, s'ils sont automatisés, ils sont lus cronou double-cliqué pour s'exécuter (mais pas dans le terminal). Les émulateurs de terminaux qui "vous donnent" un shell interactif, mais en fin de compte bash, zshetc., qui sont les véritables coques, existent toujours et peuvent être exécutés via cron, des scripts et même les consoles virtuelles des combos clavier ci-dessus.

Notez cependant que si vos scripts nécessitent une interface interactive, vous devrez utiliser les consoles virtuelles ou installer à nouveau un émulateur.

Thomas Ward
la source
2
F1 à F6 sur mon ordinateur.
Scimonster
14

S'il s'agit d'une question d'un test, j'ajouterais des ttés de série normaux pour que vous puissiez vous connecter à votre ordinateur avec un câble série. vous auriez besoin d'un getty (ou de tout autre écouteur série appelé maintenant) préalablement configuré avant de perdre votre terminal, et d'un deuxième ordinateur pour communiquer avec le premier, de sorte que cela ne devrait pas se produire en cas d'urgence à la maison .

Vous pouvez également avoir une console webmin qui vous donne (en fait) un accès à un shell, mais pas un shell interactif sur le plan technique. à ce stade, il vaut mieux faire des commandes simples, comme apt-get some-terminal-emulator.

Si vous avez une fenêtre de navigateur ouverte, vous pouvez théoriquement rechercher un émulateur de terminal java, mais j’imagine qu’il faudrait installer à l’avance et que le simple fait d’avoir une fenêtre de navigateur ne vous permettrait pas d’accéder au droit de pty sous-jacent, mais je n'ai pas le temps de tester de toute façon.

les questions ci-dessus sont donc "quelles sont toutes les manières possibles", des questions qui ne sont pas nécessairement utiles dans la vie réelle à la maison, bien que la plupart des salles de serveurs aient probablement un accès série.

hmm, beaucoup d'autres outils (emacs, vim, etc.) permettent un certain niveau de bombardement. permet d'espérer que vous avez ouvert xemacs

Rich Homolka
la source
+1 pour l'enregistrement dans emacs, vous pouvez utiliser le shell Mx ; dans gvim il y a ESC :shell; tandis que geany a un "widget d'émulateur de terminal virtuel (VTE)" dans un onglet du volet de message fourni qui libvte.soest disponible
steeldriver
6

Bien que toutes les réponses ci-dessus soient parfaites et que vous utilisiez Linux, vous avez beaucoup d'autres solutions possibles:

  • Des ttys virtuels comme décrit dans @serg answer qui est la solution parfaite
  • SSH comme décrit dans la solution @AB, ce qui est une astuce intéressante, mais vous devez prendre en considération le fait d’avoir un serveur openssh en marche.
  • Une autre solution possible (ce n’est pas la solution parfaite mais juste pour montrer d’autres possibilités): LiveCD , mode de récupération
Maythux
la source
3
Solution excessive.
Thomas Ward
@ThomasW. Pourquoi!? C'est juste une autre option? Pourquoi avez-vous considéré cette solution excessive?!
Maythux
2
@ Maythux, bien que techniquement correct, c’est en fait un peu exagéré, alors que nous avons déjà des téléscripteurs disponibles et ssh. La solution LiveCD est plus applicable lorsque vous avez installé coreutils (oui, j’ai déjà fait cela par accident) ou que quelque chose s’est vraiment égaré.
Sergiy Kolodyazhnyy
1
@Serg mais ça reste un cas, plus C'est juste une autre solution, ai-je dit en plus d'utiliser tty comme vous l'avez décrit, il a une option de liveCd, il a aussi une option de mode de récupération ... NOUS parlons de Linux, de nombreuses solutions pour même problème. Je ne pense pas que recommander un liveCd soit un problème!
Maythux
1
@ Maythux S'ils sont déjà en mesure de se connecter et disposent des «consoles virtuelles» sur les TTY, il est excessif et surchargé de travail de démarrer simplement sur un LiveUSB / LiveCD. D'autant plus que ce n'est pas un cas de "je ne peux accéder à rien", donc pas besoin de gros calibres (comme Serg l'a mentionné dans des commentaires)
Thomas Ward
2

Je vais donc être pédant ici:

Existe-t-il un moyen d’accéder à bash sans émulateur de terminal?

Bien sûr, tout script commençant par le #!/bin/bashfera.

Est-il possible d'obtenir une invite bash sans émulateur de terminal?

Continuons avec mon thème de pédantisme, creusons des trous dans certaines des autres réponses.

Supposons que j'ai désinstallé accidentellement chaque émulateur de terminal de mon système:

C'est en fait très difficile à retirer parce que

en appuyant CtrlAltF2

vous basculez vers une autre console virtuelle sur laquelle l'émulateur de terminal virtuel du noyau Linux s'exécute, ce qui est très difficile à supprimer et nécessite une recompilation du noyau avec des options non standard. Laissons donc les trous dans les options ssh / telnet / port série, celles-ci nécessitant un émulateur de terminal distant; Quant à Webmin, il a aussi un émulateur de terminal (juste un moche).

Il n’existe qu’une seule façon d’utiliser la fonction d’un terminal sans émulateur de terminal: utiliser un terminal réel. J'avais l'habitude d'avoir une Televideo et un télétype (pas un TeleType, c'était un imitation), j'étais capable de modifier des fichiers avec (vi sur Televideo, éd sur le télétype (quel ennui à l'arrière)) faire des appels à un bbs local utilisant minicom et seyon de la televideo. Vous savez que la seule chose qui me manque, c’est le droit de me vanter, mais j’ai ramassé quelques terminaux de configuration pour imprimantes industrielles qui ont un affichage sur deux lignes et 20 colonnes, un clavier et une interface rs232 qui fonctionneront pour la réparation de configuration d’urgence une fois que je figurerai. où est mon manuel ed.

Hildred
la source
0

Semblable à la réponse de @AB , si vous avez un serveur Web en marche (je crois que Ubuntu est livré avec apache), vous pouvez exécuter un shell dans votre propre navigateur avec quelque chose comme phpshell .

Personnellement, je ne ferais que lancer Emacs et M-x shell RETURN.

utilisateur420930
la source
Ubuntu standard ne vient pas avec un serveur web.
Muru
2
@muru Il est livré avec un serveur Web dans le référentiel . Il suffit d'ouvrir un terminal et de taper sudo apt-get install apache. Oh, attendez.
M. Lister