ความแตกต่างที่แน่นอนระหว่าง 'terminal', 'shell', 'tty' และ 'console' คืออะไร?


1235

ฉันคิดว่าคำเหล่านี้เกือบจะอ้างถึงสิ่งเดียวกันเมื่อใช้อย่างหลวม ๆ :

  • สถานีปลายทาง
  • เปลือก
  • TTY
  • ปลอบใจ

แต่ละคำเหล่านี้อ้างถึงอะไรอย่างแน่ชัด?



28
ฉันต้องการเพิ่ม 'บรรทัดคำสั่ง' ไปที่ :-)
teeks99

1
บรรทัดคำสั่งเป็นเพียงภาษาที่ใช้ในการส่งคำสั่งไปยังตัวแปลบรรทัดคำสั่งที่ทำงานในเชลล์จากเทอร์มินัล / เทอร์มินัลอีมูเลเตอร์
Marty ผัด

1
teletypewriter (TTY)เป็นครั้งแรกในการดำเนินงานและการจัดแสดงที่สถาบันกลศาสตร์ในนิวยอร์ก1844 en.wikipedia.org/wiki/Teleprinter
เสิร์จ Stroobandt

ลิงก์ที่มีประโยชน์เพิ่มเติมอีกสองรายการคือfeyrer.de/NetBSD/ttys.htmlและquora.com/…
Nishant

คำตอบ:


1198

เทอร์มินัลอยู่ที่ปลายสายไฟฟ้าเปลือกหอยเป็นบ้านของเต่า tty เป็นตัวย่อที่แปลกและคอนโซลเป็นตู้ชนิดหนึ่ง

เอ่อพูดแล้ว

ในคำศัพท์ unix คำตอบสั้น ๆ ก็คือ

  • เทอร์มินัล = tty = สภาพแวดล้อมอินพุต / เอาต์พุตข้อความ
  • console = ฟิสิคัลเทอร์มินัล
  • shell = ตัวแปลบรรทัดคำสั่ง

คอนโซลเทอร์มินัลและ tty มีความสัมพันธ์กันอย่างใกล้ชิด แต่เดิมพวกเขาหมายถึงชิ้นส่วนของอุปกรณ์ซึ่งคุณสามารถโต้ตอบกับคอมพิวเตอร์ในยุคแรก ๆ ของยูนิกซ์ที่หมายถึงโทรพิมพ์อุปกรณ์สไตล์คล้ายเครื่องพิมพ์ดีดบางครั้งเรียกว่า teletypewriter หรือ“TTY” ชวเลข ชื่อ "เทอร์มินัล" มาจากมุมมองอิเล็กทรอนิกส์และชื่อ "คอนโซล" จากมุมมองเฟอร์นิเจอร์ เร็วมากในประวัติศาสตร์ยูนิกซ์คีย์บอร์ดและจอแสดงผลอิเล็กทรอนิกส์กลายเป็นบรรทัดฐานสำหรับเทอร์มินัล

ในคำศัพท์ unix คำสั่งttyเป็นไฟล์อุปกรณ์ชนิดหนึ่งซึ่งใช้คำสั่งเพิ่มเติมจำนวนมาก ( ioctls ) นอกเหนือจากการอ่านและเขียน ในความหมายทั่วไปเทอร์มินัลมีความหมายเหมือนกันกับ tty เคอร์เนลบางตัวถูกจัดเตรียมโดยเคอร์เนลในนามของอุปกรณ์ฮาร์ดแวร์ตัวอย่างเช่นอินพุตที่มาจากคีย์บอร์ดและเอาต์พุตไปที่หน้าจอโหมดข้อความหรือด้วยอินพุตและเอาต์พุตที่ส่งผ่านบรรทัดอนุกรม ttys อื่น ๆ บางครั้งเรียกว่าpseudo-ttysถูกจัดเตรียม (ผ่านเคอร์เนลเลเยอร์บาง) โดยโปรแกรมที่เรียกว่าเทอร์มินัลอีมูเลเตอร์เช่นXterm (ทำงานในระบบX Window ), หน้าจอ(ซึ่งมีชั้นของการแยกระหว่างโปรแกรมและเทอร์มินัลอื่น), Ssh (ซึ่งเชื่อมต่อเทอร์มินัลในเครื่องหนึ่งกับโปรแกรมบนเครื่องอื่น), คาดหวัง (สำหรับการทำงานร่วมกันของเทอร์มินัลสคริปต์) เป็นต้น

คำว่าเทอร์มินัลยังมีความหมายดั้งเดิมของอุปกรณ์ที่มีการโต้ตอบกับคอมพิวเตอร์โดยทั่วไปจะมีแป้นพิมพ์และจอแสดงผล ตัวอย่างเช่นเทอร์มินัล X เป็นไคลเอ็นต์แบบ thinซึ่งเป็นคอมพิวเตอร์ที่มีวัตถุประสงค์เฉพาะซึ่งมีวัตถุประสงค์เพียงเพื่อขับเคลื่อนแป้นพิมพ์จอแสดงผลเมาส์และอุปกรณ์ต่อพ่วงอื่น ๆ ที่มีปฏิสัมพันธ์กับมนุษย์เป็นครั้งคราวโดยมีแอพพลิเคชันจริงทำงานบนคอมพิวเตอร์เครื่องอื่นที่ทรงพลังกว่า

คอนโซลทั่วไปเป็นขั้วในความรู้สึกทางกายภาพที่เป็นโดยความหมายบางสถานีหลักเชื่อมต่อโดยตรงกับเครื่อง คอนโซลปรากฏต่อระบบปฏิบัติการเป็น tty (ใช้กับเคอร์เนล) ในบางระบบเช่น Linux และ FreeBSD คอนโซลจะปรากฏเป็นหลาย ttys (การผสมคีย์พิเศษสลับไปมาระหว่าง ttys เหล่านี้); เพียงเพื่อสร้างความสับสนเรื่องชื่อที่กำหนดให้กับแต่ละ tty เฉพาะสามารถ "คอนโซล", "คอนโซลเสมือน", "สถานีเสมือน" และรูปแบบอื่น ๆ

