Jak uzyskać dostęp do bash bez emulatora terminala?

37

Powiedzmy mam przypadkowo odinstalowane każdy emulator terminala w moim systemie: xterm, uxterm, gnome-terminal, guake, itd. Czy istnieje sposób można uzyskać dostęp bashbez emulatora terminala?

Jednym z możliwych sposobów jest stworzenie i uruchomienie skryptu powłoki, ale poza tym, czy mogę uzyskać interaktywną powłokę?

To jest czysto hipotetyczne, ale dziękuję za wszystkie odpowiedzi!

Huey
źródło
2
Istnieją programy, które mogą uruchamiać powłokę i zapewniać pewien poziom interaktywności poprzez (częściową) emulację terminala, ale same w sobie nie są emulatorami końcowymi . GVim to na przykład jeden.
muru
@muru, więc dlaczego jeszcze tego nie opublikowałeś? : D
Sergiy Kolodyazhnyy
@Serg z tego samego powodu, dla którego nie opublikowałem Twojego rozwiązania IDE lub konsoli gedit Python - żadne z nich nie jest instalowane domyślnie (choć myślę, że możemy włączyć konsolę gedit Python bez instalowania żadnych dodatkowych elementów).
muru
@muru Ah, rozumiem. Zawsze preferowane są rozwiązania niewymagające dodatkowej instalacji. Zdecydowanie
Sergiy Kolodyazhnyy

Odpowiedzi:

63

Tak, naciskając CtrlAltF21 . To daje dostęp do wirtualnej konsoli TTY2. I możesz ponownie zainstalować dowolny emulator terminala stamtąd sudo apt-get install terminal-name, gdzie, gnome-terminalna przykład , jest nazwa terminala .

Aby wrócić do GUI, najpierw wpisz, exitaby wylogować się z wirtualnej konsoli, a następnie naciśnij, CtrlAltF7aby przełączyć z powrotem do GUI. (Jeśli chcesz, aby sesja TTY była otwarta, pomiń exitczęść pisania )

Edycja: 17 czerwca 2015 r

Wymyśliłem inne rozwiązanie: jeśli masz IDE języka C, możesz skompilować następujący kod, a konsola IDE da ci teraz dostęp do bash

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

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

Uwaga: CtrlAltF2 nie jest jedyną opcją. Można użyć CtrlAltF1, CtrlAltF3, CtrlAltF4, CtrlAltF5i CtrlAltF6też, co daje tty1 Virtual Console, tty3, tty4, TTY5 lub TTY6 odpowiednio.

Sergiy Kolodyazhnyy
źródło
1
@ThomasW. Wiem, ale w niektórych systemach, takich jak Fedora tty1 nie ma, więc
przyzwyczaiłem się
18
@Huey jest to dostępne we wszystkich systemach, bezpieczne w razie awarii, chyba że ręcznie wyłączyłeś ttys, i zasadniczo taki jest domyślnie Linux / Unix - konsola tekstowa. GUI jest naprawdę opcjonalny w systemach * nix
Sergiy Kolodyazhnyy
8
@Huey Wirtualna konsola to przede wszystkim Linux. Cała reszta to funkcja, która została dodana później. Jest to po prostu zbyt przydatna funkcja, że ​​warto ją ponownie usunąć.
kasperd
10
Dawno, dawno temu, normalnie logowałbyś się za pomocą konsoli tekstowej, a następnie uruchamiałeś xinitlub startxfaktycznie wchodziłeś do X11, jeśli z jakiegoś powodu musiałeś uruchomić program GUI. :)
puszysty
1
Wymyśliłem inne rozwiązanie. Zobacz moją edycję, chłopaki
Sergiy Kolodyazhnyy
30

Jeśli masz uruchomiony serwer ssh, możesz połączyć się przez ssh z innego systemu.

ssh <your_remote_user_name>@<your_remote_host>

Jeśli instaluję system, najpierw instaluję i uruchamiam serwer SSH. Rodzaj ubezpieczenia na życie. =)

AB
źródło
24

Ctrl+ Alt+ ( F1Przez F4co najmniej może nawet F6) uruchomienie interfejsu terminala na konsolach wirtualnych. Tam, aby wrócić do GUI, użyj Ctrl+ Alt+ F7.

Jeśli to zrobisz, powinieneś być w stanie dostać się do terminala, do którego możesz się zalogować, a następnie uzyskać dostęp do terminala. Skrypty Bash będą jednak nadal działać, jeśli zostaną zautomatyzowane croni zostaną kliknięte, aby uruchomić (lub nie w terminalu). Terminal emulatory, które „dają ci” interaktywną powłokę, ale ostatecznie bash, zshitp, które są rzeczywiste pociski nadal istnieją i mogą być uruchamiane za pośrednictwem cron, skrypty, a nawet konsole wirtualne na klawiaturze kombinacje powyższych.

Pamiętaj jednak, że jeśli twoje skrypty potrzebują interaktywnego interfejsu, będziesz musiał użyć wirtualnych konsol lub ponownie zainstalować emulator.

Thomas Ward
źródło
2
F1 do F6 na moim komputerze.
Scimonster,
14

Jeśli jest to pytanie z testu, dla kompletności dodam normalne numery seryjne tty, w których można podłączyć do komputera za pomocą kabla szeregowego. potrzebujesz getty (lub dowolnego innego tty seryjnego słuchacza, który jest teraz nazywany) uprzednio skonfigurowanego, zanim stracisz terminal, i potrzebujesz drugiego komputera, aby porozmawiać z pierwszym, więc w sytuacji awaryjnej w domu tak się nie stanie .

