บรรทัดคำสั่งของ Mac เปรียบเทียบกับ Linux อย่างไร


30

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

การรู้ว่า Mac สร้างขึ้นบน Unix ทำให้ฉันสงสัยว่ามันเป็นจุดที่น่าสนใจระหว่างพวกเขาหรือไม่ แต่ฉันสงสัยว่า: บรรทัดคำสั่ง Mac คล้ายกับทุบตีของ Linuxอย่างไร ฉันสามารถเลือกใช้ vim และ bash scripting และ git ได้หรือไม่? คำสั่งทั่วไปเช่นการเปลี่ยนไดเรกทอรีจะแตกต่างกันหรือไม่? ไม่มีใครรู้ว่าทรัพยากร "เปรียบเทียบและเปรียบเทียบ" แบบออนไลน์หรือไม่


คำตอบ:


11

Bash คือทุบตีดังนั้นเชลล์และบิวด์อินจึงเหมือนกัน แต่โปรดทราบว่าพฤติกรรมของเครื่องมือบางอย่างเช่นpsหรือheadอาจแตกต่างกันในรายละเอียดดังนั้นสคริปต์ของคุณอาจล้มเหลว


5
โปรดจำไว้ว่านี่ไม่ใช่ปัญหาของ Mac vs. Linux มากนักแทนที่จะใช้ unix หลายรสชาติทำสิ่งที่แตกต่างกันเล็กน้อย คุณจะพบความเหมือนเดิม (แตกต่างกันมากขึ้น) ระหว่าง Linux และ HP-UX
KeithB

2
คุณสามารถสร้างมาตรฐานบนชุดเครื่องมือ gnu binutils ข้าม linux และ OSX ทั้ง Macports และ homebrew จะติดตั้งบน OSX อย่างน้อยก็จะทำให้ได้มาตรฐานเช่น ls / tar / etc ps ยังขึ้นอยู่กับระบบปฏิบัติการ
skarface

ด้วยfile: file -iบน linux ขณะfile -Iอยู่ใน osx ☹️
Anthony Kong

30

Mac OS X เป็น Unix OS และบรรทัดคำสั่งของมันคือ 99.9% เหมือนกับการกระจาย Linux ใด ๆ bashเป็นเชลล์เริ่มต้นของคุณและคุณสามารถรวบรวมโปรแกรมและยูทิลิตีเดียวกันทั้งหมดได้ ไม่มีความแตกต่างที่น่าสังเกต คุณยังสามารถค้นหาโครงการต่าง ๆ เช่น MacPorts ซึ่งให้การจัดการแพ็คเกจสำหรับ Mac


1
+1: ข้างต้นเป็นจริง คุณอาจจำเป็นต้องคำนึงถึงสภาพอากาศ mac ของคุณใช้ intel หรือโปรเซสเซอร์ powerpc เมื่อมันมาถึงการรวบรวมรหัสหรือการใช้แพคเกจที่สร้างไว้ล่วงหน้าฉันเข้าใจว่า macs ใหม่เป็นเพียง intel แต่ฉันอาจจะผิด typo @ w0rm: การจัดการแพ็คเกจ * :-)
Sirex

2
แม้ว่าสคริปต์ของคุณอาจทำงานได้ทั้ง Mac และ Linux แต่ก็ควรทดสอบสคริปต์เหล่านี้บนทั้งสองแพลตฟอร์มเสมอ ฉันเห็นความแตกต่างเล็กน้อย (บอบบาง) ระหว่างการแจกแจงลินุกซ์และแม้แต่ระหว่างเวอร์ชั่นต่าง ๆ ของลินุกซ์รุ่นเดียวกัน
Roalt

1
FeeBSD เป็นที่แน่นอน
digitxp

6
@digit นั้นต้องเป็นรุ่น BSD ที่คิดค่าใช้จ่ายหรือไม่ s / F / Fr /;)
John T

18
99.9% ไม่ถูกต้อง OS X เป็นตัวแปร BSD และไม่มียูทิลิตี้ GNU คุณสามารถติดตั้งได้ตลอดเวลา แต่มีคำสั่งมากมายที่มีตัวเลือกต่าง ๆ เป็น Unix แต่ไม่ใช่ Linux
Matteo

12

มันคล้ายกันมาก แต่ถ้าคุณรู้ถึงความแตกต่างของ BSD v. Linux คาดว่า Mac จะมีพฤติกรรม BSD


น่าสนใจ คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับเรื่องนั้นได้ไหม? ทำไมถึงเป็นอย่างนั้น?
fat_mike

@fat_milke เนื่องจาก OSX ใช้ยูทิลิตี้ BSD ไม่ใช่ GNU ซึ่ง Linix ใช้
user151019

b / c Mac OSX ที่ได้มาจากเคอร์เนล * nix (NeXTSTEP จาก BSD) ที่แยกออกจาก Unix ก่อนหน้านี้กว่า Linux ดังนั้นจึงมีการใช้งานที่แตกต่างกันเล็กน้อยของอุปกรณ์บางอย่าง ดูen.wikipedia.org/wiki/MacOS
Nietzsche


9

สิ่งที่สอง - มันขึ้นอยู่กับสิ่งที่คุณหมายถึงโดยบรรทัดคำสั่ง

  1. คุณอาจใช้ bash ซึ่งจะเหมือนกับ bash ใน UNIX อื่น ๆ ภาษาการเขียนโปรแกรม bash จะเหมือนกันเช่นกัน - ตราบใดที่เป็นเวอร์ชั่นเดียวกัน เวอร์ชั่นทุบตีมีความแตกต่างกันเล็กน้อยในภาษา แต่สิ่งนี้ไม่เกี่ยวข้องกับ MacOSX กับ Linux ต่อ se

