เชลล์, คอนโซลและเทอร์มินัลต่างกันอย่างไร?


188

ฉันสับสนกับคำศัพท์ เชลล์, คอนโซลและเทอร์มินัลต่างกันอย่างไร?


8
และสิ่งที่เกี่ยวกับpromptและแม้กระทั่งcommand line?
n611x007

1
ดูคำถามนี้จาก Unix & Linux: unix.stackexchange.com/questions/4126/…
Flimm

4
ภรรยาของฉันพูดว่า "จอดำ"
Kenji Noguchi

คำตอบ:


168

ในโลก linux พวกเขาทุกคนสามารถดูเหมือนกันจากมุมมองของผู้ใช้ที่แป้นพิมพ์ ความแตกต่างคือวิธีที่พวกเขามีปฏิสัมพันธ์ซึ่งกันและกัน

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

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

คอนโซลเป็นประเภทพิเศษของสถานี ในอดีตคอนโซลเป็นเพียงแป้นพิมพ์เดียวและจอมอนิเตอร์เสียบเข้ากับพอร์ตคอนโซลแบบอนุกรมเฉพาะบนคอมพิวเตอร์ที่ใช้สำหรับการสื่อสารโดยตรงในระดับต่ำกับระบบปฏิบัติการ ระบบลินุกซ์โมเดิร์นให้คอนโซลเสมือน สิ่งเหล่านี้เข้าถึงได้จากการรวมกันของคีย์ (เช่นAlt+ F1หรือCtrl+ Alt+ F1, หมายเลขฟังก์ชั่นของคอนโซลที่แตกต่างกัน) ซึ่งได้รับการจัดการในระดับต่ำของระบบปฏิบัติการลินุกซ์ - ซึ่งหมายความว่าไม่มีบริการพิเศษที่ต้องติดตั้งและกำหนดค่า . การโต้ตอบกับคอนโซลทำได้โดยใช้โปรแกรมเชลล์


1
ก่อนที่เทอร์มินัลจะเป็นจอภาพที่มีแป้นพิมพ์พวกเขาคือสายพิมพ์ - เครื่องพิมพ์ดีดไฟฟ้า en.wikipedia.org/wiki/Teleprinter
Kevin Panko

13
บางครั้งคอนโซลหมายถึง "แป้นพิมพ์และจอมอนิเตอร์ที่ต่ออยู่กับคอมพิวเตอร์เครื่องนี้" เช่น "ฉันเข้าสู่ระบบจากคอนโซลเพราะเซิร์ฟเวอร์ไม่ตอบสนองต่อเครือข่าย"
Kevin Panko

1
@Doug Harris: คุณสามารถเพิ่มรูปภาพของฮาร์ดแวร์ที่คุณกำลังพูดถึงได้ไหม?
กรงเล็บ

1
เมื่อฉันอยู่ในวิทยาลัยในช่วงปลายทศวรรษที่ 1980 ฉันทำงานหลายอย่างบนเทอร์มินัล DEC VT220 - en.wikipedia.org/wiki/VT220 - นั่นเป็นตัวอย่างที่ดีของอุปกรณ์ทางกายภาพที่ฉันอธิบาย
Doug Harris

5
ดังนั้นหากเทอร์มินัลและคอนโซลในยุคปัจจุบันแต่ละการใช้งานในซอฟต์แวร์ - สิ่งที่แตกต่างระหว่างสอง (ตอนนี้) คืออะไร?
Gavin Hope

15

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

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

เทอร์มินัลเดิมเป็นฮาร์ดแวร์ที่ใช้ในการสื่อสารกับคอมพิวเตอร์ ทุกวันนี้มันมักจะอ้างถึงหน้าต่างที่มีบรรทัดคำสั่ง (เชลล์) ซึ่งอาจปรากฏในหน้าต่าง GUI หรือแทนที่จะเป็น GUI


2

เทอร์มินัลเป็นอินเตอร์เฟสแบบข้อความ (อาจเป็นเชลล์)

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

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

คุณสามารถใช้ขั้วในการโต้ตอบกับเปลือก แต่คุณยังสามารถใช้ในการโต้ตอบกับGUI ข้อความตามบางครั้งเรียกว่าUser Interface แบบเทอร์มิ ตัวอย่างเช่น:

  • Vimมีองค์ประกอบ GUI รวมถึงหมายเลขบรรทัดและแท็บที่มีชื่อ
  • Nanoมีองค์ประกอบ GUI รวมถึงเมนูช่วยเหลือของคำสั่ง
  • Tmuxมีองค์ประกอบ GUI รวมถึงแถบสถานะและเส้นแบ่งระหว่างบานหน้าต่าง
  • Minicomมีองค์ประกอบ GUI รวมถึงเมนูและแถบสถานะ

