Как получить доступ к bash без эмулятора терминала?

37

Скажем , я случайно удалил каждый эмулятор терминала на моей системе: xterm, uxterm, gnome-terminal, guakeи т.д. Есть ли способ , я могу получить доступ bashбез эмулятора терминала?

Один из возможных способов, которым я могу придумать, - это создать и запустить скрипт оболочки, но кроме этого, могу ли я получить интерактивную оболочку?

Это чисто гипотетически, но спасибо за все ответы!

Huey
источник
2
Есть программы , которые могут запустить оболочку, и обеспечивают некоторый уровень интерактивности, в силе (частично) эмулирует терминал, но не являются erminal эмуляторов в себе . GVim один, например.
Муру
@muru, так почему ты еще не опубликовал это как ответ? : D
Сергей Колодяжный
@Serg по той же причине, по которой я не опубликовал ваше решение IDE или консоль Python от gedit - по умолчанию они не установлены (хотя я думаю, что мы можем включить консоль Python от gedit, не устанавливая ничего дополнительного).
Муру
@ Муру А, понятно. Решения, которые не требуют дополнительной установки, всегда предпочтительнее. Однозначно
Сергей Колодяжный

Ответы:

63

Да, нажав CtrlAltF21 . Это дает вам доступ к виртуальной консоли TTY2. И оттуда вы можете переустановить любой эмулятор sudo apt-get install terminal-nameтерминала, gnome-terminalнапример, с именем терминала .

Чтобы вернуться к графическому интерфейсу, сначала введите, exitчтобы выйти из виртуальной консоли, затем нажмите, CtrlAltF7чтобы переключиться обратно в графический интерфейс. (Если вы хотите оставить сеанс TTY открытым, пропустите exitчасть ввода )

Изменить: июнь 17,2015

Я придумал другое решение: если у вас есть IDE на языке C, вы можете скомпилировать следующий код, и консоль IDE теперь даст вам доступ к bash.

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

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

Примечание: CtrlAltF2 это не единственный вариант. Вы можете использовать CtrlAltF1, CtrlAltF3,CtrlAltF4 , CtrlAltF5и CtrlAltF6тоже, что даст вам виртуальную консоль tty1, tty3, tty4, tty5 или tty6 соответственно.

Сергей Колодяжный
источник
1
@ThomasW. Я знаю, но в некоторых системах, таких как Fedora, tty1 не существует, поэтому я привык говорить F2
Сергей Колодяжный
18
@ Да, это доступно во всех системах, отказоустойчиво, если вы не отключили ttys вручную, и в основном это то, чем по умолчанию является linux / unix - текстовая консоль. Графический интерфейс действительно необязателен для * nix систем
Сергей Колодяжный
8
@Huey Виртуальная консоль - это то, для чего изначально была создана Linux. Все остальное является функцией, которая была добавлена ​​позже. И это просто слишком полезная функция, поэтому имеет смысл удалить ее снова.
Касперд
10
Когда-то вы обычно входили в систему через текстовую консоль, а затем запускали xinitили startxфактически входили в X11, если вам по какой-то причине нужно было запустить программу с графическим интерфейсом. :)
пушистый
1
Я нашел другое решение. Смотрите мои правки, ребята
Сергей Колодяжный
30

Если у вас запущен ssh-сервер, вы можете подключиться через ssh из другой системы.

ssh <your_remote_user_name>@<your_remote_host>

Если я устанавливаю систему, то сначала я устанавливаю и запускаю сервер SSH. Вид страхования жизни. знак равно

AB
источник
24

Ctrl+ Alt+ ( F1по F4крайней мере, может быть, до F6) запустить интерфейс терминала на виртуальных консолях. Оказавшись там, чтобы вернуться в GUI, используйте Ctrl+ Alt+ F7.

Если вы сделаете что-либо из этого, вы сможете получить доступ к терминалу, в который вы можете войти, а затем получить доступ к терминалу. Сценарии Bash, однако, продолжат работать, если они были автоматически загружены cronи дважды щелкнули для запуска (но не в терминале). Эмуляторы терминала, которые «дают вам» интерактивную оболочку, но в конечном итоге bash,zsh и т. Д., Которые являются фактическими оболочками, все еще существуют и могут запускаться с помощью cronсценариев и даже виртуальных консолей на комбинациях клавиатуры выше.

Обратите внимание, что если вашим сценариям требуется интерактивный интерфейс, вам придется использовать виртуальные консоли или установить эмулятор заново.

Томас Уорд
источник
2
F1 через F6 на моем компьютере.
Скимонстер
14

Если это вопрос из теста, для полноты я бы добавил обычные последовательные терминалы, где бы вы подключались к компьютеру с помощью последовательного кабеля. вам понадобится getty (или как-то еще слушатели tty serial), предварительно настроенные до того, как вы потеряли свой терминал, и вам понадобится второй компьютер для связи с первым, так что в случае чрезвычайной ситуации это вряд ли произойдет ,

