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

Fish Shell คืออะไร? Shell ที่ใช้งานง่ายจนมือใหม่ยังต้องทึ่ง 🐠

คุณรู้สึกกลัว "จอดำ" (ที่เรียกว่าเทอร์มินัลหรือคอนโซล) หรือไม่? สำหรับ Web Creators แล้ว การพิมพ์คำสั่งเพื่อจัดการ Git หรือทำงาน build ต่างๆ เป็นสิ่งที่หลีกเลี่ยงไม่ได้ใช่ไหมครับ

"จำคำสั่งไม่ได้...", "พิมพ์ผิดตลอดจนเจอแต่ข้อผิดพลาด...", "ตั้งค่ายากเกินไปจนท้อ..."

หากคุณเคยมีประสบการณ์เหล่านี้ เราขอแนะนำให้ลองใช้ "Fish Shell" ดูสักครั้งครับ Fish ย่อมาจาก "Friendly Interactive Shell" ซึ่งตรงตามชื่อเลย มันคือเชลล์ที่เป็นมิตรกับผู้ใช้งานขั้นสุดและใจดีกับมือใหม่อย่างแท้จริง ในบทความนี้ เราจะข้ามเรื่องยากๆ ไปก่อน และมุ่งเน้นให้คุณได้สัมผัสกับความสุดยอดของ Fish ผ่านการคัดลอกและวางโค้ดง่ายๆ ครับ!


🚀 3 ฟีเจอร์เด็ดของ Fish Shell ที่ทำให้คุณต้องว้าว!

Fish Shell มีข้อดีมากมาย แต่เราจะขอแนะนำ 3 ฟีเจอร์หลักที่มือใหม่จะได้สัมผัสแล้วต้องประทับใจอย่างแน่นอน

1. "การแนะนำคำสั่งอัตโนมัติ (Autosuggestion)" ที่ราวกับหยั่งรู้อนาคต

ฟีเจอร์เด็ดที่สุดของ Fish Shell ก็คือการแนะนำคำสั่งอัตโนมัตินี่เอง มันจะจดจำคำสั่งที่คุณเคยใช้ในอดีต และเมื่อคุณพิมพ์เพียงไม่กี่ตัวอักษร มันก็จะแสดงคำสั่งที่คาดว่าคุณจะพิมพ์เป็นสีเทาจางๆ ขึ้นมาให้ หากถูกต้องตามที่ต้องการ ก็แค่กดปุ่ม (ลูกศรขวา) หรือ Ctrl+F เพื่อยืนยันการป้อนข้อมูล ไม่ต้องมานั่งพิมพ์คำสั่งยาวๆ ซ้ำอีกต่อไป!

ตัวอย่างเช่น หากคุณเคยใช้คำสั่ง `git switch feature/new-design` มาก่อน ครั้งต่อไปเพียงแค่พิมพ์ `git s`...

$ git switch feature/new-design

มันจะแนะนำส่วนที่เหลือให้โดยอัตโนมัติ แค่ฟีเจอร์นี้ฟีเจอร์เดียวก็รับประกันได้เลยว่าประสิทธิภาพในการทำงานบนเทอร์มินัลของคุณจะเพิ่มขึ้นอย่างก้าวกระโดด!


2. "การเน้น синтаксис (Syntax Highlighting)" ที่ทำให้เห็นข้อผิดพลาดทันที

การพิมพ์คำสั่งผิดเป็นสาเหตุหลักของข้อผิดพลาด Fish Shell จะแบ่งสีของคำสั่งตามความถูกต้องแบบเรียลไทม์ให้คุณเห็น

ตัวอย่างเช่น คำสั่ง `git` ที่มีอยู่จริงจะแสดงเป็นสีฟ้า

$ git

แต่ถ้าคุณพิมพ์คำสั่งที่ไม่มีอยู่จริงอย่าง `gitt` มันจะแสดงเป็นสีแดง ทำให้คุณรู้ตัวว่า "อ๊ะ, พิมพ์ผิด!" ได้ก่อนที่จะกด Enter

$ gitt

