เป็นไปได้หรือไม่ที่จะรับชุดตัวเลือก unix เต็มรูปแบบสำหรับเครื่องมือบรรทัดคำสั่งใน OS X


14

ฉันติดตามUnix Tool Tipบน Twitter และเป็นที่น่าสนใจว่าเคล็ดลับมากมายที่โพสต์ไม่สามารถใช้ได้ใน OS X

ตัวอย่างเช่น:

cp - u จะคัดลอกไฟล์ที่ไม่มีอยู่หรือใหม่กว่าไฟล์ที่มีอยู่ในไดเรกทอรีปลายทาง

ลองใช้สิ่งนี้กับเครื่องของฉันผลลัพธ์:

cp: illegal option -- u
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
   cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory  

เหตุใดตัวเลือกเหล่านี้จึงไม่มีให้บริการและเป็นไปได้ที่จะเข้าถึงตัวเลือกเหล่านี้ใน OS X


นอกจากนี้คุณยังสามารถติดตั้งหา sed และ awk brew install coreutils findutils gnu-sed gawkกับ ดูapple.stackexchange.com/questions/69223/… .
Lri

คำเตือน: หากคุณติดตั้งและใช้เครื่องมือ cli เวอร์ชัน GNU คุณจะได้รับส่วนขยายของ GNU แต่คุณจะสูญเสียส่วนขยายในเครื่องมือเวอร์ชันของ OS X ด้วย ตัวอย่างเช่นคำสั่ง cp ใน coreutils ของ homebrew (ตั้งชื่อgcpเพื่อหลีกเลี่ยงความสับสน) ไม่ทราบวิธีการคัดลอกข้อมูลเมตาที่ซับซ้อนที่ไฟล์ OS X สามารถมีได้ (attrs ขยาย ฯลฯ ) ดังนั้นหากคุณใช้gcpไฟล์ alias สำเนาจะขาดข้อมูลสำคัญและจะไม่ทำงาน
Gordon Davisson

@GordonDavisson ขอบคุณสำหรับหัวขึ้น นั่นคือ. ไฟล์ที่เพิ่มเข้าไปในไดเรกทอรีของฉันทั้งหมดหรือไม่ ฉันคิดว่าอาจจะเป็น
ข้อได้เปรียบ

@KennyPeanuts: คุณหมายถึงไฟล์. DS_Store หรือไม่ มันคล้ายกัน แต่ไม่ใช่สิ่งที่ฉันกำลังพูดถึง (และgcp -Rจะคัดลอกมันไปพร้อมกับทุกสิ่ง) ถ้าคุณหมายถึง._somefilenameนั่นเป็นไฟล์ AppleDouble ที่ใช้ในการจัดเก็บข้อมูลเมตา (ข้อมูลที่ฉันกำลังพูดถึง) ในหนังสือต่างประเทศบางประเภทซึ่ง ... ซับซ้อน ...
Gordon Davisson

@GordonDavisson ขอบคุณสำหรับการชี้แจง มันคือไฟล์. _omefilename ที่ฉันกำลังพูดถึง
DQdlM

คำตอบ:


12

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

นี่คือ homebrew - http://mxcl.github.com/homebrew/
นี่คือเรื่องราวที่ยาวนาน - /superuser/476575/replace-os-xs-shell-commands-with-the-linux-versions/ 476594 # 476594


ตัวอย่างของสภาพแวดล้อมเช่น [Homebrew] ( http://mxcl.github.com/homebrew/ ) ซึ่งตัวอย่างมี GNU sedเหนือสิ่งอื่นใด เมื่อคุณติดตั้ง Homebrew แล้วคุณสามารถพิมพ์

brew install coreutils

และติดตั้งGNU coreutils เหล่านี้จะช่วยให้คุณมีsed, date, printf, wcและเครื่องมืออื่น ๆ อีกมากมายที่มาพร้อมกับ GNU / Linux แต่ไม่ OS X ได้อย่างไรก็ตามเพื่อไม่ให้ "แทนที่" เริ่มต้น OS X ไบนารีที่พวกเขาจะนำหน้าด้วยgโดยปริยาย ดังนั้นหลังจากติดตั้ง Coreutils แล้วหากคุณต้องการใช้ GNU sed ให้พิมพ์

gsed

ถ้าเป็นแบบนี้มากเกินไปของการทะเลาะพิมพ์ทุกครั้งที่คุณสามารถเพิ่ม "gnubin directory" เพื่อเส้นทางของคุณและเพียงโทร GNU sed sedกับ คุณจะต้องเพิ่มสิ่งต่อไปนี้ใน~/.bash_profile:

PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"


จะติดตั้งโดยใช้portหรือไม่?
Adil Soomro

1
@AdilSoomro macports.orgเป็นเครื่องมือที่มีชื่อเสียงมายาวนาน ฉันไม่เห็นเหตุผลที่จะไม่ลองเลย - ฉันไม่มีประสบการณ์และใช้และมีส่วนร่วมกับโฮมบรูว์
bmike

3

เหตุผลก็คือ OSX ใช้เครื่องมือบรรทัดคำสั่ง BSD และผู้ใช้เคล็ดลับเครื่องมือ Unix อาจใช้ Linux ซึ่งใช้เครื่องมือบรรทัดคำสั่ง GNU

คุณสามารถติดตั้งเครื่องมือ GNU บน OSX (และ BSD บน Linux)

วิธีที่ง่ายที่สุดคือใช้ตัวจัดการแพ็คเกจเช่น Macports, Homebrew หรือ Fink

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