คุณอาจชนกับสิ่งนี้ - / bin / bash บน Mac นั้นถูกตรึงไว้ที่ 3.x ด้วยเหตุผลด้านลิขสิทธิ์ คุณอาจพบปัญหาความเข้ากันได้เล็กน้อยหากคุณคุ้นเคยกับ 4 หรือ 5

  1. bash โดยตัวมันเองเป็นชุดย่อยของ 'command line' เพื่อให้มีประโยชน์คุณมักจะใช้ยูทิลิตี UNIX ทั่วไปอื่น ๆ เช่น awk หรือ ls หรือ cut เนื่องจากประวัติของมัน (สืบทอดมาจาก BSD ไม่ใช่ Linux หรือ SystemV) ยูทิลิตี้รุ่น Mac จะแตกต่างจากรุ่นที่คุณคุ้นเคยบน Linux (รุ่น GNU) สิ่งเหล่านี้จะมีความแตกต่างของค่าสถานะอย่างน้อยที่สุดและความแตกต่างของเอาต์พุตและการทำงานบางอย่างกว่า Linux สคริปต์ที่ใช้สิ่งเหล่านี้จะต้องมีการเปลี่ยนแปลงเพื่อชดเชย BSD awk vs GNU gawk นั้นค่อนข้างแตกต่างกัน หรือคุณสามารถรับ GNU เวอร์ชันเหล่านี้จาก macports หรือ home brew และตั้งค่า PATH ของคุณเพื่อให้เป็นค่าเริ่มต้น

  2. MacOS X ยังมีเครื่องมือเจ๋ง ๆ ใหม่ ๆ openดีมากมันจะเปิดวัตถุราวกับว่าคุณดับเบิลคลิก defaultsอนุญาตให้คุณตั้งค่าบางอย่างบางอย่างไม่ได้อยู่ในพาเนลการกำหนดค่าตามความชอบ GUI textutilมีประโยชน์และsayสนุก


3

ฟังก์ชันบรรทัดคำสั่งบน Mac และ Linux นั้นคล้ายกันกับ OS X มีรสชาติของ UNIX (เรียกว่าดาร์วิน) ภายใต้ GUI ที่คุณเห็น

เชลล์เริ่มต้นบน OS X คือทุบตีดังนั้นถ้าคุณคุ้นเคยกับสิ่งนั้น

บน Mac แอปพลิเคชันบรรทัดคำสั่งเริ่มต้นคือ Terminal นอกจากนี้ยังมีอีมูเลเตอร์อื่น ๆ อีกจำนวนหนึ่งออกมา แต่เทอร์มินัลโดยรวมจะให้ความรู้สึกและความรู้สึกคล้ายกับเชลล์ที่คุณคุ้นเคยใน Linux

แหล่งที่มาหลักของความแตกต่างคือ:

  • อาร์กิวเมนต์บรรทัดคำสั่งที่แตกต่างกันในบางครั้ง (ดูduตัวอย่าง) คำสั่งหลักเช่นcdหรือlsอื่น ๆ ที่คล้ายกัน
  • มีส่วนต่าง ๆ ของ OS X ที่ไม่ควรแก้ไขด้วยมือเหมือนที่คุณทำใน Linux นี่เป็นหัวข้อของตัวเอง แต่เพิ่งทราบว่าการใช้งาน Mac นั้นไม่เหมือนกับการใช้งานกล่อง Linux ในแง่ของการกำหนดค่าและการบำรุงรักษา

ที่ถูกกล่าวว่ายังมีแฮ็คเด็ด ๆ อีกมากมายที่พร้อมใช้งานจากบรรทัดคำสั่งใน OS X (เช่นopencommnand) มีกระทู้และบล็อกโพสต์ก่อนหน้านี้มากมายพร้อมข้อมูลเพิ่มเติม

คุณสามารถใช้แพ็คเกจโอเพนซอร์สมากมาย(เช่นgit, hgฯลฯ ) ผ่าน MacPorts, Fink หรือระบบการจัดการแพ็กเกจอื่น ๆ สำหรับ OS X นอกจากนี้คุณยังสามารถสร้างแพ็คเกจซอร์สอื่น ๆ สำหรับ UNIX / Linux เช่นระบบตามความจำเป็น .


0

นี่คือความแตกต่างอย่างหนึ่ง ลองใช้คำสั่งนี้ทั้งใน Mac และ Linux bash shell

find /etc -name "*.conf"

Mac ไม่แสดงอะไรเลยแม้ว่าจะมีไฟล์. config อยู่ภายใน / etc จำนวนมาก


1
บางทีคุณอาจบอกคนอื่นได้ว่าทำไมถึงเป็นเช่นนี้
Mads

1
ไม่แน่ใจบางทีมันอาจจะเกี่ยวข้องกับการขยายชื่อพา ธ ใน POSIX คำสั่งนี้ใช้งานfind /etc/* -name "*.conf"ได้ อย่างไรก็ตามมันถูกจัดเตรียมไว้เป็นตัวอย่างเพื่อตัดกันบรรทัดคำสั่ง MAC กับบรรทัดคำสั่ง LINUX ไม่สามารถให้เหตุผลในการลงคะแนน -ve
แอนโทนีโทมัส

4
นั่นเป็นเพราะ / etc บน OSX เป็นลิงค์สัญลักษณ์ หากคุณลองfind /etc/ -name "*.conf"ระบุว่า / etc เป็นไดเรกทอรีแทนไฟล์ ไม่findอยู่ในลินุกซ์รักษาเชื่อมโยงสัญลักษณ์ไปยังไดเรกทอรีไดเรกทอรีโดยค่าเริ่มต้น?
MechEthan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.