Możesz także mieć konsolę webmin, która daje (w efekcie) dostęp do powłoki, ale nie jest to powłoka interaktywna technicznie. w tym momencie lepiej jest wykonywać proste polecenia, takie jak apt-get some-terminal-emulator.

Jeśli masz otwarte okno przeglądarki, teoretycznie możesz poszukać emulatora terminala Java, ale domyślam się, że będziesz musiał zainstalować wcześniej, a samo okno przeglądarki nie pozwoli ci uzyskać dostępu do podstawowego prawa pty, ale nie mam czasu na testowanie w żaden sposób.

więc powyższe pytania to „jakie są wszystkie możliwe sposoby”, niekoniecznie przydatne w prawdziwym życiu w domu, chociaż większość serwerowni prawdopodobnie miałaby dostęp szeregowy.

hmm, wiele innych narzędzi (emacs, vim itp.) pozwala na pewien poziom ostrzału. miejmy nadzieję, że masz otwarte xemaki

Rich Homolka
źródło
+1 za rekord w emacsie możesz użyć powłoki Mx ; w gvim jest ESC :shell; podczas gdy geany ma „widżet emulatora terminalu wirtualnego (VTE)” w zakładce okienka wiadomości, pod warunkiem że libvte.sojest dostępny
steeldriver
6

Chociaż wszystkie powyższe odpowiedzi są idealne, a ponieważ używasz Linuksa, masz wiele innych możliwych rozwiązań:

  • Wirtualne ttys opisane w odpowiedzi @serg, która jest idealnym rozwiązaniem
  • SSH zgodnie z opisem w rozwiązaniu @AB, co jest cudowną sztuczką, ale musisz wziąć pod uwagę, aby mieć uruchomiony serwer openssh.
  • Kolejne możliwe rozwiązania (nie jest to idealne, ale aby pokazać inne możliwości): LiveCD , tryb odzyskiwania
Maythux
źródło
3
Rozwiązanie dotyczące nadmiernej ilości.
Thomas Ward
@ThomasW. Czemu!? To tylko kolejna opcja? Dlaczego uważasz, że to rozwiązanie przesada ?!
Maythux,
2
@Maythux, choć technicznie poprawne, jest trochę przesadzone, gdy mamy już dostępne TTY i ssh. Rozwiązanie LiveCD jest bardziej odpowiednie, gdy zainstalowałeś coreutils (tak, zrobiłem to wcześniej przez przypadek) lub coś naprawdę się popsuło.
Sergiy Kolodyazhnyy
1
@Serg, ale nadal jest to sprawa, plus To tylko inne rozwiązanie, powiedziałem oprócz korzystania z tty, jak opisałeś, ma opcję liveCd, a także ma opcję trybu odzyskiwania ... Mówimy o Linuksie, wiele rozwiązań dla taki sam problem. Nie sądzę, że polecanie liveCd to problem!
Maythux,
1
@Maythux Jeśli są już w stanie zalogować się i mieć „wirtualne konsole” na TTY, to przesadą i dodatkową pracą jest po prostu uruchomienie systemu LiveUSB / LiveCD, aby to zrobić. Zwłaszcza, że ​​nie jest to przypadek „Nie mogę uzyskać dostępu do niczego”, więc nie ma potrzeby użycia wielkich dział (jak wspomniał Serg w komentarzach)
Thomas Ward
2

Będę tutaj pedantyczny:

Czy mogę uzyskać dostęp do bash bez emulatora terminala?

Upewnij się, że każdy skrypt, który zaczyna się od #!/bin/bash, zrobi to.

Czy istnieje sposób, aby uzyskać monit bash bez emulatora terminala?

Kontynuując mój motyw bycia pedantycznym, wybijmy dziury w niektórych innych odpowiedziach.

Załóżmy, że przypadkowo odinstalowałem każdy emulator terminala w moim systemie:

To jest naprawdę bardzo trudne do zrobienia, ponieważ

naciskając CtrlAltF2

przełączasz się na inną wirtualną konsolę, na której działa emulator terminalu wirtualnego jądra Linux, który jest bardzo trudny do usunięcia i wymaga ponownej kompilacji jądra z niestandardowymi opcjami. Więc pozwólmy wydmuchać dziury w opcjach ssh / telnet / port szeregowy, które wymagają zdalnego emulatora terminala; podobnie jak webmin, ma również emulator terminala (tylko kiepski).

Jest tylko jeden sposób użycia funkcji terminala bez emulatora terminala: użyj prawdziwego terminala. Kiedyś miałem Televideo i teletype (nie TeleType, to był podróbka) Byłem w stanie edytować pliki za pomocą obu (vi na Televideo, ed na teletype (co za ból z tyłu)) wywołuje połączenia lokalne kule za pomocą minicom i seyon z telewizji. Wiesz, że jedyne, za czym tęsknię, to prawo do przechwalania się, ale wybrałem kilka terminali konfiguracyjnych do drukarek przemysłowych, które mają dwuwierszowy wyświetlacz 20 kolumn, klawiaturę i interfejs rs232, który będzie działał do awaryjnej naprawy konfiguracji, gdy tylko się domyśliłem gdzie jest moja instrukcja ed.

Hildred
źródło
0

Podobnie do odpowiedzi @AB , jeśli masz uruchomiony serwer WWW (uważam, że standardowy Ubuntu pochodzi z apache), możesz uruchomić powłokę we własnej przeglądarce za pomocą czegoś takiego jak phpshell .

Osobiście odpaliłbym emacsa i M-x shell RETURN.

użytkownik420930
źródło
Standardowe Ubuntu nie jest dostarczane z serwerem WWW.
muru
2
@muru Pochodzi z serwerem WWW w repozytorium . Po prostu otwórz terminal i wpisz sudo apt-get install apache. Zaczekaj.
Pan Lister