วิธีการเข้าถึง bash โดยไม่มี terminal emulator?


37

บอกฉันได้ถอนการติดตั้งโดยไม่ได้ตั้งใจทุกจำลอง terminal ในระบบของฉัน: xterm, uxterm, gnome-terminal, guakeฯลฯ มีวิธีที่ฉันสามารถเข้าถึงbashได้โดยไม่ต้องจำลอง terminal?

วิธีหนึ่งที่เป็นไปได้ที่ฉันจะนึกถึงคือการสร้างและเรียกใช้เชลล์สคริปต์ แต่นอกเหนือจากนั้นฉันจะได้รับเชลล์แบบโต้ตอบได้หรือไม่

นี่คือสมมุติฐานอย่างหมดจด แต่ขอบคุณสำหรับคำตอบทั้งหมด!


2
มีโปรแกรมที่สามารถใช้เปลือกและให้ระดับของการติดต่อสื่อสารบางอย่างโดย (บางส่วน) การลอกเลียนแบบขั้ว แต่ไม่ได้เลียนแบบ erminal ต่อ se ยกตัวอย่างเช่น GVim
muru

@muru ดังนั้นทำไมคุณยังไม่ได้โพสต์ว่าเป็นคำตอบหรือยัง : D
Sergiy Kolodyazhnyy

@Serg ด้วยเหตุผลเดียวกับที่ฉันไม่ได้โพสต์แก้ปัญหา IDE ของคุณหรือคอนโซล Python ของ gedit - ไม่มีสิ่งเหล่านี้ติดตั้งตามค่าเริ่มต้น (แม้ว่าฉันคิดว่าเราสามารถเปิดใช้งาน gedit Python console โดยไม่ต้องติดตั้งอะไรเพิ่มเติม)
muru

@muru Ah ฉันเห็น โซลูชั่นที่ไม่ต้องการการติดตั้งเพิ่มเติมจะได้รับการแจ้งล่วงหน้าเสมอ แน่นอน
Sergiy Kolodyazhnyy

คำตอบ:


63

ใช่โดยการกด1CtrlAltF2 ที่ให้คุณเข้าถึงคอนโซลเสมือน TTY2 และคุณสามารถติดตั้งเทอร์มินัลอีมูเลเตอร์ใดก็ได้จากที่นั่นด้วยsudo apt-get install terminal-nameโดยที่ชื่อเทอร์มินัลเป็นgnome-terminalตัวอย่าง

หากต้องการกลับไปที่ GUI ให้พิมพ์ครั้งแรกexitเพื่อออกจากระบบคอนโซลเสมือนจากนั้นกดCtrlAltF7เพื่อสลับกลับไปที่ GUI (ในกรณีที่คุณต้องการเปิดเซสชัน TTY ไว้ให้ข้ามexitส่วนการพิมพ์ )

แก้ไข: 17 มิถุนายน 2558

ฉันคิดวิธีอื่น: ถ้าคุณมีภาษา C IDE คุณสามารถรวบรวมรหัสต่อไปนี้และคอนโซลของ IDE จะให้คุณเข้าถึงทุบตี

#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
Sergiy Kolodyazhnyy

18
@Huey สิ่งนี้สามารถเข้าถึงได้ในทุกระบบล้มเหลวไม่ปลอดภัยเว้นแต่คุณจะปิดการใช้งาน ttys ด้วยตนเองและโดยทั่วไปแล้ววิธีการที่ linux / unix เป็นค่าเริ่มต้น - คอนโซลข้อความ GUI เป็นตัวเลือกสำหรับระบบ * nix
Sergiy Kolodyazhnyy

8
@Huey คอนโซลเสมือนเป็นสิ่งที่ลีนุกซ์สร้างขึ้นตั้งแต่แรก ทุกอย่างเป็นคุณสมบัติที่เพิ่มเข้ามาในภายหลัง และมันก็เป็นเพียงฟีเจอร์ที่มีประโยชน์มากเกินไปที่จะลบมันอีกครั้ง
kasperd

