สำหรับงาน Mac ประจำวัน GUI ที่นุ่มนวลเป็นทั้งประโยชน์และสะดวกสบาย แต่บางครั้ง Finder เป็น middleman ที่อึดอัด
มีวิธีเร็วกว่าหาไฟล์ 5GB ที่ซ่อนอยู่ หรือ path ของทุกไฟล์เกี่ยวกับแอปที่คิดว่าลบแล้ว งานแบบนี้ command line เป็นเพื่อนสนิท
Terminal คืออะไร?
Terminal = utility โต้ตอบกับ Mac ผ่าน command line Linux มีเครื่องมือคล้ายกัน เพราะ Linux และ macOS เป็น Unix-like OSes ภาษาที่พิมพ์ใน Terminal เรียกว่า bash — ทุกอย่างด้านล่างคือคำสั่ง bash
ก่อนเริ่ม ให้ปรับแต่ง Terminal ตามชอบ ได้ถึง download ตัวเลือกภายนอกสำหรับลุคแบบกำหนดเอง
เคล็ดลับ command line Mac ทั่วไป
Syntax ทั่วไป
คำสั่ง bash ปกติเป็นรูปแบบ:
[Command] [Options] [Input or Path to File or Directory]
ตัวอย่าง: ls -la /Applications
ls= command-la= compound ของ 2 options (-lและ-a)/Applications= path ที่จะ list
The Path (พาธ)
เข้าใจ path = เข้าใจว่า macOS มองไฟล์อย่างไร path ของไฟล์ = ตู้นกฮีบรูสของโฟลเดอร์ที่ครอบมัน + ชื่อไฟล์เอง
ตัวอย่าง: ไฟล์ My Secrets บน Desktop ของ user John Doe path = /Users/jdoe/Desktop/"My Secrets"
White Space (ช่องว่าง)
ต้อง escape white space เพื่อให้ Terminal ประมวลผลถูกต้อง bash เห็น space = จบคำสั่ง ถ้าโฟลเดอร์มี space เช่น Path Test พิมพ์ ls /Applications/Path Test จะ error — bash คิดว่าเรียก ls บน /Applications/Path ไม่เจอ จึงหยุด
แก้: ห่อชื่อใน quotes หรือ backslash:
ls /Applications/"Path Test"ls /Applications/Path\ Test
Sudo
คำสั่งหลายตัวต้องการสิทธิ์แอดมิน ถ้าไม่ได้ login เป็นแอดมิน แต่รู้รหัสผ่าน ให้วาง sudo (ย่อมาจาก "single user do") หน้าคำสั่ง — ให้สิทธิ์แอดมินชั่วคราว
คำสั่ง Terminal ปรับปรุง Workflow
รู้พื้นฐานแล้ว มาดูคำสั่งที่มีประโยชน์มาก ดูรายละเอียดเต็มรูปแบบ (options, examples) ได้ด้วย man <command name>
find
- แทนที่: Spotlight
- ดีกว่าที่ไหน: เร็วกว่า ค้นหา system folders ที่ Spotlight ข้ามหรือ index ไม่ได้
Spotlight ข้าม system files ของ macOS ถ้าไม่บอก และแม้บอกก็ index ไม่ได้ดี คำสั่ง find ค้นหาอะไรก็ได้ ทุกที่ และแสดง full path
Syntax ของ find 4 ส่วน:
- find
- path ของโฟลเดอร์ที่จะค้น (
/Applications) - options (ตัวอย่างมี
-name= ค้นหาไฟล์ที่ match ชื่อ) - string ที่จะค้น (
Google Chrome)
find ใช้ regex (regular expressions) อธิบายเต็มๆ ยาวเกินไป แต่ตัวอย่างนำเสนอ concept สำคัญ: asterisk (*) = wildcard character
วาง * หน้าและท้าย string = find จะ output ผลที่มีตัวอักษรก่อน/หลัง search term — Google Chrome จะเจอ Google Chrome.app
รวมกัน: find /Applications -name "*Google Chrome*"
du (disk usage)
- แทนที่: Cmd + I ดู info
- ดีกว่าที่ไหน: แสดงหลายโฟลเดอร์พร้อมกัน โหลดเร็วกว่า
du = "disk usage" บอกขนาดไฟล์/โฟลเดอร์/รายการไฟล์ในโฟลเดอร์ได้เร็ว
Options ที่ดี:
- -d (depth): ตามด้วยตัวเลข จำกัดความลึกของการค้นหาในโฟลเดอร์ที่รัน
du -d 1 /Applications= แสดงขนาดรวมของโฟลเดอร์/ไฟล์ใน Applications เท่านั้น ไม่รวม subfolders - -h (human readable): แสดงขนาดเป็น K, M, G (kilo, mega, giga bytes)
mv (move)
- แทนที่: ลากวางย้ายไฟล์/โฟลเดอร์
- ดีกว่าที่ไหน: เร็วกว่า ไม่ต้องนำทาง
ย้ายไฟล์/โฟลเดอร์ไปอีกโฟลเดอร์ได้ด้วย mv — เปลี่ยนชื่อ path อย่างเดียว
Syntax: mv <old file path> <new file path>
ตัวอย่าง: mv /Users/jdoe/Documents/file1 /Users/jdoe/Desktop/file1 = ย้าย file1 จาก Documents ไป Desktop
ls (list)
- แทนที่: Cmd + i ดู info
- ดีกว่าที่ไหน: เร็วกว่า แสดง info หลายไฟล์พร้อมกัน ปรับแต่งได้มาก
ls แสดงสิ่งในโฟลเดอร์อย่างละเอียด: permission, เวลาแก้ไขล่าสุด, เจ้าของไฟล์, ชื่อไฟล์, ไฟล์ซ่อน
Options ดีๆ:
- -l (long): แสดง permission, modification time, owner, filename
- -a (all): แสดงไฟล์ทั้งหมด รวม hidden files (ดีสำหรับโชว์ user Library ที่ macOS ซ่อนไว้)
mkdir (make directory)
- แทนที่: Finder > File > New Folder
- ดีกว่าที่ไหน: เร็วกว่า ตั้งชื่อในคำสั่งเลย ไม่ต้องดับเบิลคลิก
สร้างโฟลเดอร์ใหม่ทันที: mkdir /Users/jdoe/Desktop/cool_stuff
rm (remove)
- แทนที่: ย้ายไป Trash และ Empty Trash
- ดีกว่าที่ไหน: เร็วกว่า ลบไฟล์ติดขัดที่ Trash ลบไม่ได้
rm ลบไฟล์ทันที ไม่ถามยืนยัน — ใช้ด้วยความระมัดระวังสูงสุด ไม่เหมือน Empty Trash ที่ถามก่อน
ค่าเริ่มต้น rm ลบไฟล์อย่างเดียว ไม่ลบโฟลเดอร์ — ต้องใช้ -R (recursive) เพื่อลบโฟลเดอร์
ตัวอย่าง: rm -R /Users/jdoe/Desktop/cool_stuff
Master Your Mac With the Terminal
ตอนนี้รู้คำสั่ง Terminal พื้นฐาน เริ่มนำไปใช้ใน workflow ประจำวันได้ พอคุ้นเคยกับ bash แล้ว จะไปไกลกว่าแค่แทนที่งานประจำวัน — สำรวจพลังที่ command line เท่านั้นทำได้
เริ่มด้วยติดตั้ง Homebrew — package manager ตัวดีที่สุดสำหรับ macOS ติดตั้งภาษาโปรแกรม repo ใหม่ได้ แล้วลอง fun/cool commands และปรับแต่ง Terminal ให้มีประโยชน์มากขึ้น