Як отримати доступ до bash без емулятора терміналу?


37

Скажімо , я випадково видалив кожен емулятор терміналу на моїй системі: xterm, uxterm, gnome-terminal, guakeі т.д. Чи є спосіб , я можу отримати доступ bashбез емулятора терміналу?

Один із можливих способів, про який я можу подумати, - це створити та запустити скрипт оболонки, але в стороні, чи можу я отримати інтерактивну оболонку?

Це суто гіпотетично, але дякую за всі відповіді!


2
Є програми , які можуть запустити оболонку, і забезпечують певний рівень інтерактивності, в силі (частково) емулює термінал, але не є erminal емуляторів в собі . GVim - це один, наприклад.
муру

@muru, чому ви ще не опублікували це як відповідь? : D
Сергій Колодяжний

@Serg з тієї ж причини, що я не опублікував ваше рішення IDE або консоль Python gedit - жодне з них не встановлено за замовчуванням (хоча, я думаю, ми можемо включити консоль gedit Python, не встановлюючи нічого додаткового).
муру

@muru Ах, бачу. Завжди пропонуються рішення, які не потребують додаткової установки. Однозначно
Сергій Колодяжний

Відповіді:


63

Так, натиснувши кнопку CtrlAltF21 . Це дає вам доступ до віртуальної консолі TTY2. І ви можете перевстановити будь-який емулятор терміналу звідти sudo apt-get install terminal-name, де, gnome-terminalнаприклад, ім'я терміналу .

Щоб повернутися до GUI, спочатку введіть exitдля виходу з віртуальної консолі, а потім натисніть, CtrlAltF7щоб повернутися до GUI. (Якщо ви хочете тримати сеанс TTY відкритим, пропустіть exitчастину набору тексту )

Редагувати: 17,2015 червня

Я придумав інше рішення: якщо у вас є будь-який ID мови 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
@Huey, це доступно у всіх системах, якщо ви не ввімкнули безпеку, якщо ви не ввімкнули ttys вручну, і це, як правило, Linux / Unix за замовчуванням - текстова консоль. Графічний інтерфейс дійсно необов’язковий для * nix систем
Сергій Колодяжний,

8
@Huey Віртуальна консоль - це те, що Linux був побудований в першу чергу. Все інше - це функція, яка була додана пізніше. І це просто надто корисна функція, що було б сенс її знову видалити.
kasperd

10
Колись ви зазвичай увійшли через текстову консоль, а потім запустіть xinitабо startxфактично потрапите в X11, якщо вам потрібно було запустити програму GUI з якоїсь причини. :)
пухнастий

1
Я запропонував інше рішення. Дивіться мою редакцію, хлопці
Сергій Колодяжний,

30

Якщо у вас працює ssh-сервер, ви можете підключитися через ssh з іншої системи.

ssh <your_remote_user_name>@<your_remote_host>

Якщо я встановлюю систему, то спочатку інсталюю і запускаю SSH-сервер. Різновид страхування життя. =)


24

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

Якщо ви зробите будь-яке з них, ви повинні мати можливість дістатися до терміналу, на який ви можете увійти, а потім отримати доступ до терміналу. Однак сценарії Bash продовжуватимуться виконуватись, якщо вони автоматизовані сценарії, скинуті в них cronі такі або двічі натиснуті для запуску (але не в терміналі). Емулятори терміналів, які "дають вам" інтерактивну оболонку, але, в кінцевому рахунку bash, zshі т. Д., Які є фактичними оболонками, все ще існують і можуть працювати як через cron, скрипти, так і навіть віртуальні консолі на комбінаціях клавіатури вище.

Зауважте, що якщо вашим сценаріям потрібен інтерактивний інтерфейс, вам доведеться скористатися віртуальними консолями або встановити емулятор знову.


2
F1 - F6 на моєму комп’ютері.
Scimonster

14

Якщо це питання з тесту, для повноти я додав би звичайні послідовні програми, де ви підключитесь до свого комп'ютера послідовним кабелем. вам знадобиться getty (або як би зараз називались Tty послідовних слухачів), попередньо налаштований перед тим, як ви втратили термінал, і вам знадобиться другий комп'ютер, щоб поговорити з першим, так що в домашніх умовах цього, швидше за все, не станеться .