10
กาลครั้งหนึ่งคุณจะต้องลงชื่อเข้าใช้ผ่านทางคอนโซลข้อความแล้วเรียกใช้xinitหรือstartxเข้าสู่ X11 จริง ๆ หากคุณต้องการเรียกใช้โปรแกรม GUI ด้วยเหตุผลบางประการ :)
ปุย

1
ฉันได้คิดวิธีอื่นแล้ว ดูการแก้ไขของฉันพวก
Sergiy Kolodyazhnyy

30

หากคุณมีเซิร์ฟเวอร์ ssh ทำงานอยู่คุณสามารถเชื่อมต่อผ่าน ssh จากระบบอื่นได้

ssh <your_remote_user_name>@<your_remote_host>

ถ้าฉันติดตั้งระบบฉันจะติดตั้งและเริ่มต้นเซิร์ฟเวอร์ SSH ก่อน ประกันชีวิตประเภทหนึ่ง =)


24

Ctrl+ Alt+ ( F1ผ่านF4อย่างน้อยอาจจะถึงF6) เรียกใช้เทอร์มินัลอินเตอร์เฟสบนคอนโซลเสมือน เมื่อมีการที่จะได้รับกลับไป GUI การใช้Ctrl+ +AltF7

หากคุณทำสิ่งใดสิ่งหนึ่งคุณควรจะสามารถไปที่เทอร์มินัลที่คุณสามารถลงชื่อเข้าใช้แล้วเข้าถึงเทอร์มินัล อย่างไรก็ตามสคริปต์ทุบตีจะยังคงทำงานต่อไปหากสคริปต์เหล่านั้นถูกปล่อยเข้าสู่สคริปต์อัตโนมัติcronและหรือคลิกสองครั้งเพื่อเรียกใช้ (แต่ไม่ใช่ในเทอร์มินัล) เลียนแบบขั้วซึ่ง 'ให้' เปลือกโต้ตอบ แต่ในท้ายที่สุดbash, zshฯลฯ ซึ่งเป็นหอยที่แท้จริงยังคงอยู่และสามารถทำงานได้ทั้งผ่านcronสคริปต์และแม้แต่คอนโซลเสมือนบนแป้นพิมพ์คอมโบข้างต้น

โปรดทราบว่าหากสคริปต์ของคุณต้องการอินเทอร์เฟซแบบโต้ตอบคุณจะต้องใช้คอนโซลเสมือนหรือติดตั้งโปรแกรมจำลองอีกครั้ง


2
F1 ถึง F6 บนคอมพิวเตอร์ของฉัน
Scimonster

14

หากนี่คือคำถามจากการทดสอบเพื่อความสมบูรณ์ฉันจะเพิ่มอนุกรม tty ปกติที่คุณต้องการเชื่อมต่อกับคอมพิวเตอร์ของคุณด้วยสายเคเบิลอนุกรม คุณต้องมี getty (หรืออะไรก็ตามที่เรียกว่า serial ฟัง tty ตอนนี้) ก่อนหน้านี้ที่กำหนดค่าไว้ก่อนที่คุณจะเสียเครื่องเทอร์มินัลและคุณต้องการคอมพิวเตอร์เครื่องที่สองเพื่อพูดคุยกับเครื่องแรกดังนั้นในกรณีฉุกเฉินที่บ้าน .

คุณอาจมี webmin console บางตัวที่ให้การเข้าถึงเชลล์แก่คุณ (มีผล) แม้ว่าจะไม่ใช่เชลล์แบบโต้ตอบทางเทคโนโลยี ณ จุดนี้คุณจะดีกว่าทำคำสั่งง่าย ๆ เช่น apt-get-terminal-emulator