3. ไม่ต้องยุ่งกับไฟล์ตั้งค่า! ปรับแต่งง่ายๆ ผ่านเว็บเบราว์เซอร์

เมื่อพูดถึงการปรับแต่งเชลล์ หลายคนคงนึกถึงการแก้ไขไฟล์ที่ซับซ้อนอย่าง `~/.bashrc` ใช่ไหมครับ แต่สำหรับ Fish Shell คุณไม่ต้องกังวลเรื่องนั้นเลย ลองรันคำสั่งต่อไปนี้ดูสิครับ

$ fish_config

เมื่อรันคำสั่งนี้ เว็บเบราว์เซอร์ของคุณจะเปิดขึ้นมาโดยอัตโนมัติ ให้คุณสามารถปรับแต่งสีสันและหน้าตาของพรอมต์ (Prompt) ได้ง่ายๆ แค่คลิก พร้อมดูตัวอย่างได้ทันที แม้แต่คนที่ไม่ชอบจอดำก็สามารถสร้างสภาพแวดล้อมที่ถูกใจได้อย่างง่ายดาย


💻 มาลองใช้กันเลย! การทำงานพื้นฐานของ Fish Shell

ต่อไป เรามาลองใช้คำสั่งต่างๆ ของ Fish กันดูบ้าง ลองคัดลอกและวางลงในเทอร์มินัลของคุณเพื่อสัมผัสการทำงานของมันได้เลย

การแสดงผลข้อความ: `echo`

เริ่มต้นด้วยคำสั่งพื้นฐานอย่าง `echo` ซึ่งใช้แสดงผลข้อความที่คุณกำหนดออกมาทางหน้าจอ การใช้งานแทบไม่ต่างจากเชลล์อื่นๆ เลยครับ

$ echo "สวัสดี, Fish Shell!"
สวัสดี, Fish Shell!

การใช้ตัวแปร: `set`

ใน Fish Shell เราใช้คำสั่ง `set` เพื่อจัดการกับตัวแปร เราจะไม่ใช้เครื่องหมาย `=` (เท่ากับ) แต่จะใช้การเว้นวรรคแทน ซึ่งเป็นสไตล์ของ Fish

$ set name "สมชาย ใจดี"

หากต้องการดูค่าของตัวแปร ให้ใช้ `echo` แล้วตามด้วยเครื่องหมาย `$`

$ echo $name
สมชาย ใจดี

การทำงานซ้ำ: `for` loop

เมื่อเทียบกับเชลล์อื่น `for` loop ของ Fish มี синтаксис ที่เข้าใจง่ายและอ่านง่ายกว่ามาก

ตัวอย่างเช่น เรามาลองแสดงผลข้อความ `item-1` ถึง `item-3` ทีละรายการกัน

$ for item in item-1 item-2 item-3
    echo $item
  end
item-1
item-2
item-3

เรายังสามารถใช้ผลลัพธ์จากคำสั่งมาวนลูปได้ด้วย เช่น `(seq 1 3)` ซึ่งเป็นคำสั่งที่สร้างตัวเลข 1 ถึง 3

$ for i in (seq 1 3)
    echo "หมายเลข: $i"
  end
หมายเลข: 1
หมายเลข: 2
หมายเลข: 3

การสร้างฟังก์ชันง่ายๆ: `function`

ชุดคำสั่งที่ใช้บ่อยๆ สามารถรวบรวมไว้เป็นฟังก์ชันได้ ที่นี่ เราจะมาสร้างฟังก์ชันชื่อ `hello` สำหรับทักทายกัน

$ function hello
    echo "สวัสดี, $argv!"
  end

เพียงเท่านี้เราก็ได้คำสั่งใหม่ที่ชื่อว่า `hello` แล้ว `$argv` คือตัวแปรพิเศษสำหรับรับอาร์กิวเมนต์ (ในที่นี้คือชื่อ) ที่ส่งเข้ามาในฟังก์ชัน

มาลองเรียกใช้ฟังก์ชันที่เราเพิ่งสร้างกันเลย

$ hello "ชาวโลก"
สวัสดี, ชาวโลก!

💡 เพิ่มความสะดวก! การใช้งานขั้นสูง

