Làm thế nào để truy cập bash mà không cần một trình giả lập thiết bị đầu cuối?


37

Nói rằng tôi đã vô tình gỡ bỏ cài đặt tất cả các mô phỏng thiết bị trên hệ thống của tôi: xterm, uxterm, gnome-terminal, guake, vv Có cách nào tôi có thể truy cập bashmà không có một mô phỏng thiết bị?

Một cách khả thi mà tôi có thể nghĩ đến là tạo và chạy một kịch bản shell, nhưng bên cạnh đó, tôi có thể có được một trình bao tương tác không?

Đây hoàn toàn là giả thuyết, nhưng cảm ơn vì tất cả các câu trả lời!


2
Có những chương trình có thể chạy shell và cung cấp một số mức độ tương tác, bằng cách (một phần) mô phỏng một thiết bị đầu cuối, nhưng không phải là trình giả lập erminal per se . GVim là một ví dụ.
muru

@muru vậy tại sao bạn chưa đăng nó như một câu trả lời? : D
Sergiy Kolodyazhnyy

@Serg vì lý do tương tự Tôi đã không đăng giải pháp IDE của bạn hoặc bảng điều khiển Python của gedit - không có cái nào trong số này được cài đặt theo mặc định (mặc dù tôi nghĩ rằng chúng tôi có thể kích hoạt bảng điều khiển Python gedit mà không cần cài đặt thêm gì).
muru

@muru ơi, tôi hiểu rồi. Các giải pháp không yêu cầu bất kỳ cài đặt bổ sung nào luôn được ưu tiên. Chắc chắn
Sergiy Kolodyazhnyy

Câu trả lời:


63

Có, bằng cách nhấn CtrlAltF21 . Điều đó cho phép bạn truy cập vào bảng điều khiển ảo TTY2. Và bạn có thể cài đặt lại bất kỳ trình giả lập thiết bị đầu cuối nào từ đó sudo apt-get install terminal-name, gnome-terminalví dụ như tên thiết bị đầu cuối .

Để quay lại GUI, trước tiên hãy gõ exitđể thoát khỏi bảng điều khiển ảo, sau đó nhấn CtrlAltF7để chuyển về GUI. (Trong trường hợp bạn muốn giữ phiên TTY mở, hãy bỏ qua phần gõ exit)

Chỉnh sửa: ngày 17 tháng 6 năm 2015

Tôi đã nghĩ ra một giải pháp khác: nếu bạn có bất kỳ IDE ngôn ngữ C nào, bạn có thể biên dịch mã sau đây và bảng điều khiển của IDE sẽ cung cấp cho bạn quyền truy cập vào bash

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

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

Lưu ý: CtrlAltF2 không phải là lựa chọn duy nhất. Bạn có thể sử dụng CtrlAltF1, CtrlAltF3, CtrlAltF4, CtrlAltF5CtrlAltF6cũng vậy, mà sẽ cung cấp cho bạn giao diện điều khiển tty1 ảo, TTY3, TTY4, TTY5 hoặc tty6 tương ứng.


1
@ThomasW. Tôi biết, nhưng trên một số hệ thống như Fedora tty1 không có ở đó, vì vậy tôi đã rất thích nói F2
Sergiy Kolodyazhnyy

18
@Huey điều này có thể truy cập được trên tất cả các hệ thống, failafe, trừ khi bạn đã tắt ttys theo cách thủ công và về cơ bản là cách linux / unix theo mặc định - bảng điều khiển văn bản. GUI thực sự là tùy chọn trên các hệ thống * nix
Sergiy Kolodyazhnyy

8
@Huey Bảng điều khiển ảo là thứ mà Linux được xây dựng để làm ngay từ đầu. Mọi thứ khác là một tính năng được thêm vào sau này. Và nó chỉ là một tính năng quá hữu ích mà nó sẽ có ý nghĩa để loại bỏ nó một lần nữa.
kasperd

10
Ngày xửa ngày xưa, bạn thường đăng nhập thông qua bảng điều khiển văn bản và sau đó chạy xinithoặc startxthực sự vào X11, nếu bạn cần chạy chương trình GUI vì một số lý do. :)
lông mịn

1
Tôi đã đưa ra một giải pháp khác. Xem bản chỉnh sửa của tôi, các bạn
Sergiy Kolodyazhnyy

30