หากคุณเปิดหน้าต่างเบราว์เซอร์คุณสามารถค้นหาจาวาเทอร์มินัลอีมูเลเตอร์ในทางทฤษฎีได้แต่ฉันคิดว่าคุณต้องติดตั้งล่วงหน้าและการมีหน้าต่างเบราว์เซอร์จะไม่อนุญาตให้คุณเข้าถึง pty ที่ถูกต้อง แต่ฉันไม่มีเวลาที่จะทดสอบทั้งสองวิธี

ดังนั้นคำถามข้างต้นคือ "สิ่งที่เป็นไปได้ทั้งหมด" ไม่จำเป็นต้องมีประโยชน์ในชีวิตจริงสำหรับบ้านแม้ว่าห้องเซิร์ฟเวอร์ส่วนใหญ่อาจมีการเข้าถึงแบบอนุกรม

อืมเครื่องมืออื่น ๆ จำนวนมาก (emacs, vim และอื่น ๆ ) ช่วยให้การปอกเปลือกออกในระดับหนึ่ง หวังว่าคุณจะเปิด xemacs


+1 สำหรับบันทึกใน emacs คุณสามารถใช้Mx shell ; ใน gvim มีESC :shell; ในขณะที่ geany มี "virtual terminal emulator widget (VTE)" ในแท็บของบานหน้าต่างข้อความที่libvte.soพร้อมใช้งาน
steeldriver

6

แม้ว่าคำตอบทั้งหมดข้างต้นนั้นสมบูรณ์แบบและเมื่อคุณใช้ Linux คุณก็มีวิธีแก้ปัญหาที่เป็นไปได้อื่น ๆ อีกมากมาย:

  • ttys เสมือนจริงตามที่อธิบายไว้ในคำตอบ @serg ซึ่งเป็นโซลูชันที่สมบูรณ์แบบ
  • SSH ตามที่อธิบายไว้ใน @AB solution ซึ่งเป็นเคล็ดลับที่น่ารัก แต่คุณต้องคำนึงถึงว่าเซิร์ฟเวอร์ openssh ทำงานอยู่
  • โซลูชันที่เป็นไปได้อื่น (ไม่สมบูรณ์แบบ แต่เพียงเพื่อแสดงความเป็นไปได้อื่น ๆ ): LiveCD , โหมดการกู้คืน

3
แก้ปัญหายาเกินขนาด
โธมัสวอร์ด

@ThomasW ทำไม!? มันเป็นแค่อีกทางเลือกหนึ่ง? ทำไมคุณถึงคิดว่ามันเป็นโซลูชั่นที่ overkill?!
Maythux

2
@ Maythux ในขณะที่ถูกต้องทางเทคนิคแน่นอนมัน overkill เล็กน้อยเมื่อเรามี TTY และ ssh แล้ว โซลูชัน LiveCD นั้นสามารถใช้งานได้มากกว่าเมื่อคุณติดตั้ง coreutils (ใช่ฉันเคยทำมาก่อนโดยไม่ได้ตั้งใจ) หรือมีอะไรบางอย่างเกิดขึ้นจริง
Sergiy Kolodyazhnyy

1
@Serg แต่มันยังคงเป็นกรณีบวกมันเป็นอีกโซลูชันฉันพูดนอกเหนือจากการใช้ tty ตามที่คุณอธิบายว่าเขามีตัวเลือกของ liveCd และเขายังมีตัวเลือกของโหมดการกู้คืน ... เรากำลังพูดถึง linux โซลูชั่นสำหรับ ปัญหาเดียวกัน. ฉันไม่คิดว่าการแนะนำ liveCd เป็นปัญหา!
Maythux