У вас также может быть некоторая консоль webmin, которая дает вам (по сути) доступ к оболочке, но не технически интерактивная оболочка. в этот момент вам лучше выполнять простые команды, такие как apt-get some-terminal-emulator.

Если у вас открыто окно браузера, вы можете теоретически искать эмулятор терминала java, но я предполагаю, что вам придется установить его раньше времени, и просто наличие окна браузера не позволит вам получить доступ к основному pty, но у меня нет времени, чтобы проверить в любом случае.

Итак, приведенные выше вопросы «каковы все возможные пути», не обязательно полезны в реальной жизни для дома, хотя большинство серверных комнат, вероятно, будет иметь последовательный доступ.

хм, многие другие инструменты (emacs, vim и т. д.) позволяют на некотором уровне обстреливать. будем надеяться, что у вас открыт xemacs

Рич Гомолка
источник
+1 для записи в emacs вы можете использовать Mx shell ; в гвим есть ESC :shell; в то время как у geany есть «виджет эмулятора виртуального терминала (VTE)» на вкладке панели сообщений при условии, что libvte.soон доступен
steeldriver
6

Хотя все ответы выше идеальны, и, поскольку вы используете Linux, у вас есть много других возможных решений:

  • Виртуальные ttys как описано в ответе @serg, который является идеальным решением
  • SSH, как описано в @AB-решении, это приятный трюк, но вы должны принять во внимание, что сервер openssh работает.
  • Другие возможные решения (это не идеальное решение, а просто демонстрация других возможностей): LiveCD , Recovery Mode
Maythux
источник
3
Избыточное решение.
Томас Уорд
@ThomasW. Зачем!? Это просто другой вариант? Почему вы сочли это излишним решением ?!
Maythux
2
@Maythux, хотя технически правильно, это действительно немного излишне, когда у нас уже есть TTYs и ssh. Решение LiveCD более применимо, когда вы установили coreutils (да, я делал это раньше случайно) или что-то действительно испортилось.
Сергей Колодяжный
1
@ Serg, но это все еще случай, плюс это еще одно решение, я сказал, что помимо использования tty, как вы описали, у него есть опция liveCd, также у него есть опция режима восстановления ... Мы говорим о linux, много решений для та же проблема. Я не думаю, что рекомендовать liveCd - это проблема!
Maythux
1
@Maythux Если они уже могут войти в систему и иметь «виртуальные консоли» на TTY, то это просто излишняя работа и дополнительная загрузка для загрузки в LiveUSB / LiveCD. Тем более, что это не случай «Я не могу получить доступ к чему-либо», поэтому нет нужды в больших пушках (как упомянул Серж в комментариях)
Томас Уорд
2

Так что я собираюсь быть педантичным здесь:

Есть ли способ получить доступ к bash без эмулятора терминала?

Конечно, любой сценарий, который начинается с #!/bin/bash, сделает это.

Есть ли способ получить приглашение bash без эмулятора терминала?

Продолжая тему «педантичность», давайте прорежем некоторые дыры в некоторых других ответах.

Скажем, я случайно удалил все эмуляторы терминала в моей системе:

Это на самом деле очень трудно осуществить, потому что

нажав CtrlAltF2

вы переключаетесь на другую виртуальную консоль, на которой запущен эмулятор виртуального терминала ядра Linux, который очень трудно удалить и требует перекомпиляции ядра с нестандартными параметрами. Итак, давайте сделаем пробоины в опциях ssh / telnet / serial-port, для которых требуется эмулятор удаленного терминала; Что касается webmin, у него также есть эмулятор терминала (просто паршивый).

Есть только один способ использовать функцию терминала без эмулятора терминала: использовать реальный терминал. Я имел обыкновение иметь Телевидение и телетайп (не TeleType, это был подделкой), я был в состоянии редактировать файлы с обоими (vi на Televideo, ed на телетайпе (какая боль в тылу)), обращаясь к местный BBS с использованием Minicom и Seyon из телевидения. Вы знаете, единственное, что мне не хватает в них - это права на хвастовство, но я подобрал пару терминалов конфигурации для промышленных принтеров, которые имеют двухстрочный 20-колоночный дисплей, клавиатуру и интерфейс rs232, которые будут работать для аварийного восстановления конфигурации, как только я пойму где мое руководство по редактированию.

hildred
источник
0

Как и в ответе @AB , если у вас запущен веб-сервер (я полагаю, стандарт Ubuntu поставляется с Apache), вы можете запустить оболочку в своем браузере с помощью чего-то вроде phpshell .

Лично я бы просто запустил emacs и M-x shell RETURN.

user420930
источник
Стандартная Ubuntu не поставляется с веб-сервером.
Муру
2
@muru Поставляется с веб-сервером в хранилище . Просто откройте терминал и введите sudo apt-get install apache. Ой, подожди.
Мистер Листер