เครื่องมือบรรทัดคำสั่ง Linux ที่นักพัฒนาทุกคนควรรู้ในปี 2026
เครื่องมือ UNIX แบบคลาสสิกยังคงใช้งานได้ แต่รุ่นใหม่ที่ขับเคลื่อนด้วย Rust มอบประสิทธิภาพที่ดีกว่ามาก
fd และ ripgrep: การค้นหาที่ได้รับการปรับปรุง
fd แทนที่ find ด้วยค่าเริ่มต้นที่สมเหตุสมผล ripgrep แทนที่ grep ด้วยความเร็ว 10-100 เท่า
# fd: modern find replacement (written in Rust)
# Faster, respects .gitignore, simpler syntax
# Install
brew install fd # macOS
apt install fd-find # Ubuntu/Debian (binary is 'fdfind')
# Find files by name (case-insensitive by default)
fd config # finds files named 'config', 'Config.js', etc.
fd '\.tsx$' # regex: all .tsx files
fd -e ts -e tsx # by extension (no dot)
fd -t d src # type: directory named 'src'
fd -t f -x wc -l # find files, run 'wc -l' on each (parallel)
# ripgrep (rg): grep replacement -- blazing fast, respects .gitignore
# Install: brew install ripgrep / apt install ripgrep
# Basic search
rg 'useState' # search current dir recursively
rg 'TODO|FIXME' --glob '*.ts' # glob filter
rg -l 'console\.log' # list file names only
rg -n 'export default' src/ # show line numbers
# Context lines
rg -C 3 'throw new Error' # 3 lines before and after
rg -A 5 'async function fetchUser' # 5 lines after match
# Type filtering (rg knows language extensions)
rg --type ts 'interface' # TypeScript files only
rg --type-add 'web:*.{html,css,js}' --type web 'font-face'bat และ eza: cat และ ls ที่ดีกว่า
bat เพิ่มการเน้นไวยากรณ์ให้กับ cat eza แทนที่ ls ด้วยตัวบ่งชี้ git
# bat: cat with syntax highlighting, line numbers, git diffs
# Install: brew install bat / apt install bat (binary may be 'batcat')
# Basic usage
bat README.md # with syntax highlighting
bat src/index.ts # TypeScript highlighted
bat --style=plain file.txt # no decorations (pipe-safe)
bat --paging=never file.txt # don't use pager
# Show git changes inline (like 'diff')
bat --diff src/app.ts # highlight lines changed vs git
# As a colorized pager for man pages
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
# eza: modern ls replacement (was exa, now maintained fork)
# Install: brew install eza / apt install eza
# Basic usage
eza # color-coded by file type
eza -l # long listing (like ls -l)
eza -la # include hidden files
eza --tree # tree view
eza --tree --level=2 # tree, max 2 levels deep
eza -l --git # show git status per file
eza --sort=modified # sort by modification time
eza -lh --group # human sizes, group by owner
# Useful aliases
alias ls='eza --color=auto'
alias ll='eza -l --git'
alias la='eza -la --git'
alias lt='eza --tree --level=2'delta และ zoxide: git diff และการนำทางอัจฉริยะ
delta แปลงผลลัพธ์ git diff zoxide เรียนรู้ไดเรกทอรีที่คุณใช้บ่อย
# delta: syntax-highlighting pager for git diffs
# Install: brew install git-delta / cargo install git-delta
# Configure in ~/.gitconfig
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # n/N to jump between diff sections
light = false # set to true for light terminal
side-by-side = true # show old/new side by side
line-numbers = true
syntax-theme = Dracula
# Now all git diff/log/show output is highlighted
git diff HEAD~1
git log -p --follow -- src/utils.ts
git show a1b2c3d
# zoxide: smarter cd that learns your habits
# Install: brew install zoxide / apt install zoxide
# Add to ~/.zshrc or ~/.bashrc:
eval "$(zoxide init zsh)" # for zsh
eval "$(zoxide init bash)" # for bash
# Usage -- z learns directories you visit frequently
z project # jump to most-used directory matching 'project'
z dev tool # multiple terms: matches paths containing both
zi # interactive mode: fuzzy search with fzf
# After a few days of normal use:
z dev # /Users/you/Development/my-project
z dt # /Users/you/devtoolbox
z log # /var/log or wherever you go most oftenfzf และ jq: การค้นหาแบบ fuzzy และการประมวลผล JSON
fzf เพิ่มการค้นหาแบบ fuzzy เชิงโต้ตอบ jq เป็นเครื่องมือมาตรฐานสำหรับ JSON
# fzf: command-line fuzzy finder -- connects everything together
# Install: brew install fzf / apt install fzf
# Interactive file picker
vim $(fzf) # open any file in vim
code $(fzf --preview 'bat {}') # open in VS Code with preview
# Shell history search (Ctrl+R replacement)
export FZF_CTRL_R_OPTS="--sort --exact"
# Pipe into fzf for interactive selection
git branch | fzf | xargs git checkout # interactive branch switcher
docker ps | fzf | awk '{print $1}' | xargs docker stop
# jq: JSON processor for the command line
# Install: brew install jq / apt install jq
# Basic extraction
curl -s https://api.github.com/repos/sharkdp/fd | jq '.stargazers_count'
cat package.json | jq '.dependencies | keys'
cat data.json | jq '.users[] | {name, email}'
# Filtering and transformation
cat users.json | jq '[.[] | select(.active == true)] | length'
cat logs.json | jq '.[] | select(.level == "error") | .message'
# Build new structure
cat data.json | jq '{ total: length, names: [.[].name] }'
# Compact output (single line)
cat pretty.json | jq -c . # minified JSON outputHTTPie และ xh: HTTP client ที่เป็นมิตรกับนักพัฒนา
HTTPie และ xh มอบไวยากรณ์ที่ใช้งานง่ายสำหรับคำขอ HTTP
# HTTPie / xh: human-friendly HTTP clients
# HTTPie: pip install httpie | brew install httpie
# xh (Rust, faster): brew install xh / cargo install xh
# GET request
http GET https://api.example.com/users
xh GET https://api.example.com/users # same, xh syntax
# POST JSON (auto-detected from key=value syntax)
http POST https://api.example.com/users \
name="Alice" \
email="alice@example.com" \
role=admin
# With headers and auth
http GET https://api.example.com/profile \
Authorization:"Bearer $TOKEN" \
Accept:application/json
# Form data
http --form POST https://example.com/upload file@/path/to/file.txt
# Download file
http --download https://example.com/file.zip
# Save session (cookies, headers) between requests
http --session=./session.json POST https://api.example.com/login \
username=admin password=secret
http --session=./session.json GET https://api.example.com/dashboardShell alias และฟังก์ชันเพิ่มประสิทธิภาพ
Alias และฟังก์ชัน shell ที่ดีช่วยลดการพิมพ์ซ้ำ
# Productivity shell aliases and functions
# Add to ~/.zshrc or ~/.bashrc
# Navigation
alias ..='cd ..'
alias ...='cd ../..'
# Safety nets
alias rm='rm -i' # confirm before delete
alias cp='cp -i' # confirm before overwrite
alias mv='mv -i'
# One-line process management
alias psg='ps aux | grep -v grep | grep -i'
alias ports='ss -tlnp' # listening ports (Linux)
alias myip='curl -s ifconfig.me'
# Git shortcuts
alias gs='git status -sb'
alias ga='git add -p' # interactive staging
alias gl='git log --oneline --graph --decorate -20'
# Modern replacements (if installed)
command -v fd > /dev/null && alias find='fd'
command -v rg > /dev/null && alias grep='rg'
command -v bat > /dev/null && alias cat='bat --paging=never'
command -v eza > /dev/null && alias ls='eza'
# Useful functions
mkcd() { mkdir -p "$1" && cd "$1"; } # mkdir + cd
extract() { # universal archive extractor
case "$1" in
*.tar.gz) tar xzf "$1" ;;
*.tar.bz2) tar xjf "$1" ;;
*.zip) unzip "$1" ;;
*.gz) gunzip "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "Unknown format: $1" ;;
esac
}การเปรียบเทียบเครื่องมือแบบคลาสสิกและสมัยใหม่
| Classic | Modern | Language | Key Improvements |
|---|---|---|---|
| find | fd | Rust | Respects .gitignore, case-insensitive by default, regex support |
| grep | ripgrep (rg) | Rust | 10-100x faster, parallel search, respects .gitignore |
| cat | bat | Rust | Syntax highlighting, line numbers, git diff integration |
| ls | eza | Rust | Colors, git status, icons, tree view, human sizes default |
| diff / git diff | delta | Rust | Syntax highlighting, side-by-side, line numbers, themes |
| cd | zoxide (z) | Rust | Frecency-based jump, interactive with fzf (zi) |
| Ctrl+R history | fzf | Go | Fuzzy search, composable with any command, preview pane |
| python -m json.tool | jq | C | Filter, transform, query — full DSL for JSON |
| curl | httpie / xh | Python/Rust | Human-readable output, auto JSON, session management |
คำถามที่พบบ่อย
เครื่องมือเหล่านี้ใช้งานได้บน macOS ไหม?
ใช่ ทั้งหมดเป็น cross-platform ติดตั้งผ่าน Homebrew หรือ apt/dnf
การใช้ alias grep เป็น rg ปลอดภัยไหม?
สำหรับการใช้งานเชิงโต้ตอบ ใช่ แต่ระวังในสคริปต์
fzf และ zoxide แตกต่างกันอย่างไร?
พวกเขาแก้ปัญหาที่แตกต่างกันและเสริมซึ่งกันและกัน
ควรใช้ HTTPie หรือ curl ในสคริปต์?
curl พกพาได้ดีกว่าสำหรับการทำงานอัตโนมัติ HTTPie/xh ดีกว่าสำหรับการพัฒนาเชิงโต้ตอบ