ในแต่ละกรณีองค์ประกอบ GUI จะ "วาด" ด้วยข้อความแทนที่จะเป็นพิกเซล


ฉันไม่แน่ใจเกี่ยวกับคำจำกัดความนี้ว่าเป็นเพียงข้อความที่อ้างอิง ในบางวิธี GUIs อาจถูกพิจารณาว่าเป็นเทอร์มินัล imo
jiggunjer

2

สำหรับผู้เริ่มต้นเริ่มต้น

สำหรับคำอธิบายโดยละเอียดเพิ่มเติม: https://askubuntu.com/a/506628/130518

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

ฉันจะอธิบายกรณีการใช้งานที่ปกติที่สุดสำหรับสิ่งนี้ในข้อความต่อไปนี้

เทอร์มินัลใช้เชลล์ เชลล์สามารถรันได้โดยไม่มีเทอร์มินัล

ในการเกี่ยวข้องกับรายการในชีวิตประจำวัน:

  • Terminal -> หน้าจอทีวีในบ้านของคุณ
  • Shell -> โปรแกรมที่ทำงานบนหน้าจอทีวี

อีกวิธีในการมอง: หูของคุณ (อินพุต) และปาก (เอาต์พุต) เป็นขั้วเสียง สมองของคุณเป็นล่ามของเสียงเหล่านั้นโดยใช้เปลือกเฉพาะ (การประมวลผล)

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

ตัวอย่างบางส่วนของเทอร์มินัลที่มีอยู่:

  • พร้อมรับคำสั่ง
  • guake
  • คำพังเพยขั้ว
  • เทอร์มิ

ตัวอย่างหอยที่มีอยู่:

  • ทุบตี
  • sh (เชลล์เป้าหมาย)
  • PowerShell [windows]
  • zsh (เปลือก Z)

ฉันเขียนเฉพาะวิธีที่ทั้งสองทำงานได้ตามปกติมีวิธีอื่นที่ใช้งานได้ แต่สำหรับผู้ใช้ขั้นสูงกว่า


1

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

คุณสามารถใช้โปรแกรมแก้ไข, vim, gedit, emacs, notepad ++, Netbeans, eclise etc.etc ที่คุณต้องการ แต่ในตอนท้ายพวกมันเป็นเครื่องมือต่าง ๆ : ถ้าคุณเขียนโปรแกรมเดียวกันผลลัพธ์จะเหมือนกัน
ในคำอุปมานี้เชลล์คือคอมไพเลอร์ คำสั่งที่ป้อนเข้าสู่เทอร์มินัลจะถูกส่งไปยังเชลล์ที่ตีความคำสั่งเหล่านั้นและดำเนินการทันที
ดังนั้นในขณะที่เทอร์มินัลเป็นเพียงส่วนหน้าสำหรับเชลล์เชลล์มีภาษาจริงตามที่เกิดขึ้นกับคอมไพเลอร์

เห็นได้ชัดว่าเทอร์มินัลไม่ได้เป็นโปรแกรมแก้ไขข้อความส่วนใหญ่เป็นเพราะมันไม่ได้ผลิตไฟล์ แต่ส่งข้อความไปยังเปลือกพื้นฐานและดึงเอาท์พุทจากมัน

และเชลล์ไม่ใช่คอมไพเลอร์จริงๆแล้วมันตีความคำสั่งของคุณและดำเนินการทันทีแทนที่จะสร้างไฟล์ที่เรียกใช้งานได้

แม้แต่เล็กน้อยที่ต่างกันมากฉันก็พบคำอุปมานี้เพื่อช่วยทำความเข้าใจแนวคิดนี้เป็นอย่างมาก


0

มีความแตกต่างไม่มาก ย้อนกลับไปเมื่อ "shell" เป็นโปรแกรม "terminal" เป็นส่วนเสริมของโปรแกรมนี้และ "console" คือการเชื่อมต่อทางกายภาพกับคอมพิวเตอร์ (แป้นพิมพ์ / หน้าจอ)

มีความแตกต่างขึ้นอยู่กับระบบปฏิบัติการที่คุณใช้ เชลล์ "มาตรฐาน" คือBASHซึ่งโดยปกติจะมีอยู่ในทุกรสชาติของ Linux / Unix Windows ใช้เชลล์ที่แตกต่างอย่างสิ้นเชิง

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