Shell Functions & Aliases — Terminal

Shell Functions & Aliases Alias dan function adalah dua cara utama untuk mempercepat workflow di terminal — keduanya mempersingkat perintah yang sering diketik.

Shell Functions & Aliases

Alias dan function adalah dua cara utama untuk mempercepat workflow di terminal — keduanya mempersingkat perintah yang sering diketik.

Alias — Pintasan Perintah

Alias adalah nama pendek untuk perintah yang lebih panjang:

# Definisi alias (biasanya di ~/.bashrc atau ~/.zshrc)
alias ll="ls -la"
alias la="ls -A"
alias gs="git status"
alias gp="git push"
alias gco="git checkout"
alias ..="cd .."
alias ...="cd ../.."
alias mkdir="mkdir -p"

# Gunakan langsung
ll           # sama dengan: ls -la
gs           # sama dengan: git status
.. ..        # naik dua level

Lihat semua alias aktif:

alias           # tampilkan semua alias
alias ll        # tampilkan alias tertentu
unalias ll      # hapus alias

Shell Functions — Perintah dengan Logika

Berbeda dengan alias, function bisa menerima argumen dan punya logika:

# Function sederhana
mkcd() {
    mkdir -p "$1" && cd "$1"
}

# Penggunaan
mkcd my-project   # buat folder + langsung masuk

# Function dengan beberapa argumen
backup() {
    local src="$1"
    local dest="${2:-./backup}"
    cp -r "$src" "$dest/$(basename $src)_$(date +%Y%m%d)"
    echo "Backup selesai: $dest"
}

backup ./src ./backups

# Function untuk Git workflow
gac() {
    git add -A && git commit -m "$1"
}

gac "feat: tambah fitur login"

Contoh Alias & Function Praktis

# ── Navigasi ──────────────────────────────
alias home="cd ~"
alias desk="cd ~/Desktop"
alias proj="cd ~/projects"

# ── Git shortcuts ─────────────────────────
alias gst="git status"
alias gaa="git add -A"
alias glog="git log --oneline --graph --all"

# ── Development ───────────────────────────
alias serve="python3 -m http.server 8000"
alias npmls="npm list --depth=0"

# ── System ────────────────────────────────
alias ports="lsof -i -P -n | grep LISTEN"
alias myip="curl -s https://ipinfo.io/ip"
alias diskspace="df -h"

# ── Functions ─────────────────────────────
# Cari text di semua file
search() {
    grep -r "$1" . --include="*.${2:-*}"
}

# Extract berbagai format archive
extract() {
    case "$1" in
        *.tar.gz)  tar -xzf "$1" ;;
        *.zip)     unzip "$1" ;;
        *.tar.bz2) tar -xjf "$1" ;;
        *)         echo "Format tidak dikenal: $1" ;;
    esac
}

Menyimpan Alias & Function Secara Permanen

# Edit file konfigurasi shell
nano ~/.zshrc      # untuk zsh
nano ~/.bashrc     # untuk bash

# Tambahkan alias/function di bagian bawah
# Lalu reload konfigurasi
source ~/.zshrc
# atau
. ~/.zshrc

Tips Penamaan

  1. Singkat tapi bermaknagco untuk git checkout, bukan x
  2. Hindari menimpa perintah system — jangan alias ls ke hal lain
  3. Gunakan type <nama> untuk cek apakah nama sudah dipakai
  4. Dokumentasikan — tambahkan komentar # keterangan di atas alias penting