🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

มาลองใช้ฟังก์ชันการเติมคำ, การแยกสี และประวัติการใช้งานอันทรงพลังของ 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 และเริ่มต้นชีวิตบนเทอร์มินัลที่แสนสะดวกสบายกันได้เลยครับ!


บทความนี้ก็เป็นที่นิยมเช่นกัน

เรียนรู้การทำงานพื้นฐานพร้อมเปรียบเทียบความแตกต่างระหว่าง Fish และ Bash