คำสั่งย่อที่ทรงพลังกว่า alias: `abbr`

`abbr` (ย่อมาจาก abbreviation) ช่วยให้คุณสามารถแปลงคีย์เวิร์ดสั้นๆ เป็นคำสั่งยาวๆ ได้ แม้จะคล้ายกับ alias แต่จุดเด่นของ `abbr` คือเมื่อคุณพิมพ์คีย์เวิร์ดแล้วกด Space หรือ Enter มันจะขยายเป็นคำสั่งเต็มๆ ให้เห็นทันที ทำให้เราตรวจสอบได้ก่อนว่าจะรันคำสั่งอะไร

เรามาลองสร้างคำสั่งย่อ `gco` สำหรับ `git checkout` ที่ Web Creators ใช้กันบ่อยๆ ดูครับ

$ abbr --add gco "git checkout"

เพียงเท่านี้ เมื่อคุณพิมพ์ `gco` ในเทอร์มินัลแล้วกดเว้นวรรค มันจะแปลงร่างเป็น `git checkout` ทันที ช่วยลดเวลาพิมพ์ไปได้เยอะและสะดวกสบายจริงๆ ครับ!


⚠️ ข้อควรระวัง! ความแตกต่างจาก bash

แม้ Fish จะยอดเยี่ยมมาก แต่มันก็มีความแตกต่างบางประการจาก `bash` ซึ่งเป็นเชลล์มาตรฐานใน Linux และ macOS ส่วนใหญ่ โดยเฉพาะเวลาคัดลอกคำสั่งจากเว็บไซต์อื่นมาใช้ต้องระวังเป็นพิเศษ

1. การเขียน AND (&&)

ใน bash หากต้องการรันหลายคำสั่งต่อเนื่องกันจะใช้ `&&` แต่ใน Fish เราจะใช้ `; and`

ผิด (สไตล์ bash)

$ mkdir new_dir && cd new_dir

ถูกต้อง (สไตล์ Fish)

$ mkdir new_dir; and cd new_dir

2. วิธีการตั้งค่าตัวแปรสภาพแวดล้อม (Environment Variable)

วิธีการตั้งค่าตัวแปรสภาพแวดล้อม เช่น การตั้งค่า PATH ก็แตกต่างกัน ใน bash จะใช้ `export` แต่ใน Fish จะใช้คำสั่ง `set` พร้อมกับออปชัน `-x` (export)

ผิด (สไตล์ bash)

$ export MY_VARIABLE="some_value"

ถูกต้อง (สไตล์ Fish)

$ set -x MY_VARIABLE "some_value"

เพียงแค่จำความแตกต่างเหล่านี้ไว้ คุณก็แทบจะไม่เจอปัญหาในการใช้งานส่วนใหญ่แล้วครับ


สรุป

เป็นอย่างไรกันบ้างครับ? หวังว่าคุณจะได้สัมผัสกับเสน่ห์ของ Fish Shell โดยเฉพาะฟีเจอร์ที่เป็นมิตรกับผู้ใช้อย่าง "การแนะนำคำสั่งอัตโนมัติ" และ "การเน้น синтаксис" ผ่านการคัดลอกและวางโค้ดที่เรานำเสนอไปนะครับ

สำหรับคนที่เคยกลัวการใช้เทอร์มินัลมาก่อน เมื่อได้ใช้ Fish Shell แล้วจะต้องรู้สึกว่า "อยากลองเล่นมากกว่านี้!" อย่างแน่นอน เมื่อการใช้คำสั่งกลายเป็นเรื่องสะดวกสบาย ประสิทธิภาพในการพัฒนาก็จะเพิ่มขึ้นอย่างก้าวกระโดด

หากคุณอ่านบทความนี้แล้วสนใจ Fish Shell ขึ้นมา ขอเชิญอ่านบทความถัดไปเพื่อติดตั้งและนำไปใช้ในสภาพแวดล้อมการพัฒนาของคุณได้เลยครับ!


ขั้นตอนต่อไป ▶ วิธีติดตั้งและตั้งค่า Fish (Linux / macOS)