Shell Functions & Aliases — Terminal

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

Alias dan function bikin perintah panjang jadi pendek. Alias adalah singkatan: shell mengganti kata pendek dengan teks panjangnya, baru menjalankannya. Function adalah perintah buatanmu sendiri: berisi satu langkah atau lebih, dan bisa menerima argumen. Mirip fitur di HP: alias itu seperti teks pintasan di keyboard ("otw" otomatis jadi "on the way, tunggu ya"), sedangkan function seperti shortcut otomatisasi "Pulang" yang menjalankan beberapa langkah sekaligus dan bisa diberi isian, misalnya tujuan mana.

🧪 Tebakan cepat: kamu bikin alias buka='mkdir -p $1 && cd $1', lalu mengetik buka proyek-baru. Folder-nya jadi dan kamu masuk ke sana? Tebak dulu, jawabannya ada di bagian "Kenapa alias gak bisa memakai $1".

Alias: singkatan perintah

alias ll='ls -la'
alias gs='git status'
alias gp='git push'

Ini di terminal bash, di folder ~/belajar yang berisi repo git bersih:

$ type ll
ll is aliased to `ls -la'
$ alias
alias gp='git push'
alias gs='git status'
alias ll='ls -la'
$ gs
On branch main
nothing to commit, working tree clean

Function: perintah dengan langkah dan argumen

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

deploy() {
  npm run build
  git add -A
  git push
}
$ pwd
/home/budi/belajar
$ mkcd proyek-baru
$ pwd
/home/budi/belajar/proyek-baru

Kamu juga akan ketemu bentuk satu baris, function mkcd() { mkdir -p "$1" && cd "$1"; }. Artinya sama. Kalau ditulis satu baris, langkah terakhir diakhiri ; sebelum }.

Kenapa alias gak bisa memakai $1

$ alias buka='mkdir -p $1 && cd $1'
$ buka proyek-baru
mkdir: missing operand
Try 'mkdir --help' for more information.

Alias cuma menempel teks. buka proyek-baru jadi mkdir -p $1 && cd $1 proyek-baru. Di terminal biasa $1 kosong, jadi mkdir -p gak dapat nama folder dan gagal. Karena gagal, && membatalkan cd, dan proyek-baru cuma nyangkut di ujung. Gak ada folder, gak pindah ke mana-mana. Itu jawaban tebakannya.

Jadikan function, dan $1 terisi:

$ unalias buka
$ buka() { mkdir -p "$1" && cd "$1"; }
$ buka proyek-baru
$ pwd
/home/budi/belajar/proyek-baru

unalias buka perlu dijalankan dulu: selama buka masih alias, bash mengganti kata buka di baris definisi function itu juga, dan hasilnya syntax error near unexpected token.

Alias Function
Isinya satu teks pengganti satu langkah atau lebih
Argumen cuma nempel di ujung $1, $2 bisa dipakai di mana saja
Logika if, for gak bisa bisa
Cocok untuk singkatan: ll, gs rangkaian langkah: mkcd, deploy

Simpan permanen di ~/.bashrc atau ~/.zshrc

Alias dan function yang diketik di terminal hilang begitu terminalnya ditutup. Supaya selalu ada, tulis di file konfigurasi shell-mu: ~/.bashrc untuk bash (bawaan Linux) atau ~/.zshrc untuk zsh (bawaan macOS). Lalu muat ulang di terminal yang sedang terbuka:

source ~/.zshrc     # atau: source ~/.bashrc

Terminal baru membaca file itu sendiri waktu dibuka. Detailnya ada di pelajaran Dotfiles.

⚠️ Jebakan yang sering ketemu

TL;DR: Alias adalah singkatan teks: alias ll='ls -la' (tanpa spasi di sekitar =), dan shell cuma mengganti kata pertama, satu kali, lalu sisanya ikut di belakang. Nama yang bukan alias, seperti pwd, jalan apa adanya. Function adalah perintah dengan langkah dan argumen: mkcd() {, tiap langkah di barisnya sendiri dengan dua spasi di depan, lalu }, dan $1 berisi argumen pertama. mkcd projects/baru membuat folder beserta induknya (mkdir -p) lalu masuk (cd), karena && menjalankan cd cuma kalau mkdir berhasil. Alias gak bisa memakai $1: pakai function. Simpan keduanya di ~/.bashrc atau ~/.zshrc, lalu source ~/.zshrc. Cek sebuah nama dengan type nama.

Yang akan kamu pelajari