ดูเพิ่มเติมเหตุใดเทอร์มินัลเสมือน“ เสมือนจริง” คืออะไรและทำไมเทอร์มินัล“ ของจริง” คืออะไร? .


เปลือกคืออินเตอร์เฟซหลักที่ผู้ใช้เห็นเมื่อพวกเขาเข้าสู่ระบบมีจุดประสงค์หลักคือการเริ่มต้นโปรแกรมอื่น ๆ (ฉันไม่ทราบว่าคำอุปมาเดิมคือเชลล์คือสภาพแวดล้อมภายในบ้านสำหรับผู้ใช้หรือว่าเชลล์เป็นโปรแกรมอื่นที่กำลังทำงานอยู่)

ในแวดวงยูนิกซ์เชลล์มีความหมายเฉพาะเชลล์บรรทัดคำสั่งโดยมีศูนย์กลางอยู่ที่การป้อนชื่อของแอปพลิเคชันที่ต้องการเริ่มต้นตามด้วยชื่อของไฟล์หรือวัตถุอื่น ๆ ที่แอปพลิเคชันควรทำงานและกดปุ่ม Enter สภาพแวดล้อมประเภทอื่น ๆ ไม่ได้ใช้คำว่า "เปลือก"; ตัวอย่างเช่นระบบหน้าต่างเกี่ยวข้องกับ " ตัวจัดการหน้าต่าง " และ " สภาพแวดล้อมเดสก์ท็อป " ไม่ใช่ "เชลล์"

มียูนิกซ์เชลล์ที่แตกต่างกันมากมาย เชลล์ยอดนิยมสำหรับการใช้งานแบบโต้ตอบ ได้แก่Bash (ค่าเริ่มต้นสำหรับการติดตั้ง Linux ส่วนใหญ่), zsh (ซึ่งเน้นพลังงานและความสามารถปรับแต่งได้) และปลา (ซึ่งเน้นความเรียบง่าย)

เชลล์บรรทัดคำสั่งรวมการสร้างโฟลว์คอนโทรลเพื่อรวมคำสั่ง นอกเหนือจากการพิมพ์คำสั่งที่พร้อมต์แบบโต้ตอบผู้ใช้สามารถเขียนสคริปต์ เปลือกหอยที่พบมากที่สุดมีไวยากรณ์ที่พบอยู่บนพื้นฐานของBourne_shell เมื่อพูดถึง“ การเขียนโปรแกรมเชลล์ ” เชลล์จะบอกเป็นนัย ๆ ว่าเป็นเชลล์สไตล์ Bourne เชลล์บางตัวที่มักใช้ในการเขียนสคริปต์ แต่ขาดคุณลักษณะการโต้ตอบขั้นสูง ได้แก่Korn เชลล์ (ksh)และเถ้าหลากหลายรูปแบบ ค่อนข้างเหมือนระบบ Unix ใด ๆ ที่มีการติดตั้งเปลือกสไตล์ Bourne เป็น/bin/shปกติเถ้า Ksh หรือทุบตี

ในการจัดการระบบ unix เชลล์ของผู้ใช้คือโปรแกรมที่ถูกเรียกเมื่อพวกเขาเข้าสู่ระบบบัญชีผู้ใช้ปกติมีเชลล์บรรทัดคำสั่ง แต่ผู้ใช้ที่มีการเข้าถึงที่ จำกัด อาจมีเชลล์ที่ถูก จำกัดหรือคำสั่งเฉพาะอื่น ๆ - บัญชีเท่านั้น)


