มาลองใช้ฟังก์ชันการเติมคำ, การแยกสี และประวัติการใช้งานอันทรงพลังของ Fish Shell กันเถอะ
สวัสดีครับ! สำหรับทุกท่านที่เพิ่งก้าวเข้ามาในโลกของการสร้างเว็บ และสำหรับนักพัฒนาระดับกลางที่ต้องการให้การเขียนโค้ดในแต่ละวันสะดวกสบายขึ้นอีกนิด คุณเคยคิดไหมว่า "เทอร์มินัล" ที่เราใช้กันทุกวันจะสะดวกกว่านี้ได้อีก? 🤔
หลายคนอาจจะคุ้นเคยกับ "Bash" เป็นเชลล์แรก แต่ในครั้งนี้เราจะมาแนะนำเชลล์ที่ฉลาดและใช้งานง่ายมากที่ชื่อว่า "Fish Shell" ครับ Fish ย่อมาจาก "Friendly Interactive SHell" ซึ่งก็ตามชื่อเลยครับ เป็นมิตรกับผู้ใช้งานอย่างเราๆ มาก
ในบทความนี้ เราจะคัดเลือก 3 คุณสมบัติเด่นจากหลากหลายความสามารถของ Fish ได้แก่ ฟังก์ชันการเติมคำที่ทรงพลัง, การแบ่งสีที่เข้าใจง่าย และ ฟังก์ชันประวัติการใช้งานที่ชาญฉลาด มาให้ทุกคนได้ลองสัมผัสความสุดยอดของมัน ไม่ต้องตั้งค่าอะไรให้ยุ่งยาก! แค่คัดลอกโค้ดในบทความไปวาง ก็จะรู้สึกได้ทันทีว่า "โอ้โห สะดวกจัง!" มาครับ เรามาสำรวจโลกของ Fish และเพิ่มประสิทธิภาพการทำงานบนเทอร์มินัลกันอย่างก้าวกระโดดกันเถอะ! 🚀
🐠 ไม่ต้องจำคำสั่งอีกต่อไป? ฟังก์ชัน "การเติมคำ" ที่ทรงพลังของ Fish
ความเครียดที่สุดในการใช้งานเทอร์มินัลคือการต้องคอยนึกหรือค้นหาคำสั่งอยู่เรื่อยๆ ว่า "เอ... คำสั่งนั้นมันอะไรนะ?" หรือ "ตัวเลือกนั้นสะกดยังไง?" ฟังก์ชันการเติมคำของ Fish จะทำให้ปัญหาเหล่านี้กลายเป็นอดีต
เมื่อคุณเริ่มพิมพ์คำสั่ง Fish จะแสดงคำสั่งที่คาดว่าจะพิมพ์ต่อเป็นสีเทาจางๆ โดยอิงจากประวัติการใช้งานและบริบท หากคำแนะนำนั้นถูกต้อง คุณก็แค่กด → (ลูกศรขวา) หรือ Ctrl + F เพื่อยืนยันการป้อนข้อมูล! ช่วยลดขั้นตอนการพิมพ์ได้อย่างน่าทึ่ง
การเติมคำสั่งย่อย (Subcommands)
ตัวอย่างเช่น เครื่องมือจัดการเวอร์ชันอย่าง `git` มีคำสั่งย่อยมากมาย (`commit`, `push`, `pull` เป็นต้น) เพียงแค่พิมพ์ `git` แล้วกดเว้นวรรค Fish ก็จะแสดงรายการคำสั่งย่อยที่สามารถใช้งานได้ทันที
$ git
(เมื่อพิมพ์คำสั่งด้านบน จะมีรายการคำสั่งย่อยเช่น 'add', 'blame', 'branch', 'checkout' แสดงขึ้นมา)
การเติมตัวเลือก (Options/Flags)
เรามักจะลืมตัวเลือกของคำสั่งอยู่บ่อยๆ แต่ถ้าใช้ Fish ก็ไม่มีปัญหา เพียงแค่พิมพ์ขีดกลาง `-` Fish ก็จะแสดงรายการตัวเลือกที่ใช้ได้สำหรับคำสั่งนั้นๆ พร้อมคำอธิบาย ทำให้แทบไม่จำเป็นต้องใช้คำสั่ง `man` อีกต่อไป
$ ls -
(เมื่อพิมพ์คำสั่งด้านบน ตัวเลือกต่างๆ เช่น '-a' (all), '-l' (long format), '-t' (sort by time) จะแสดงขึ้นมาพร้อมคำอธิบาย)
การเติมเส้นทาง (Path) ของไฟล์และไดเรกทอรี
แน่นอนว่าการเติมเส้นทางของไฟล์และไดเรกทอรีก็ทรงพลังเช่นกัน เมื่อคุณเริ่มพิมพ์เส้นทางด้วยคำสั่งอย่าง `cd` แล้วกดปุ่ม Tab ก็จะแสดงรายการที่เป็นไปได้ขึ้นมา ยิ่งพิมพ์ตัวอักษรเพิ่มเข้าไป รายการก็จะถูกกรองให้แคบลงเรื่อยๆ ช่วยป้องกันการพิมพ์ผิดได้ด้วย ยิงปืนนัดเดียวได้นกสองตัวเลย!
$ cd D/P/
(ตัวอย่างเช่น หากต้องการไปที่ 'Documents/Projects/' ถึงแม้จะพิมพ์ด้วยตัวพิมพ์ใหญ่แบบข้างบน Fish ก็สามารถเติมคำให้ได้อย่างชาญฉลาด)
🎨 แค่เห็นก็เข้าใจ! "การแสดงผลด้วยสี" ที่ใช้งานง่าย
หน้าจอสีดำที่มีแต่ตัวอักษรสีขาวอาจจะดูจืดชืดและเข้าใจยากใช่ไหมครับ? Fish จะทำการแบ่งสีข้อความตามไวยากรณ์ (Syntax) ให้โดยอัตโนมัติ ทำให้เราสามารถตัดสินความถูกต้องของคำสั่งหรือประเภทของไฟล์ได้ในพริบตา
คำสั่งที่ถูกต้องจะเป็นสีน้ำเงิน
คำสั่งที่สามารถทำงานได้และมีอยู่จริงในระบบจะแสดงเป็นสีน้ำเงิน ทำให้เรามั่นใจได้ทันทีที่พิมพ์ว่า "อ้อ คำสั่งนี้ใช้ได้"
$ ls -l
('ls' จะแสดงเป็นสีน้ำเงิน)
คำสั่งที่ไม่ถูกต้องจะเป็นสีแดง
ในทางกลับกัน คำสั่งที่ไม่มีอยู่จริงหรือพิมพ์ผิดจะแสดงเป็นสีแดง ทำให้เราเห็นข้อผิดพลาดได้ก่อนที่จะรันคำสั่ง ซึ่งช่วยป้องกันข้อผิดพลาดที่ไม่จำเป็นได้ดีมาก สะดวกจริงๆ ครับ!
$ lss -l
(คำว่า 'lss' ซึ่งเป็นการพิมพ์ผิดของ 'ls' จะแสดงเป็นสีแดง)
การแบ่งสีตามประเภทของไฟล์และไดเรกทอรี
ผลลัพธ์ของคำสั่งก็มีสีสันเช่นกัน ตัวอย่างเช่น เมื่อใช้คำสั่ง `ls` ไดเรกทอรีจะแสดงเป็นตัวหนาสีน้ำเงิน, ไฟล์ที่สามารถทำงานได้ (Executable) จะเป็นสีเขียว, ไฟล์บีบอัดจะเป็นสีแดง เป็นต้น ทำให้เราหาสิ่งที่ต้องการได้ง่ายขึ้นมาก
$ ls
(ไฟล์และโฟลเดอร์ในไดเรกทอรีปัจจุบันจะถูกแสดงด้วยสีที่แตกต่างกัน)
🕰️ ค้นหาอดีตขณะพิมพ์! ฟังก์ชัน "ประวัติการใช้งาน" แบบเพิ่มหน่วย
"อยากใช้คำสั่งยาวๆ ที่เพิ่งรันไปเมื่อกี้นี้อีกครั้ง..." ในสถานการณ์แบบนี้ คุณยังกดปุ่ม ↑ (ลูกศรขึ้น) รัวๆ อยู่หรือเปล่า? ถ้าใช้ Fish คุณสามารถเรียกดูประวัติการใช้งานได้อย่างชาญฉลาดกว่านั้น
การค้นหาประวัติของ Fish โดยพื้นฐานแล้วคือ "การค้นหาแบบเพิ่มหน่วย (Incremental Search)" เพียงแค่พิมพ์ส่วนหนึ่งของคำสั่ง ประวัติล่าสุดที่มีข้อความนั้นๆ ก็จะถูกแนะนำขึ้นมา
ค้นหาประวัติขณะพิมพ์
ตัวอย่างเช่น หากคุณเคยรันคำสั่ง `git commit` มาแล้วหลายครั้ง ลองพิมพ์ `git` ที่พรอมต์แล้วกดปุ่ม ↑ ดูสิครับ แทนที่จะแสดงแค่คำสั่งก่อนหน้า มันจะค้นหาย้อนหลังเฉพาะคำสั่งที่ขึ้นต้นด้วย `git` เท่านั้น
$ git
(หลังจากพิมพ์ข้อความด้านบนแล้วกดปุ่ม ↑ จะเป็นการค้นหาย้อนหลังเฉพาะคำสั่งที่ขึ้นต้นด้วย 'git')
ค้นหาประวัติทั้งหมดด้วยคีย์เวิร์ด
หากต้องการค้นหาประวัติที่เก่ากว่านั้น หรือต้องการค้นหาด้วยคีย์เวิร์ดที่อยู่กลางคำสั่ง `history search` จะมีประโยชน์มาก มันจะแสดงรายการเฉพาะคำสั่งในประวัติที่มีคีย์เวิร์ดที่คุณระบุ
$ history search "commit"
(คำสั่งในประวัติที่มีคำว่า "commit" จะถูกแสดงขึ้นมาเป็นรายการ)
🙋♀️ "ฟังก์ชันช่วยเหลือ" เมื่อต้องการความช่วยเหลือ
Fish ยังคงเป็นมิตรแม้ในยามที่คุณต้องการความช่วยเหลือ หากไม่ทราบวิธีใช้คำสั่งใดๆ ก็ลองใช้คำสั่ง `help` ดูได้เลย
ที่น่าทึ่งคือ Fish จะเปิดหน้าช่วยเหลือ (man page) ของคำสั่งต่างๆ ในเว็บเบราว์เซอร์เริ่มต้นของคุณโดยอัตโนมัติ! แม้แต่คนที่ไม่ชอบอ่านหน้าช่วยเหลือภาษาอังกฤษบนจอสีดำ ก็สามารถอ่านได้อย่างละเอียดบนเบราว์เซอร์ที่คุ้นเคย
$ help ls
(หน้าคู่มือ (man page) ของคำสั่ง 'ls' จะเปิดขึ้นมาในแท็บใหม่ของเว็บเบราว์เซอร์)
⚠️ ข้อควรระวังในการใช้ Fish
ถึงแม้เราจะพูดถึงข้อดีของ Fish มามากมาย แต่ก็มีข้อควรระวังอยู่หนึ่งอย่าง นั่นคือ "ความแตกต่างทางไวยากรณ์ (Syntax) กับ Bash"
สคริปต์และตัวอย่างการตั้งค่าส่วนใหญ่บนโลกอินเทอร์เน็ตยังคงเขียนขึ้นโดยใช้ Bash เป็นมาตรฐาน ดังนั้น การคัดลอกคำสั่งจากบทความบนเว็บมาวางใน Fish โดยตรงอาจจะไม่ทำงาน
ตัวอย่างเช่น คำสั่งตั้งค่าตัวแปรสภาพแวดล้อม ใน Bash จะใช้ `export` แต่ใน Fish จะใช้ `set`
การตั้งค่าตัวแปรสภาพแวดล้อมใน Bash
# คำสั่งนี้จะเกิดข้อผิดพลาดใน Fish
$ export MY_VARIABLE="hello"
การตั้งค่าตัวแปรสภาพแวดล้อมใน Fish
ใน Fish จะใช้ 'set' พร้อมกับออปชัน '-x' หรือ '--export'
# นี่คือวิธีการเขียนที่ถูกต้องใน Fish
$ set -x MY_VARIABLE "hello"
ในช่วงแรกอาจจะสับสนเล็กน้อย แต่ไวยากรณ์ของ Fish นั้นเรียบง่ายและมีความสอดคล้องกันมากกว่า เมื่อคุ้นเคยแล้วคุณอาจจะรู้สึกว่ามันเข้าใจง่ายกว่าด้วยซ้ำ หากต้องการรันสคริปต์ของ Bash ก็สามารถทำได้โดยการระบุให้รันด้วย Bash อย่างชัดเจน เช่น `bash -c "เนื้อหาสคริปต์"`
บทสรุป
เป็นอย่างไรกันบ้างครับ? นี่เป็นเพียงส่วนเล็กๆ ของฟังก์ชันอันทรงพลังที่ Fish Shell มี แต่หวังว่าทุกคนจะได้สัมผัสถึงความสะดวกสบายของมันไม่มากก็น้อยนะครับ
- ฟังก์ชันการเติมคำ ที่ช่วยลดการพิมพ์ได้อย่างมหาศาล
- การแสดงผลด้วยสี ที่ช่วยป้องกันความผิดพลาดล่วงหน้า
- ฟังก์ชันประวัติการใช้งาน ที่ช่วยให้หาคำสั่งที่ต้องการใช้เจอได้ทันที
ฟังก์ชันเหล่านี้ทั้งหมดสามารถใช้งานได้ทันทีหลังจากการติดตั้งโดยไม่ต้องตั้งค่าเพิ่มเติมใดๆ การลดความเครียดเล็กๆ น้อยๆ ในแต่ละวันจะช่วยเพิ่มความสนุกและสมาธิในการเขียนโค้ดได้อย่างมาก
ถือโอกาสนี้ลองติดตั้ง Fish Shell และเริ่มต้นชีวิตบนเทอร์มินัลที่แสนสะดวกสบายกันได้เลยครับ!