Ви також можете мати консоль webmin, яка надає (фактично) доступ до оболонки, хоча це не інтерактивна оболонка. в цей момент вам краще робити легкі команди, наприклад, apt-get some-terminal-emulator.

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

Отже, наведені вище питання "які всі можливі шляхи", не обов'язково корисні в реальному житті для дому, хоча більшість серверних кімнат, ймовірно, мали б послідовний доступ.

Хм, багато інших інструментів (emacs, vim тощо) дозволяють певний рівень обстрілів. дозволяє сподіватися, що у вас відкриті ксемаки


+1 для запису в emacs ви можете використовувати оболонку Mx ; у гвімі є ESC :shell; в той час як geany має "віджет емулятора віртуального терміналу (VTE)" на вкладці панелі повідомлень за умови, що libvte.soце доступно
steeldriver

6

Хоча всі відповіді вище є ідеальними, а оскільки ви використовуєте Linux, то у вас є багато інших можливих рішень:

  • Віртуальний ttys, як описано у відповіді @serg, яка є ідеальним рішенням
  • SSH, як описано в рішенні @AB, що є прекрасним трюком, але ви повинні врахувати, що запущений сервер opensh.
  • Ще одне можливе рішення (це не ідеальне, а просто показати інші можливості): LiveCD , режим відновлення

3
Рішення для надмірного вбивства.
Thomas Ward

@ThomasW. Чому !? Це просто інший варіант? Чому ви вважали це надмірним рішенням ?!
Maythux

2
@Maythux, хоча технічно правильно, це справді трохи надмірності, коли у нас вже є TTY та ssh. Рішення LiveCD є більш застосовним, коли ви встановили coreutils (так, я це робив раніше випадково) або щось справді заплуталося.
Сергій Колодяжний

1
@Serg, але це все-таки справа, плюс це просто інше рішення, я сказав, що крім використання tty, як ви описали, у нього є опція liveCd, також у нього є режим відновлення ... Ми говоримо про Linux, багато рішень для та ж проблема. Я не думаю, що рекомендувати liveCd не є проблемою!
Maythux

1
@Maythux Якщо вони вже можуть увійти та матимуть "віртуальні консолі" на TTY, це зайва робота та додаткова робота, щоб просто завантажитися в LiveUSB / LiveCD, щоб це зробити. Тим більше, що це не випадок "Я не можу отримати доступ до будь-чого", тому немає необхідності у великих гарматах (як Серг нагадав у коментарях)
Thomas Ward

2

Тому я буду тут педантичним:

Чи є спосіб я отримати доступ до bash без емулятора терміналу?

Звичайно, будь-який сценарій, який починається з #!/bin/bashцього, зробить це.

Чи є спосіб я отримати підказку bash без емулятора терміналу?

Продовжуючи мою тему «педантичності», давайте просунути деякі дірки в інших відповідях.

Скажіть, я випадково видалив кожен емулятор терміналу в моїй системі:

Це насправді дуже важко зняти, оскільки

натисканням CtrlAltF2

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

Існує лише один спосіб використання функції терміналу без емулятора терміналу: використовувати справжній термінал. У мене раніше було телевідео та телетайп (не TeleType, це був перелом). Я зміг редагувати файли з обома (vi на Televideo, ed на телетайпі (що болить ззаду)), щоб телефонувати на місцевий bbs використовуючи minicom та seyon з телевідео. Ви знаєте, єдине, що мені в них не вистачає, - це вихваляння прав, але я взяв пару терміналів конфігурації для промислових принтерів, які мають дворядковий 20-стовпецький дисплей, клавіатуру та інтерфейс rs232, які працюватимуть для аварійного відновлення конфігурації, коли я зрозумію там, де мій посібник для редагування.


0

Подібно до відповіді @AB , якщо у вас працює веб-сервер (я вважаю, що Станар Ubuntu поставляється з apache), ви можете запустити оболонку у власному браузері чимось на зразок phpshell .

Особисто я б просто розпалив emacs і M-x shell RETURN.


Стандартний Ubuntu не постачається з веб-сервером.
муру

2
@muru Поставляється з веб-сервером у сховищі . Просто відкрийте термінал і наберіть sudo apt-get install apache. Чекай.
Містер Лістер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.