ฉันกำลังซื้อ iMac ฉันทำงานกับ Linux มาเป็นเวลานานและฉันก็ใช้สคริปต์ทุบตี ฉันสงสัยว่าคำสั่ง bash และคุณสมบัติทั้งหมดนั้นมีใน Mac OS หรือไม่? ใครบ้างมีประสบการณ์กับการเขียนสคริปต์ทุบตี Mac? ฉันขอขอบคุณที่คุณป้อนข้อมูล
ฉันกำลังซื้อ iMac ฉันทำงานกับ Linux มาเป็นเวลานานและฉันก็ใช้สคริปต์ทุบตี ฉันสงสัยว่าคำสั่ง bash และคุณสมบัติทั้งหมดนั้นมีใน Mac OS หรือไม่? ใครบ้างมีประสบการณ์กับการเขียนสคริปต์ทุบตี Mac? ฉันขอขอบคุณที่คุณป้อนข้อมูล
คำตอบ:
Bash นั้นส่วนใหญ่แล้วจะเหมือนกัน จะมีความแตกต่างเล็ก ๆน้อยๆแต่สิ่งเหล่านี้จะไม่มีผลต่อการพกพาของสคริปต์ของคุณ
ปัญหาที่สำคัญคือ coreutils ของ MacOS นั้นใช้ FreeBSD ในขณะที่ยูทิลิตี้ที่คุณคุ้นเคยมักจะมาจากโครงการ GNU coreutils FreeBSD นั้นไม่สามารถใช้งานร่วมกับ coreutils ของ GNU ได้เสมอไป มีประสิทธิภาพการทำงานและพฤติกรรมแตกต่างระหว่าง GNU และ FreeBSD รุ่นมีsed , grep , PSและสาธารณูปโภคอื่น ๆ
คุณสามารถติดตั้ง GNU coreutils แต่มีg-
คำนำหน้า (เช่นgcat
สำหรับcat
) มันไม่ได้เป็นความคิดที่ดีที่จะเปลี่ยน coreutils MacOS กับ coreutils GNU
หากมีความสำคัญbash
บน Mac OS X Mountain Lion ยังคงเป็นเวอร์ชัน 3.2 การแจกแจงลินุกซ์ส่วนใหญ่ในวันนี้จะมาพร้อมกับ 4.x ดังนั้นคุณจะพลาดฟีเจอร์เวอร์ชัน 4 ในปัจจุบันเวอร์ชัน 4.2.45 พร้อมใช้งานจาก Homebrew เป็นวิธีแก้ปัญหา ฉันไม่ทราบว่ามีเวอร์ชันใดใน Mavericks ฉันไม่แน่ใจว่าใครที่รู้จะได้รับอนุญาตให้พูด
ดังที่คนอื่นพูดถึงbash
เป็นคนเดียวกันbash
(นอกเหนือจากรุ่นที่ระบุไว้แล้ว) แต่ Mac OS X ใช้ userland BSD เป็นส่วนใหญ่ ระบบสาธารณูปโภคมาตรฐานจำนวนมากมีตัวเลือกแตกต่างกันเล็กน้อยหรือทำงานแตกต่างกันเล็กน้อย น่าเสียดายที่พวกเขามีรายชื่อมากเกินไปที่นี่
ติดตั้งhomebrew (ตัวจัดการแพ็กเกจ) จากนั้นติดตั้งยูทิลิตี้พื้นฐานบางเวอร์ชัน gnu:
$ brew install coreutils
$ brew install gnu-sed
หลังจากการติดตั้งแต่ละครั้งมันจะแสดงขั้นตอนที่คุณสามารถทำตามเพื่อให้คุณสามารถโทรออกdate
แทนgdate
ตัวอย่างเช่นเพื่อให้คุณยังคงสามารถใช้สคริปต์ทุบตี Linux ของคุณโดยไม่มีการดัดแปลงใด ๆ
ขอแสดงความยินดีคุณเพิ่งแก้ไขปัญหาการเขียนสคริปต์ข้ามแพลตฟอร์มได้ 99%
สิ่งหนึ่งที่น่าผิดหวังที่มาจาก Linux กับ Mac คือไม่มี/proc
ระบบไฟล์หลอก สิ่งนี้ทำให้สคริปต์ Linux ของฉันเสียหายจำนวนหนึ่งและอาจเป็นเรื่องยากที่จะหาวิธีที่เหมาะสมในการรับข้อมูลเดียวกับที่คุณพบในproc
สคริปต์ทุบตี Mac ของคุณ
ฉันเป็นผู้ใช้ 'ส่วนใหญ่ Linux, mac เป็นครั้งคราว' และฉันพบว่า
ทุบตี~/.bashrc
และ~/.bash_aliases
ทำงานส่วนใหญ่เหมือนกัน
ปัญหาหนึ่งที่ฉันได้พบคือหนึ่งในคำสั่งเพื่อเปลี่ยนพรอมต์สีไม่ทำงานบน Mac จากประสบการณ์นั้นและอื่น ๆ ฉันได้เรียนรู้ที่จะทำให้หน้าต่างเทอร์มินัลเปิดและเข้าสู่ระบบเมื่อตั้งค่า.bashrc
ไฟล์ของฉัน นั่นคือฉันสามารถทดสอบ 'หน้าต่างใหม่' และค้นหาข้อผิดพลาดใด ๆ ในการเข้าสู่ระบบยังคงอยู่ในหนึ่ง
ps
มีค่าสถานะแตกต่างกันเช่นเดียวกับgrep
) ฉันกระแทกหัวของฉันกับกำแพงสองสามครั้งพยายามที่จะคิดออกว่าทำไมสคริปต์ Ubuntu ของฉันไม่ได้สร้างผลลัพธ์เดียวกันบน Mac ของฉัน