การแบ่งงานระหว่างเทอร์มินัลและเชลล์ไม่ชัดเจนอย่างสมบูรณ์ นี่คือภารกิจหลักของพวกเขา

  • อินพุต: เทอร์มินัลแปลงคีย์เป็นลำดับการควบคุม (เช่นLeft\e[D) เชลล์แปลงลำดับการควบคุมไปเป็นคำสั่ง (เช่น\e[Dbackward-char)
  • การแก้ไขบรรทัดประวัติอินพุตและความสมบูรณ์จัดทำโดยเชลล์
    • เทอร์มินัลอาจจัดเตรียมการแก้ไขบรรทัดประวัติและความสำเร็จของตนเองแทนและส่งบรรทัดไปยังเชลล์เมื่อพร้อมที่จะดำเนินการเท่านั้น เทอร์มินัลทั่วไปเท่านั้นที่ทำงานในลักษณะนี้อยู่M-x shellใน Emacs
  • เอาท์พุท: เชลล์ส่งเสียงคำแนะนำเช่น "จอแสดงผลfoo", "สลับสีพื้นหน้าเป็นสีเขียว", "เลื่อนเคอร์เซอร์ไปที่บรรทัดถัดไป" ฯลฯ เทอร์มินัลทำหน้าที่ตามคำแนะนำเหล่านี้
  • พรอมต์เป็นแนวคิดของเชลล์อย่างหมดจด
  • เชลล์ไม่เห็นเอาต์พุตของคำสั่งที่รัน (ยกเว้นว่าถูกเปลี่ยนทิศทาง) ประวัติเอาต์พุต (scrollback) เป็นแนวคิดของเทอร์มินัลอย่างแท้จริง
  • การคัดลอกวางระหว่างแอพพลิเคชั่นนั้นจัดทำโดยเทอร์มินัล (โดยปกติจะใช้เมาส์หรือลำดับคีย์เช่นCtrl+ Shift+ VหรือShift+ Insert) เชลล์อาจมีกลไกการคัดลอกวางภายในของตัวเองเช่น ( Meta+ WและCtrl+ Y)
  • การควบคุมงาน (การเปิดตัวโปรแกรมในพื้นหลังและการจัดการพวกมัน) ส่วนใหญ่ทำโดยเชลล์ อย่างไรก็ตามเป็นเทอร์มินัลที่จัดการชุดคีย์เช่นCtrl+ Cเพื่อฆ่างานเบื้องหน้าและCtrl+ Zเพื่อระงับ

50
เล่นลิ้นเท่านั้น: ฉันจะบอกว่าทั้งสองชนิด ttys เป็น "ให้" เคอร์เนล ความแตกต่างที่ฉันจะเน้นคือฮาร์ดแวร์ ttys (เช่นสายอนุกรมและคอนโซลข้อความในตัว) มีปลายด้านหนึ่งเชื่อมต่อกับฮาร์ดแวร์และปลายด้านหนึ่งเชื่อมต่อกับซอฟต์แวร์ (เช่นโปรแกรมเข้าสู่ระบบและ / หรือเปลือกหอย) ในขณะที่หลอก ttys ปลายทั้งสองข้างเชื่อมต่อกับซอฟต์แวร์ (เช่นเทอร์มินัลอีมูเลเตอร์ที่ปลายด้านหนึ่งและอีกด้านหนึ่งของเชลล์)
Chris Johnsen

12
@phunehehe: ถูกต้องนั่นคือความหมายที่แตกต่างของ“ shell” โดยทั่วไปในการออกแบบระบบปฏิบัติการเชลล์เป็นส่วนนอกของเคอร์เนล มันไม่ได้เป็นคำศัพท์ที่ใช้ระบบปฏิบัติการยูนิกซ์: เมล็ด Unix ไม่มีแนวโน้มที่จะมีส่วนประกอบที่สามารถเรียกเชลล์ได้
Gilles

24
นี่คือภาพในใจของฉันสำหรับคำเปรียบเทียบของเชลล์
ændrük

12
นอกจากนี้ยังมีความหมายอื่นของ "คอนโซล" ภายใต้ Linux คอนโซล (มีเพียงรายการเดียว) คือตำแหน่งที่printkมีลำดับความสำคัญเพียงพอไป (เช่นเคอร์เนลที่ทำให้ตกใจ) มันถูกตั้งค่าโดยการส่งผ่านconsole=DEVICE,...บรรทัดคำสั่งเคอร์เนล (เช่นconsole=ttyS0,115200สำหรับพอร์ตอนุกรมแรกที่ 115,200 bps) โดยปกติแล้วจะมีค่าเริ่มต้นเป็นเทอร์มินัลเสมือน แต่สามารถเปลี่ยนแปลงได้เมื่อทำการรวบรวมเคอร์เนล
Derobert

19
“ …เทอร์มินัล…จัดการคีย์ผสมเช่น Ctrl + C เพื่อฆ่างานเบื้องหน้าและ Ctrl + Z เพื่อระงับมัน” ไม่มาก: เทอร์มินัลยังส่งตัวควบคุมเพียงอย่างเดียวมันเป็นอุปกรณ์ tty ที่ตัดสินใจว่าจะจัดการกับมันอย่างไร . โดยดีฟอลต์อุปกรณ์ tty จะแปลงอักขระควบคุมเป็นสัญญาณที่ส่งไปยังเชลล์ (และกระบวนการอื่น ๆ )
Chris หน้า

194

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

ไฟล์ที่แสดงถึงเทอร์มินัลนั้นเรียกว่าไฟล์tty หากคุณดูภายใต้ไดเรกทอรี "/ dev" ของระบบ UNIX คุณจะพบไฟล์ttyจำนวนมากที่เชื่อมต่อกับคอนโซลเสมือน (เช่น tty1 บน linux), เทอร์มินัลเสมือน (เช่น pts / 0) หรือฮาร์ดแวร์ที่เชื่อมต่อทางกายภาพ (เช่น ttyS0 เป็นฟิสิคัลเทอร์มินัลอนุกรมถ้ามีเชื่อมต่อกับพอร์ตอนุกรมแรกของโฮสต์)

คอนโซลจะต้องเป็นชิ้นส่วนของฮาร์ดแวร์ที่เชื่อมต่อกับร่างกาย (หรือส่วนหนึ่งของ) โฮสต์ มันมีบทบาทพิเศษในระบบ: มันเป็นประเด็นหลักในการเข้าถึงระบบเพื่อการบำรุงรักษาและการดำเนินการพิเศษบางอย่างสามารถทำได้เฉพาะจากคอนโซล (เช่นดูsingle user mode) ขั้วสามารถและโดยปกติจะเป็นชิ้นส่วนที่ห่างไกลของฮาร์ดแวร์

สุดท้าย แต่ไม่ท้ายสุดเชลล์คือโปรแกรมพิเศษที่โต้ตอบกับผู้ใช้ผ่านการควบคุม ttyและข้อเสนอแก่ผู้ใช้วิธีการเปิดตัวโปรแกรมอื่น ๆ (เช่น bash, csh, tcsh)

จำลอง terminalเป็นโปรแกรมที่จำลองขั้วทางกายภาพ (เช่น xterm, gnome-terminal, minicom)

ดังนั้นเมื่อคุณมองไปที่ "หน้าต่างข้อความ" บนระบบลินุกซ์ (ภายใต้ X11) คุณกำลังมองหาที่: จำลอง terminalเชื่อมต่อกับterminal เสมือนระบุโดยTTYไฟล์ภายในซึ่งวิ่งเปลือก


2
คอมพิวเตอร์เดสก์ท็อปทุกเครื่องมีคอนโซลระบบ (ในปี 2015 ของฉันหรือปี 2010 ไม่เป็นไร) ตามที่ระบุไว้อย่างถูกต้องมันเป็นชิ้นส่วนของฮาร์ดแวร์ แต่การระบุว่า“ ทุกวันนี้เกือบทั้งหมด…คอนโซลเป็นตัวแทนของ "เสมือน" ที่เกือบจะขัดแย้งและเห็นได้ชัดว่าไม่ดี
Incnis Mrsi

1
"เทอร์มินัลหรือคอนโซลเป็นชิ้นส่วนของฮาร์ดแวร์ที่ใช้ซึ่งผู้ใช้สามารถโต้ตอบกับโฮสต์โดยทั่วไปแป้นพิมพ์ควบคู่กับหน้าจอข้อความ" การอธิบายที่ยอดเยี่ยมตามแง่มุมที่เป็นรูปธรรม
Webwoman

@andcoz - คุณหมายถึงอะไรโดย "หน้าต่างข้อความ" เทอร์มินัลจำลองไม่ใช่เทอร์มินัลเสมือนจริงหรือ หากฉันรันคำสั่งttyในโปรแกรมจำลองเทอร์มินัลเช่น Konsole ของ KDE เอาต์พุตคือ / dev / pts / 0
แรงบันดาลใจ

1
@IncnisMrsi - คอมพิวเตอร์ตั้งโต๊ะไม่ใช่คอนโซลใช่ไหม ถ้าไม่คุณหมายถึงอะไรมีคอนโซลระบบ?
แรงบันดาลใจ

2
@Motivated /dev/pts/0เป็นไฟล์ tty ซึ่งเป็นตัวจัดการไปยังส่วนต่อประสานแบบโปรแกรมโดยเคอร์เนล ผ่านตัวจัดการนี้โปรแกรม (เช่นเชลล์) สามารถโต้ตอบกับเทอร์มินัล (จริงหรือเสมือน) เทอร์มินัลอีมูเลเตอร์เป็นซอฟต์แวร์ที่จำลองเทอร์มินัล อีมูเลเตอร์ขอให้เคอร์เนลสร้างตัวจัดการเพื่อให้โปรแกรมโต้ตอบกับตัวเอง (ดูman openpty) ดังนั้นข้อมูลไหลจากเทอร์มินัล (อีมูเลเตอร์) ไปยังเคอร์เนล tty handler ไปที่โปรแกรม (และในทางกลับกัน) โปรแกรมและเทอร์มินัลไม่ได้พูดคุยกันโดยตรง แต่ผ่านไฟล์ tty (ตัวจัดการ) เท่านั้น
andcoz

48

คำอธิบายสั้น:

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

เทอร์มินัลคือเซสชันที่สามารถรับและส่งอินพุตและเอาต์พุตสำหรับโปรแกรมบรรทัดคำสั่ง คอนโซลเป็นกรณีพิเศษของสิ่งเหล่านี้

TTY เป็นอุปกรณ์หลอกที่เรียกว่าทรัพยากรเคอร์เนลซึ่งถูกใช้โดยกระบวนการเพื่อเข้าถึงเทอร์มินัลเฉพาะ TTY สามารถเชื่อมโยงกับฮาร์ดแวร์เช่นพอร์ตอนุกรมหรืออาจเป็นเสมือนเช่นสร้างขึ้นเมื่อผู้ใช้ล็อกอินผ่านเครือข่าย

เชลล์เป็นโปรแกรมที่ใช้สำหรับควบคุมและรันโปรแกรม มันมักจะใช้แบบโต้ตอบผ่านเทอร์มินัล มีโปรแกรมเชลล์อยู่หลายโปรแกรมการใช้ Bash นั้นถือเป็นเชลล์ที่ใช้กันมากที่สุดในปัจจุบัน เชลล์อื่น ๆ ตามลำดับโดยเฉพาะรวมถึง Bourne Shell, C-shell, Dash, Tsch, Ksh และ zsh ที่เป็นที่นิยมมากขึ้น ยังมีอีกมากมาย

เมื่อคุณมี GUI คุณสามารถใช้โปรแกรมเทอร์มินัลเพื่อวาดเส้นขอบที่ปรับขนาดได้ที่ดีเพิ่มแถบเลื่อนและจัดรูปแบบข้อความและอื่น ๆ สำหรับเทอร์มินัลเซสชัน บ่อยครั้งเหล่านี้เรียกว่าเทอร์มินัลอีมูเลเตอร์และบางครั้งพวกเขาสามารถจัดการหลายเซสชันผ่านแนวคิด TAB Terminal Emulator มักจะเริ่มเชลล์เพื่อให้คุณสามารถทำงานบนบรรทัดคำสั่งแบบโต้ตอบได้


1
PTY เป็น TTY หลอก TTY อาจเป็นได้ แต่เทอร์มินัลเสมือน (หลอก)
Luciano

35

TTY (เช่นTเอเลTY pewriter) เป็นอุปกรณ์พิเศษที่ช่วยให้คนที่มีหูหนวกหูตึงหรือคำพูดบกพร่องการใช้โทรศัพท์ในการติดต่อสื่อสารโดยให้พวกเขาในการพิมพ์ข้อความ ต้องการ TTY ที่ปลายทั้งสองของการสนทนาเพื่อสื่อสาร
OR
TTYเป็นเทอร์มินัลที่ใช้พิมพ์ข้อความ


เชลล์ : ส่วนป้องกันภายนอกครอบคลุมส่วนหนึ่งของเมล็ดเช่นเคอร์เนล
หรือ
กรอบหรือโครงสร้างภายนอกสู่ส่วนกลางหรือส่วนสำคัญของระบบ
ป้อนคำอธิบายรูปภาพที่นี่


คอนโซลหมายถึงแป้นพิมพ์และตรวจสอบการแนบทางกายกับคอมพิวเตอร์


28

แล้วมีสองคำตอบที่ดี แต่Ī'dต้องการเพิ่มข้อมูลเกี่ยวกับคำพูดที่ว่า“ขั้วเสมือน” โดยทั่วไปหมายถึงสิ่งที่ให้รูปลักษณ์ / การทำงานของเทอร์มินัล i อี ในความหมายกว้าง แต่ในช่วงแรก ๆ ของ Linux (1994–95) มีการใช้คำพ้องกับ"virtual console" (ส่วนต่อประสานผู้ใช้ที่ไม่เกี่ยวข้องหลายรายการ)โดยนักพัฒนาบางคน การใช้งานนี้ยังคงอยู่ในเอกสารประกอบ; คำสองคำที่แตกต่างกันคือ (และเป็น) ใช้เพื่ออ้างถึง tty1, tty2 … thingies ทุกวันนี้ (ตั้งแต่“ 1996) "เทอร์มินัลเสมือน" อาจหมายถึงเทอร์มินัลจำลองที่ใช้

Linux vt(ไดรเวอร์ของคอนโซลระบบข้อความ) เป็นส่วนแรกของเคอร์เนล มันถูกใช้ครั้งแรกสำหรับการเชื่อมต่อกับเมนเฟรมและในแง่นี้มันเป็น "สถานีเสมือน" ดังนั้นชื่อ รหัสที่ควบคุมคอนโซลเสมือนอยู่vt.cเช่นกัน วิศวกรเคอร์เนล Linux ใช้คำว่า "คอนโซล" เพื่อแสดงถึง tty1, tty2 …และใช้คำนำหน้า“ vc_” สำหรับพวกเขา ตัวอย่างเช่นมีvc_allocateฟังก์ชั่น ในทางกลับกันนักพัฒนาของเครื่องมือพื้นที่ผู้ใช้ดังกล่าวkbdและconsole-toolsใช้“ virtual console” (VC) และ“ virtual terminal” (VT) แทนกันได้ Ī̲ ติดต่อAndries E. Brouwerและขอให้เขาอธิบายคำศัพท์ที่ใช้โดยผู้พัฒนาก่อนหน้านี้ (1994–95) Andries กรุณาให้คำตอบบางอย่าง เขาระบุว่า VT และ VC มีความหมายเหมือนกันและมีตัวย่อ“ แบ่งแยกไม่ได้” -> โดยทั่วไปคอนโซลเสมือนเป็นเทอร์มินัลเสมือน แต่การสนทนาไม่เป็นความจริง "เทอร์มินัลเสมือน" เหล่านั้นที่ไม่ใช่คอนโซลเสมือนจริง ๆ แล้วเป็นpseudoterminals (เช่น Andries ระบุว่าไม่ใช่ VT ) ซึ่งแตกต่างจากคอนโซลเสมือนที่เคอร์เนลมีการทำงานที่สถานีสำหรับการประยุกต์ใช้คอนโซล pseudoterminals ใช้ PTY“อุปกรณ์” จะจัดให้มีการสื่อสารระหว่างโปรแกรมคอนโซลและโปรแกรมมินัลทำที่ทำงานใน userspace ตัวอย่างคือเทอร์มินัลอีมูเลเตอร์ X และsshdที่จัดสรร pseudotty สำหรับแต่ละเซสชันการล็อกอิน นามแฝงอาจไม่ถูกเรียกว่า "คอนโซล" - มันเป็นความผิดพลาด


14
  • เทอร์มินัล = อินเตอร์เฟสที่ให้การแสดงผลสำหรับเอาต์พุตและบอร์ดคีย์สำหรับอินพุตไปยังเชลล์เซสชั่น

  • Shell = Interpreter ที่เรียกใช้งานคำสั่งที่พิมพ์เป็นสตริง

  • คอนโซล: จริงๆแล้วเรามีสองประเภทของคอนโซล

    • ฟิสิคัลคอนโซล = จอแสดงผลฮาร์ดแวร์และคีย์บอร์ดที่ใช้ในการโต้ตอบกับระบบ

    • Virtual console = หนึ่งในหลาย ๆ โลจิคัลคอนโซลที่สามารถสนับสนุนเซสชันการล็อกอินอิสระ

  • tty (เทอร์มินัลโทรพิมพ์เช่น) = เทอร์มินัลนั้นเป็นเพียงอุปกรณ์ส่วนติดต่อผู้ใช้ที่ใช้ข้อความสำหรับอินพุตและเอาต์พุตข้อความ


tty คืออะไร - ไม่เช่นนั้นคำตอบของคุณคือฉันคนเดียวที่อ่าน
loxaxs

8

คุณต้องดำดิ่งสู่ประวัติศาสตร์

มีอุปกรณ์คล้ายเครื่องพิมพ์ดีดพร้อมกระดาษและคีย์บอร์ด พวกเขาถูกเรียกว่าโทรพิมพ์ (ซึ่งหมายถึง "พิมพ์จากระยะไกล" เนื่องจาก "tele" หมายถึง "ระยะไกล") หรือttysสั้น ๆ ใน 70s พวกเขาได้ละทิ้งอุปกรณ์ที่มีจอ CRT ที่เรียกว่าแก้วttys

คอมพิวเตอร์ทุกเครื่องต้องการวิธีรายงานสถานะและข้อผิดพลาด (และอาจยอมรับคำสั่ง) มันทำผ่านคอนโซลซึ่งเกือบจะเชื่อมต่อโดยตรงกับคอมพิวเตอร์ ดังนั้นจึงมี 2 ความหมายสำหรับคอนโซล : สิ่งที่ใช้ในการรายงานสถานะและสิ่งที่เชื่อมต่อโดยตรง

UNIX เป็นระบบแบบโต้ตอบ: ผู้ใช้หลายคนอาจเชื่อมต่อและเริ่มโปรแกรมประยุกต์ คอมพิวเตอร์เครื่องแรกใช้ teletypes ( tty ) สำหรับ: ผู้ใช้แต่ละคนมีการเชื่อมต่อโทรพิมพ์กับเครื่องด้วยการเชื่อมต่อสายอนุกรม โทรพิมพ์ดังกล่าวเรียกว่าขั้ว UNIX ยังมีระบบย่อยพิเศษในการจัดการ "ผู้ใช้ที่นั่งด้านหลังเทอร์มินัล" ซึ่งเรียกอีกอย่างว่าttyเพราะเทอร์มินัลแรกคือโทรพิมพ์ แต่ละกระบวนการสามารถเชื่อมต่อกับ tty ใน Unix นั่นหมายความว่ามีผู้ใช้คนหนึ่งนั่งอยู่ใกล้กับสถานี ดูhttp://www.linusakesson.net/programming/tty/สำหรับข้อมูลเพิ่มเติม

ผู้ใช้ต้องการวิธีบอกเคอร์เนลให้เรียกใช้แอปพลิเคชัน เชลล์ (sh, bash, csh, ksh ฯลฯ ) ใช้สำหรับสิ่งนั้น เชลล์รันบนttyยอมรับคำสั่งจากผู้ใช้และขอให้เคอร์เนลรันบางแอพ

แต่เทอร์มินัลไม่ได้เชื่อมต่อกับตัวเครื่องเสมอไป อาจมีแอปพลิเคชั่นบางตัวที่เทอร์มินัล "จำลอง" ยอมรับการกดแป้นจากผู้ใช้และส่งไปที่ไหนสักแห่ง (xterm และ ssh เป็นตัวอย่างที่ดี) มี API ในเคอร์เนลที่เรียกว่าสถานีหลอกสำหรับสิ่งนั้น ดังนั้นttyของคุณอาจเชื่อมต่อกับแอปพลิเคชั่นบางตัวแทนเทอร์มินัลจริง Xterm ใช้ X11 เพื่อแสดงข้อความและ ssh ใช้การเชื่อมต่อเครือข่าย

IBM PC มีแป้นพิมพ์และการ์ดวิดีโอ ( บางครั้งเรียกว่าคอนโซล ) Linux สามารถทำสิ่งต่าง ๆ ด้วย:

  • ใช้เป็น "เครื่องมือเพื่อรายงานข้อผิดพลาดและสถานะ": คอนโซล Linux หากคุณผ่าน console = / dev / ttyS0 ไปยังเคอร์เนลจะใช้สิ่งที่เชื่อมต่อกับ COM1 เป็นคอนโซลและหากคุณไม่ใช้ก็จะใช้คอนโซลของพีซี
  • ใช้เพื่อจำลองเทอร์มินัลหรือที่เรียกว่าvirtual terminal (vty)

นอกจากนี้ยังอาจหยุดการจำลองเทอร์มินัลบนคอนโซลและมอบให้กับแอพบางตัว แอพสามารถสลับโหมดวิดีโอและใช้งานได้เฉพาะ (X11 หรือ svgalib อาจทำเช่นนั้น)

ดังนั้นนี่คือความหมายที่ทันสมัย:

  • เทอร์มินัล: มีผู้ใช้จริงนั่งอยู่ข้างหลัง อาจเป็นฟิสิคัลเทอร์มินัล (หายาก) หรือเทอร์มินัลหลอก (xterm, ssh) หรือเทอร์มินัลเสมือน (vty ใน Linux)
  • shell: แอปพลิเคชั่น (bash, tcsh และอื่น ๆ ) ที่ช่วยให้ผู้ใช้โต้ตอบกับระบบ
  • tty: เทอร์มินัลหรือระบบย่อยเคอร์เนลเพื่อสนับสนุนเทอร์มินัล
  • คอนโซล: สิ่งที่รายงานสถานะและข้อผิดพลาด ( /dev/console) หรือแป้นพิมพ์กายภาพและจอแสดงผลวิดีโอที่เชื่อมต่อกับคอมพิวเตอร์

7

นี่คือคำตอบสั้น ๆ -

เคอร์เนล - ส่วนในสุดของระบบปฏิบัติการที่ทันสมัยซึ่งพูดถึงฮาร์ดแวร์โดยตรง

Shell - wrapper รอบเคอร์เนลจริง เมื่อใดก็ตามที่เรารันคำสั่งเราจะพูดกับเชลล์ซึ่งจะเรียกใช้คำสั่งเคอร์เนลที่เหมาะสม นอกเหนือจากนี้เชลล์ยังสามารถทำงานอื่น ๆ ได้เช่นการค้นหาโปรแกรมที่เหมาะสมขณะที่มีคำสั่งชื่อไฟล์สั้น ๆ บางคำสั่ง piping เป็นต้น

เทอร์มินัล - ในยุคของการคำนวณก่อนหน้านี้คอมพิวเตอร์ (รู้จักกันในชื่อเมนเฟรม) เป็นยักษ์ ดังนั้นมันจึงเป็นเรื่องง่ายที่จะมีหน่วยประมวลผลเดียวและเชื่อมต่อจากหลายแห่ง เทอร์มินัลเป็นฮาร์ดแวร์จริงที่มีแป้นพิมพ์และอุปกรณ์ส่งออกเชื่อมต่อกับเมนเฟรม

คอนโซล - เทอร์มินัลชนิดพิเศษที่เชื่อมต่อโดยตรงกับเมนเฟรมเพื่อวัตถุประสงค์ในการดูแลระบบปฏิบัติการ

tty - TeleTypewriter ใช้ในการส่งและรับข้อมูลไปและกลับจากเมนเฟรม ใช้ก่อน Video Terminals พร้อมใช้งาน แต่ตามอัตภาพมันยังถูกตั้งชื่อเป็น tty แม้แต่เพื่อนร่วมงานstty

คำตอบโดยละเอียดอยู่ที่นี่ - เทอร์มินัลคอนโซลเชลล์เคอร์เนลคำสั่ง - ส่วนต่าง ๆ ของคอมพิวเตอร์


ขอบคุณ แต่โดยทั่วไปถ้าเทอร์มินัลอยู่ทำไมยังมี tty อยู่ในระบบอูบุนตูสำหรับคอมพิวเตอร์ส่วนบุคคลเข้าถึงด้วย alt + f-1/6 ได้โปรดฉันไม่สามารถหายูทิลิตี้เหนือข้อเท็จจริงที่ว่าพวกเขาสามารถเข้าถึงได้โดยไม่ต้องใช้ระบบกราฟิก ถ้าฉันเข้าใจดี
Webwoman

1
@Webwoman - ฉันมีการกำหนดค่าระบบของฉันให้อนุญาตการเข้าถึงrootบัญชีผ่านsudoหรือผ่านการเข้าสู่ระบบคอนโซล คอนโซลมักจะมีสถานที่พิเศษที่ฉลาดเป็นพิเศษเพราะคนที่เข้าถึงพวกเขาจำเป็นต้องมีการเข้าถึงทางกายภาพกับคอมพิวเตอร์ที่พวกเขาสื่อสารด้วย พวกเขายังเป็นวิธีการเข้าถึงสุดท้าย หากระบบปฏิบัติการอยู่ในสถานะเสียบางส่วน (เช่นไดรเวอร์อีเธอร์เน็ตเสีย) คุณยังคงสามารถเข้าถึงคอนโซลได้ มันเป็นอุปกรณ์อินเทอร์เฟซสำหรับมนุษย์ตัวหนึ่งที่ควรใช้งานได้เสมอไม่ว่าระบบจะอยู่ในสถานะใด
Omnifarious

@Omnifarious ขอบคุณสำหรับคำตอบของคุณ "คอนโซลมักจะมีสถานที่พิเศษที่ฉลาดเป็นคนที่เข้าถึงพวกเขาจำเป็นต้องมีการเข้าถึงทางกายภาพกับคอมพิวเตอร์ที่พวกเขาสื่อสารกับ" คุณหมายถึง TTY มักจะมีสถานที่พิเศษที่ฉลาด?
Webwoman

@Webwoman - ไม่คอนโซล TTY มักไม่ได้เชื่อมต่อกับคอมพิวเตอร์โดยตรง และคอนโซลมักไม่ใช่ TTY ในแง่ดั้งเดิม เมื่อฉันไปที่ U of MN ในช่วงปลายยุค 80 มีเครือข่ายเฉพาะวิทยาเขตที่ฉันไม่ได้ใช้ Internet Protocol (aka IP) สำหรับเชื่อมต่อ TTY แบบสุ่มกับคอมพิวเตอร์แบบสุ่ม IBM mainframes มีสิ่งที่คล้ายกันเกิดขึ้นและเป็นหนึ่งในเหตุผลใหญ่ที่ IBM สร้าง SNA และพีซีทั่วไปถึงแม้จะเป็นเพียงการแสดงข้อความเท่านั้นต่างจาก TTY ในหลาย ๆ ทางดังนั้นคอนโซล PC ไม่ใช่ TTY จริงๆ
Omnifarious

@Webwoman - คุณสมบัติการกำหนดของคอนโซลคือมันมีการเชื่อมต่อโดยตรงกับฮาร์ดแวร์ที่ใช้ระบบปฏิบัติการ ความคิดนี้ค่อนข้างคลุมเครือกับ 'เครื่องเสมือน' ที่ทันสมัย ​​แต่เป็นแนวคิดพื้นฐาน
Omnifarious

6

นอกเหนือจากคำตอบที่ได้รับการยอมรับและบทความดีทีทีdemystifiedฉันชอบอ่านบทความทั้งสองนี้จริงๆ:

อันนี้ขึ้นอยู่กับ NetBSD

ย้อนกลับไปในยุคหินของ Unix ระบบคอมพิวเตอร์ประกอบด้วยเมนเฟรมกล่องไฟกะพริบขนาดใหญ่ซึ่งมีหน่วยความจำหน่วยเก็บข้อมูลขนาดใหญ่และหน่วยคำนวณและกระบวนการที่เริ่มต้นโดยผู้ใช้หรือผู้ดำเนินการ เนื่องจากฮาร์ดแวร์มีราคาแพงมากระบบจึงถูกใช้เป็นระบบที่มีผู้ใช้หลายคนโดยหลายคนมีปฏิสัมพันธ์กับระบบในเวลาเดียวกัน สิ่งที่มันมักจะไม่มี - ซึ่งแตกต่างจากเวิร์กสเตชัน Unix ในปัจจุบันคือจอภาพและแป้นพิมพ์แบบคงที่ แต่การออกคำสั่งไปยังเครื่องและการดึงเอาท์พุททำได้ผ่านสายอนุกรมโดยใช้เครื่องโทรพิมพ์ก่อนและเทอร์มินัล CRT (หลอดแคโทดเรย์) Teletypers - นั่นคือสิ่งที่ "ttys" ใน Unix มาจาก - เป็นเครื่องพิมพ์ดีดอิเล็กทรอนิกส์ที่ส่งคีย์ที่กดข้ามสายอนุกรมไปยังโฮสต์

อันนี้ขึ้นอยู่กับ Linux

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


1

ให้ฉันหยุดที่นี้ ... ฉันจะใช้ Unix และ Linux มากหรือน้อยเหมือนกันในนี้ ถ้าฉันพูดถึงบางสิ่งบางอย่างที่มีมาก่อนประวัติศาสตร์ของลินุกซ์ฉันมักจะเขียน "Unix" และถ้าฉันกำลังพูดถึงบางสิ่งที่ใหม่กว่าหรือสิ่งที่เฉพาะกับรสชาติ Linux ของ Unix ฉันมักจะเขียน "Linux "

เปลือก

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

เชลล์ที่ใช้กันมากที่สุดใช้เทคนิคที่เรียกว่า 'command line' ซึ่งประกอบด้วยการส่งผู้ใช้บางประเภทของพรอมต์รอให้ผู้ใช้พิมพ์คำสั่งข้อความแล้วดำเนินการคำสั่งนั้น แต่มีเปลือกหอยที่มีเมนูเป็นหลักและแม้กระทั่งเปลือกหอยแบบกราฟิก (เช่น Windows File Explorer) แม้ว่าจะไม่มีบุคคล Unix ที่เคารพตนเองจะเรียกสิ่งนี้ว่า 'เชลล์'

ใน Unix ถ้ามีคนเรียกบางสิ่งบางอย่างว่า 'shell' พวกเขาเกือบจะหมายถึงอินเตอร์เฟสบรรทัดคำสั่งบางรูปแบบตามที่ฉันเพิ่งอธิบายไป และมันแปลกมากในโลกของ Unix ที่อ้างถึงสิ่งใด ๆ ในฐานะ 'shell' ถ้ามันไม่ได้สื่อสารกับผู้ใช้โดยใช้โมเดล tty ที่ฉันอธิบายเพิ่มเติม

TTY

นี่เป็นสิ่งที่สับสนเพราะสามารถอ้างถึงสิ่งต่าง ๆ ได้สองสามอย่าง

ใน Linux มีอุปกรณ์ชนิดหนึ่งที่เรียกว่า 'tty' เป็นอุปกรณ์นามธรรมที่คาดว่าจะใช้สำหรับการสื่อสารแบบสองทิศทางกับสิ่งที่เป็นผู้ใช้หรือกำลังรับข้อมูลจากผู้ใช้ในบางวิธี บางครั้งอุปกรณ์นามธรรมอาจตรงกับอุปกรณ์ทางกายภาพโดยตรง บางครั้งอาจเป็นโปรแกรมที่นำเสนอบางคนที่มีหน้าต่างซึ่งการสื่อสารปรากฏขึ้นและผู้ใช้สามารถพิมพ์ได้

แต่เหตุผลที่อุปกรณ์นามธรรมนี้มีอยู่และเหตุผลที่เรียกว่า 'tty' คือ 'tty' สั้นสำหรับ 'teletype' ซึ่งเป็นอุปกรณ์ทางกายภาพจริงที่มีเครื่องพิมพ์ที่พิมพ์บนกระดาษรวมกับแป้นพิมพ์ แบบจำลองอุปกรณ์นามธรรม 'tty' นำเสนอให้กับโปรแกรมที่ใช้งานโดยทั่วไปแล้วจะมีเครื่องโทรพิมพ์อยู่อีกด้านหนึ่ง คุณส่งตัวอักษรและตัวอักษรเหล่านั้นจะปรากฏบนโทรพิมพ์ เมื่อคุณอ่านตัวละครจากนั้นตัวละครเหล่านั้นจะเป็นตัวแทนของปุ่มที่พิมพ์บนแป้นพิมพ์

ttys ที่ใช้เครื่องพิมพ์กระดาษเก่าถูกแทนที่ด้วย ttys วิดีโออย่างรวดเร็ว แน่นอนว่าไม่มีกระดาษม้วน และในความเป็นจริงมันเป็นไปได้ที่จะเขียนทับตัวละครใด ๆ บนหน้าจอ แต่แทนที่จะแสดงอินเตอร์เฟซแบบ 'หน้าจอ' ที่เป็นนามธรรมไปยังโปรแกรมโปรแกรมจะถูกคาดหวังให้ส่งสตรีมพิเศษของตัวละครที่เรียกว่าลำดับเอสเคป มักจะมีสิ่งที่เป็นนามธรรมที่เรียกว่า 'เคอร์เซอร์' ที่สามารถย้ายไปรอบ ๆ หน้าจอและตัวละครใด ๆ ที่ส่งจะแทนที่สิ่งที่อยู่ที่เคอร์เซอร์และเคอร์เซอร์จะย้ายตัวละครตัวหนึ่งต่อไป บ่อยครั้งที่คุณสามารถเปลี่ยนสีของตัวละครที่กำลังจะพิมพ์ด้วยลำดับการหลีกเลี่ยงได้เช่นกัน

มี 'แก้ว ttys' ที่ไม่เป็นไปตามรุ่นนี้และดังนั้นจึงมีการจัดการที่ไม่ดีในโลก Unix เทอร์มินัลวิดีโอตระกูล IBM 3270 อยู่ในหมวดหมู่นี้

สิ่งที่คน Linux / Unix มักเรียกว่า 'หน้าต่างเปลือกหอย' เป็นการจำลองแบบ tty แบบแก้วโดยใช้ส่วนต่อประสานผู้ใช้แบบกราฟิก ภายในโปรแกรมที่ทำงานภายในหน้าต่างเชลล์กำลังพูดคุยกับอุปกรณ์ tty เสมือนที่บางครั้งเรียกว่า pseudo-tty หรือ pseudo-terminal (aka a pty)

สถานีปลายทาง

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

ปลอบใจ

คอนโซลเป็นเทอร์มินัลชนิดพิเศษที่โดยทั่วไปควรเชื่อมต่อกับฮาร์ดแวร์ที่ระบบปฏิบัติการกำลังทำงานอยู่

ใน Linux คอนโซลเสมือนจริงในวิธีเล็ก ๆ ซึ่งช่วยให้คุณใช้การกดแป้นพิมพ์พิเศษเพื่อสลับระหว่างคอนโซลเสมือน แต่การทำเวอร์ช่วลไลเซชั่นนี้ทำด้วยฮาร์ดแวร์ชิ้นส่วนจริงโดยซอฟต์แวร์ในเคอร์เนล

มีวิธีใช้ Linux ผ่านสิ่งที่เรียกว่า 'serial console' ซึ่งเป็นคอนโซลที่เชื่อมต่อกับคอมพิวเตอร์ผ่านทางพอร์ตอนุกรมเช่นพอร์ต USB (หรือในคอมพิวเตอร์ขนาดเล็กมากและ / หรือเก่ามากพอร์ต RS-232 บางชนิด) และติดตามรุ่นโทรพิมพ์เก่าอย่างเข้มงวด

อีกแนวคิดคือคอนโซลนี้เชื่อมต่อในลักษณะทางกายภาพโดยตรงกับคอมพิวเตอร์แทนที่จะผ่านเครือข่ายบางประเภทที่อาจอนุญาตให้ทุกคนเชื่อมต่อ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.