Shortcut keys สำหรับ Bash

Wasith T. (Bai-Phai)
odds.team
Published in
2 min readOct 14, 2017

ได้ทั้ง linux และ macOS

Working With Processes

  • ctrl + c ยกเลิก process ที่ทำงานอยู่ foregound ด้วยการส่งสัญญาน SIGINT ไปหา process ซึ่งในทางเทคนิคเป็นการส่ง request ไป จะยกเลิก ไม่ยกเลิกขึ้นอยู่กับ process นั้น ๆ
  • ctrl + z พัก process ที่ทำงานอยู่ foreground ใน session ของ bash นั้น ๆ ด้วยการส่งสัญญาณ SIGTSTP สามารถเรียกคืนได้ด้วยคำสั่ง fg ชื่อ_process
  • ctrl + d ปิด bash shell ด้วยการส่ง EOF (End-of-file) ไปหา bash ท่านี้เหมือนกับใช้คำสั่ง exit

Controlling the Screen

  • ctrl + l ล้างค่าบนหน้าจอ แบบเดียวกับการพิมพ์คำสั่ง clear
  • ctrl + s (bash) หยุดการแสดงผลบนหน้าจอ แต่โปรแกรมยังทำงานอยู่
  • ctrl + q ให้การหยุดจาก ctrl + s กลับมาทำงานอีกครั้ง

Moving the Cursor

  • ctrl + a หรือ Home ไปหน้าสุดของบรรทัด
  • ctrl + e หรือ End ไปหลังสุดของบรรทัด
  • ctrl + b ไปตัวอักษรก่อนหน้า (ไปทางซ้าย)
  • meta + b ไปคำก่อนหน้า (ไปทางซ้าย)
  • ctrl + f ไปตัวอักษรถัดไป (ไปทางขวา)
  • meta + f ไปคำถัดไป (ไปทางขวา)
  • ctrl + xx กด ctrl ค้างไว้แล้วกด x สองครั้งจะเป็นการกระโดด cursor ไปหน้าสุดของบรรทัด ทำซ้ำอีกครั้งจะกลับมาที่เดิม

หมายเหตุ นับว่าเป็นคำก็ต่อเมื่อมีเว้นวรรค และต้องประกอบไปด้วยอักษรหรือตัวเลขด้วย ถ้าไม่มีจะถูกข้าม

ใน linux meta คือปุ่ม alt ใน mac ถ้าใช้ terminal สามารถตั้งค่าได้ที่
Terminal (Menu) -> Preferences… (⌘ ,) -> Profile -> ด้านซ้ายเลือกอันที่ใช้งาน -> Keyboard -> [✓] Use Option as Meta key

สำหรับ iTerm ให้ไปที่ iTerm2 (Menu) -> Preferences… -> Profiles -> ด้านซ้ายเลือก profile อันที่ต้องการแก้ไข -> Keys -> ปรับให้เป็น Esc+ ซึ่งจะปรับทั้งปุ่มซ้าย และปุ่มขวาก็ได้ ส่วนของผมเก็บปุ่มขวาไว้กดอักขระพิเศษเล่น

ปรับปุ่ม Option Keys

หรือทั้ง iTerm2 และ Terminal สามารถกด Esc 1 ครั้งแล้วค่อยกด key ก็ได้

Deleting Text

  • ctrl + d หรือ delete ลบตัวอักษรตรง cursor
  • meta + d ถ้าอ cursor อยู่ในคำจะลบตั้งแต่ cursor ไปจนถึงตัวอักษรสุดท้ายของคำ ถ้าอยู่ระหว่างคำจะลบคำถัดไป
  • ctrl + h ลบตัวอักษรก่อนหน้า cursor

Fixing Typos

  • meta + t สลับคำกับคำก่อนหน้า
  • ctrl + t สลับตัวอักษรสองตัวสุดท้ายก่อนหน้า cursor
  • ctrl + - ย้อนคำสั่งสุดท้ายได้เรื่อย ๆ

Cutting and Pasting

  • ctrl + w ตัดตั้งแต่ก่อน cursor ไปจนถึงตัวอักษรแรกของคำ
  • ctrl + k ตัดตั้งแต่ cursor ไปจนถึงตัวสุดท้าย
  • ctrl + u (bash) ตัดตั้งแต่ก่อน cursor ไปจนถึงตัวแรก
  • ctrl + u (zsh) ตัดทั้งบรรทัด
  • ctrl + y วางตัวอักษรที่ถูกตัด

Capitalizing Characters

  • meta + u ให้ตัวษรเป็นพิมพ์ใหญ่ตั้งแต่ตัวที่ cursor อยู่ จนถึงตัวสุดท้ายของคำ และเลื่อน cursor ไปหลังคำที่ถูกเปลี่ยน
  • meta + l ให้ตัวอักษรเป็นพิมพ์เล็กตั้งแต่ตัวที่ cursor อยู่ไปจนถึงตัวสุดท้ายของคำ
  • meta + c สลับพิทพ์เล็กพิทพ์ใหญ่ตรงที่ cursor อยู่

Tab Completion

  • Tab ช่วยเติมคำให้เต็ม หรือบอกใบ้คำสั่งถัดไป

Working With Your Command History

  • ctrl + p หรือ ลูกศรขึ้น แสดงคำสั่งที่ใช้ก่อนหน้า (history) สามารถกดเผื่อดูคำสั่งที่ถูกใช้ก่อนหน้าได้เรื่อย ๆ
  • ctrl + n หรือ ลูกศรลง แสดวคำสั่งถัดไปจาก history สามารถกดได้เรื่อย ๆ
  • meta + r แก้คำสั่งให้กลับไปเหมือนตาม history ถ้ามีการแก้ไข
  • ctrl + r ค้นหาคำสั่งที่เคยใช้ไปก่อนหน้า (แบบ backward)
  • ctrl + s (zsh) ค้นหาสำสั่งที่เคยใช้แบบ forward
  • ctrl + o รันคำสั่งที่พบใน ctrl + r ทันที เท่าที่ลองใช้ใน terminal ได้แต่ใน iTerm2 ไม่ได้ แต่สามารถใช้ tab หรือ Esc แล้ว Enter แทนได้
  • ctrl + g ออกจาก ctrl + r โดยไม่รันคำสั่ง และไม่เอา command มาด้วย

Other

  • ctrl + j ใช้แทนปุ่ม enter ⏎ หรือ return ⮐
  • ctrl + v, tab เพิ่มตัวอักษร tab หรือ \t เข้าไปใน command line

คนที่สอนผมใช้ keys บอกว่า ถ้าคุณใช้ได้ โดยไม่ใช้ลูกศร หรือ Home, End, Esc ได้จะลดเวลาจากการละมือจาก keyboards และเวลาในการพามือกลับมาสู่ตำแหน่งเดิมได้

อ้างอิง

--

--

Wasith T. (Bai-Phai)
odds.team

ตบมือเป็นกำลังใจให้ผมด้วยนะครับ 😘