Nếu bạn có một máy chủ ssh đang chạy, hơn bạn có thể kết nối qua ssh từ một hệ thống khác.

ssh <your_remote_user_name>@<your_remote_host>

Nếu tôi cài đặt một hệ thống, trước tiên tôi sẽ cài đặt và khởi động máy chủ SSH. Một loại bảo hiểm nhân thọ. =)


24

Ctrl+ Alt+ ( F1thông qua F4ít nhất, có thể lên đến F6) chạy giao diện đầu cuối trên bảng điều khiển ảo. Khi đó, để quay lại GUI, sử dụng Ctrl+ Alt+ F7.

Nếu bạn làm bất cứ điều gì trong số đó, bạn sẽ có thể đến một thiết bị đầu cuối mà bạn có thể đăng nhập và sau đó truy cập vào thiết bị đầu cuối. Tuy nhiên, các tập lệnh Bash sẽ tiếp tục chạy, nếu chúng là các tập lệnh tự động được thả vào cronvà nhấp hoặc nhấp đúp để chạy (nhưng không phải trong thiết bị đầu cuối). Các trình giả lập thiết bị đầu cuối 'cung cấp cho bạn một trình bao tương tác, nhưng cuối cùng bash, zshv.v., đó là các trình bao thực sự vẫn tồn tại và có thể chạy qua cron, các tập lệnh và thậm chí các bảng điều khiển ảo trên các tổ hợp bàn phím ở trên.

Lưu ý rằng nếu tập lệnh của bạn cần giao diện tương tác, bạn sẽ phải sử dụng bảng điều khiển ảo hoặc cài đặt lại trình giả lập.


2
F1 đến F6 trên máy tính của tôi.
Scimonster

14

Nếu đây là một câu hỏi từ một bài kiểm tra, để hoàn thành, tôi sẽ thêm các tty nối tiếp bình thường, nơi bạn kết nối với máy tính của mình bằng cáp nối tiếp. bạn cần một getty (hoặc bất cứ người nghe nối tiếp nào được gọi bây giờ) được cấu hình trước đó trước khi bạn mất thiết bị đầu cuối của mình và bạn cần một máy tính thứ hai để nói chuyện với người đầu tiên, vì vậy trường hợp khẩn cấp tại nhà không có khả năng xảy ra .

Bạn cũng có thể có một số bảng điều khiển webmin cung cấp cho bạn quyền truy cập shell (thực tế), mặc dù không phải là vỏ tương tác về mặt kỹ thuật. tại thời điểm đó, bạn nên thực hiện các lệnh dễ dàng, như apt-get some-terminal-giả lập.

Nếu bạn mở cửa sổ trình duyệt, về lý thuyết bạn có thể tìm kiếm trình giả lập thiết bị đầu cuối java nhưng tôi đoán là bạn phải cài đặt trước và chỉ cần có cửa sổ trình duyệt sẽ không cho phép bạn truy cập vào quyền của pty bên dưới, nhưng tôi không có thời gian để kiểm tra

Vì vậy, trên đây là những câu hỏi "tất cả các cách có thể" là gì, không nhất thiết phải hữu ích trong cuộc sống thực tại nhà, mặc dù hầu hết các phòng máy chủ có thể có quyền truy cập nối tiếp.

hmm, rất nhiều công cụ khác (emacs, vim, v.v.) cho phép một số mức độ tách ra. hãy hy vọng bạn mở xem


+1 cho bản ghi trong emacs bạn có thể sử dụng Mx shell ; trong gvim có ESC :shell; trong khi geany có "tiện ích giả lập thiết bị đầu cuối ảo (VTE)" trong một tab của khung thông báo với điều kiện libvte.solà có sẵn
Steeldo

6

Mặc dù tất cả các câu trả lời ở trên là hoàn hảo và vì bạn đang sử dụng Linux, nên bạn có nhiều giải pháp khả thi khác:

  • Ttys ảo như được mô tả trong câu trả lời @serg là giải pháp hoàn hảo
  • SSH như được mô tả trong giải pháp @AB là một thủ thuật đáng yêu, nhưng bạn phải cân nhắc để máy chủ openssh chạy.
  • Một giải pháp khả thi khác (nó không hoàn hảo nhưng chỉ để hiển thị các khả năng khác): LiveCD , Chế độ khôi phục

3
Giải pháp quá mức.
Thomas Ward

