Command line course#zsh shell สุดเมพ

วันนี้ขอแนะนำ shell สุดเมพ สำหรับแก้อาการปวดหัวเมื่อใช้ terminal ไปครับ

คุณเคยเจออาการเหล่านี้หรือไม่

  • tab completion ไฟล์เยอะมาก แล้วพอกด tab สองที ไหลมาเต็มจอ
  • เขียนคำสั่ง ยาวมากๆ แล้วพิมพ์ผิดไปตรงกลาง จะย้อนกลับไปยังไงดี
  • ติด vim เกลียด emacs แต่ใน terminal ต้องกด hotkey ไม่ใช่มี mode (ผมใช้ nano นะครับ)
  • ลำปาง หนาวมาก แต่กี่องศา?
  • พิมพ์คำสั่ง เสียยาว แล้วลืม sudo แต่กด home ไม่ได้!! (เจอบ่อย พวก freebsd ครับ)
  • จะกลับไป directory ก่อนหน้าที่เคยไป ที่ path ยาวมากๆ แต่ลืม pushd ไว้
  • เขียนคำสั่ง ยาวมากๆ จนต้องจดไว้ใน text editor ก่อน
  • พิมพ์คำสั่ง แล้วลืมไปว่า จะสั่งอะไรต่อ แต่เคยสั่งไปแล้ว

นรกสิครับ เจออย่างนี้ ต้อง zsh ครับ ก่อนอื่น ติดตั้งง่ายๆ ครับ สูตรเดิม

sudo apt-get install zsh

เสร็จแล้ว zsh ที่ได้ จะยังไม่ใช้ ให้เปลี่ยน shell ของเราเป็น zsh ครับ เวลาเปิด shell อะไร จะได้เป็น zsh ไปเลย(ถ้าไม่ทำก็ได้ครับ เวลาจะใช้ ก็สั่ง zsh เอา) ด้วยคำสั่ง

chsh

ใส่พาธเป็น /bin/zsh ครับ เสร็จแล้ว ก็ login ใหม่เสียหนึ่งที(ถ้าใช้ gnome-terminal แค่ปิดเปิดใหม่ครับ) แต่ทีนี้ zsh เนี่ยครับ มันธรรมดามากๆ ลูกเล่นที่ผมว่าไปไม่มีสักอย่าง ต้องเปิดใช้เอง ก็เลยมีคนทำไว้ให้ครับ เป็นดิสโตรเจ้าหนึ่ง ดังนั้นเราไปขโมยเค้ามากันครับ

wget -O .zshrc http://git.grml.org/f/grml-etc-core/etc/skel/.zshrc
wget -O .zshrc.global http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc

สำหรับวิธีใช้และปุ่มลัดนั้น กลัวลืมเอาไปแปะฝาบ้านไว้ได้ครับ http://grml.org/zsh/grml-zsh-refcard.pdf มาดูกันครับ มันจะแก้ปัญหา ข้างบนอย่างไร

  • tab completion ไฟล์เยอะมาก แล้วพอกด tab สองที ไหลมาเต็มจอ
    • ใน zsh กด esc-i ครับ(แปลว่า กด esc แล้วค่อยกด i ไม่ใช่พร้อมกันนะครับ) จะแสดงรายการ completion มา ใช้ปุ่มลูกศรบนแป้น เลือกได้เลยครับ
  • เขียนคำสั่ง ยาวมากๆ แล้วพิมพ์ผิดไปตรงกลาง จะย้อนกลับไปยังไงดี
    • ใน zsh กด enter ไปเลยครับ แล้วใช้ !!:s/ข้อความที่ผิด/ข้อความถูก/ แถมใช้ regular expression ได้เลยครับ
  • ติด vim เกลียด emacs แต่ใน terminal ต้องกด hotkey ไม่ใช่มี mode (ผมใช้ nano นะครับ)
    • setopt vi แล้วขอให้สนุกครับ :) (ผมไม่ได้ลองนะครับ -- ติด nano)
  • ลำปาง หนาวมาก แต่กี่องศา?
    • สั่ง weather ตามด้วยรหัสสนามบินครับ ซึ่งของท่าอากาศยานลำปาง คือ VTCL ก็ weather VTCL แล้วก็รู้แล้วครับ
  • พิมพ์คำสั่ง เสียยาว แล้วลืม sudo แต่กด home ไม่ได้!! (เจอบ่อย พวก freebsd ครับ)
    • กด ctrl+o(พร้อมกัน) แล้วกด s(ปล่อย ctrl+o ก่อน) ครับ
  • จะกลับไป directory ก่อนหน้าที่เคยไป ที่ path ยาวมากๆ แต่ลืม pushd ไว้
    • สั่ง d จะมีรายการให้ครับ
  • เขียนคำสั่ง ยาวมากๆ จนต้องจดไว้ใน text editor ก่อน
    • กด esc-e ครับ จะขึ้น $EDITOR ขึ้นมา พร้อมเนื้อหาในบรรทัดปัจจุบัน ดังนั้นก็น่าจะสะดวกในการแก้ไขแล้วนะครับ
  • พิมพ์คำสั่ง แล้วลืมไปว่า จะสั่งอะไรต่อ แต่เคยสั่งไปแล้ว
    • พิมพ์คำสั่งขึ้นต้นไป แล้วกดลูกศรขึ้นครับ มันจะเติมให้แต่ที่ขึ้นต้นด้วยคำสั่งนั้นๆ

นอกจากนี้คำสั่งและปุ่มลัดอื่นๆ ใน sheet ข้างบน มีครบครับ ละเอียดมาก และมีประโยชน์มากครับ

ปล. @gumara ขอ markdown ด้วยครับ

Comments

ธาตุไฟแตก

หุๆ วิชาผมคงยังไม่ถึงขั้นเมพ อ่านแล้วธาตุไฟเข้าแทรกเกือบตาย
เอาไว้จะพยามลองนะฮับ