1
@ Maythux หากพวกเขาสามารถเข้าสู่ระบบแล้วและมี 'คอนโซลเสมือน' บน TTY มันเป็นงานมากเกินไปและพิเศษในการบูตขึ้นสู่ LiveUSB / LiveCD เพื่อทำมัน โดยเฉพาะอย่างยิ่งเนื่องจากไม่ใช่กรณีของ "ฉันไม่สามารถเข้าถึงอะไรก็ได้" ดังนั้นจึงไม่จำเป็นต้องมีปืนใหญ่ (ดังที่ Serg พูดถึงในความคิดเห็น)
Thomas Ward

2

ดังนั้นฉันจะอวดความรู้ที่นี่:

มีวิธีที่ฉันสามารถเข้าถึง bash โดยไม่มี terminal emulator หรือไม่?

แน่ใจว่าสคริปต์ใด ๆ ที่ขึ้นต้นด้วย#!/bin/bashจะทำเช่นนั้น

มีวิธีที่ฉันสามารถรับ bash prompt โดยไม่มี terminal emulator หรือไม่?

ต่อเนื่องกับธีมของฉันของการเป็นคนอวดดีให้โผล่บางหลุมในคำตอบอื่น ๆ

สมมติว่าฉันได้ถอนการติดตั้งเทอร์มินัลอีมูเลเตอร์ทุกเครื่องบนระบบของฉันโดยไม่ได้ตั้งใจ:

นี่เป็นเรื่องยากที่จะดึงออกเพราะ

โดยกด CtrlAltF2

คุณสลับไปยังคอนโซลเสมือนอื่นที่มี linux kernel virtual terminal emulator ทำงานอยู่ซึ่งยากมากที่จะลบและต้องการ recompiling kernel ด้วยตัวเลือกที่ไม่เป็นมาตรฐาน ดังนั้นให้เป่ารูในตัวเลือก ssh / telnet / serial-port เหล่านั้นต้องการโปรแกรมจำลองระยะไกล สำหรับ webmin มันยังมีเทอร์มินัลอีมูเลเตอร์ (เพียงหมัดเดียว)

มีเพียงวิธีเดียวในการใช้ฟังก์ชั่นของเครื่องที่ไม่มีเครื่องจำลองขั้ว: ใช้เครื่องจริง ฉันเคยมี Televideo และ teletype (ไม่ใช่ TeleType นี่เป็นสิ่งที่น่าพิศวง) ฉันสามารถแก้ไขไฟล์ที่มีทั้งคู่ (vi บน Televideo, ed บน teletype (มีอาการปวดหลัง) ทำให้การโทรออกไป bbs ท้องถิ่นโดยใช้ minicom และ seyon จากโทรทัศน์ คุณรู้ว่าสิ่งเดียวที่ฉันคิดถึงคือสิทธิในการคุยโม้ แต่ฉันเลือกเทอร์มินัลการกำหนดค่าสำหรับเครื่องพิมพ์อุตสาหกรรมที่มีการแสดงคอลัมน์สองบรรทัด 20 บรรทัดแป้นพิมพ์และอินเทอร์เฟซ rs232 ที่จะทำงานเพื่อซ่อมแซมการกำหนดค่าฉุกเฉิน คู่มือการใช้งานของฉันอยู่ที่ไหน


0

คล้ายกับ@ABคำตอบ 's ถ้าคุณมีเว็บเซิร์ฟเวอร์ทำงาน (ผมเชื่อว่า stanard Ubuntu มาพร้อมกับ Apache) คุณสามารถเรียกใช้เปลือกในเบราว์เซอร์ของคุณเองกับสิ่งที่ต้องการphpshell

โดยส่วนตัวแล้วฉันเพิ่งจะดับ emacs M-x shell RETURNแล้ว


Ubuntu มาตรฐานไม่ได้มาพร้อมกับเว็บเซิร์ฟเวอร์
muru

2
@muru มันมาพร้อมกับเว็บเซิร์ฟเวอร์ในพื้นที่เก็บข้อมูล sudo apt-get install apacheเพียงแค่เปิดสถานีและประเภท โอ้เดี๋ยวก่อน
Mr Lister
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.