@ThomasW. Tại sao!? Nó chỉ là một lựa chọn khác? Tại sao bạn coi nó là giải pháp quá mức?!
Maythux

2
@Maythux trong khi về mặt kỹ thuật, thực sự hơi quá mức, khi chúng tôi đã có sẵn TTYs và ssh. Giải pháp LiveCD được áp dụng nhiều hơn khi bạn đã cài đặt coreutils (vâng, tôi đã làm điều đó trước đây một cách tình cờ) hoặc một cái gì đó thực sự bị rối tung.
Sergiy Kolodyazhnyy

1
@Serg nhưng vẫn là một trường hợp, cộng với Đó chỉ là một giải pháp khác, tôi đã nói ngoài việc sử dụng tty như bạn mô tả, anh ta có một tùy chọn liveCd, anh ta cũng có tùy chọn về chế độ phục hồi ... Chúng tôi đang nói về linux, nhiều giải pháp cho cùng một vấn đề Tôi không nghĩ việc giới thiệu liveCd là một vấn đề!
Maythux

1
@Maythux Nếu họ đã có thể đăng nhập và có 'bảng điều khiển ảo' trên TTYs, thì quá mức cần thiết và phải làm thêm để khởi động vào LiveUSB / LiveCD để làm điều đó. Đặc biệt vì đây không phải là trường hợp "Tôi không thể truy cập bất cứ thứ gì" nên không cần súng lớn (như Serg đã ám chỉ trong các bình luận)
Thomas Ward

2

Vì vậy, tôi sẽ trở thành nhà mô phạm ở đây:

Có cách nào tôi có thể truy cập bash mà không cần trình giả lập thiết bị đầu cuối không?

Chắc chắn bất kỳ kịch bản bắt đầu với #!/bin/bashsẽ làm điều đó.

Có cách nào để tôi có thể nhận được dấu nhắc bash mà không cần trình giả lập thiết bị đầu cuối không?

Tiếp tục với chủ đề của tôi là mang tính mô phạm, hãy chọc một số lỗ hổng trong một số câu trả lời khác.

Giả sử tôi đã vô tình gỡ cài đặt mọi trình giả lập thiết bị đầu cuối trên hệ thống của mình:

Điều này thực sự rất khó để thực hiện bởi vì

bằng cách nhấn CtrlAltF2

bạn chuyển sang một bàn điều khiển ảo khác có trình giả lập thiết bị đầu cuối ảo linux kernel chạy trên nó, rất khó để loại bỏ và yêu cầu biên dịch lại kernel với các tùy chọn không chuẩn. Vì vậy, cho phép thổi các lỗ hổng trong các tùy chọn ssh / telnet / serial-port, những yêu cầu một trình giả lập thiết bị đầu cuối từ xa; như đối với webmin, nó cũng có một trình giả lập thiết bị đầu cuối (chỉ là một trình tệ hại).

Chỉ có một cách để sử dụng chức năng của thiết bị đầu cuối mà không có trình giả lập thiết bị đầu cuối: sử dụng thiết bị đầu cuối thực. Tôi đã từng sử dụng Televideo và teletype (không phải TeleType, đây là một bản nhái) Tôi có thể chỉnh sửa các tệp bằng cả hai (vi trên Televideo, ed trên teletype (thật là đau ở phía sau) một bbs địa phương sử dụng minicom và seyon từ televideo. Bạn biết điều duy nhất tôi nhớ về chúng là các quyền khoe khoang, nhưng tôi đã chọn một vài thiết bị đầu cuối cấu hình cho máy in công nghiệp có màn hình hai dòng 20, bàn phím và giao diện rs232 sẽ hoạt động để sửa chữa cấu hình khẩn cấp khi tôi hình dung ra nơi hướng dẫn ed của tôi là.


0

Tương tự như câu trả lời của @AB , nếu bạn có một máy chủ web đang chạy (tôi tin rằng Ubuntu đi kèm với apache), bạn có thể chạy một trình bao trong trình duyệt của riêng bạn với một cái gì đó như phpshell .

Cá nhân, tôi chỉ cần bắn emacs và M-x shell RETURN.


Ubuntu tiêu chuẩn không đi kèm với một máy chủ web.
muru

2
@muru Nó đi kèm với một máy chủ web trong kho lưu trữ . Chỉ cần mở một thiết bị đầu cuối và gõ sudo apt-get install apache. Oh, đợi đã.
Ông Lister
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.