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 mengetikbuka 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'
- Bentuknya
alias nama='perintah'. Gak boleh ada spasi di sekitar=, dan perintahnya dibungkus tanda kutip. - Waktu kamu mengetik
ll, shell mengganti kata pertama itu denganls -la, lalu menjalankannya. Kata lain di belakangnya ikut:ll catatanjadils -la catatan. - Kata yang bukan alias, seperti
pwd, dijalankan apa adanya.
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
type namamemberi tahu sebuah nama itu alias, function, perintah bawaan shell, atau program. Kalau jawabannyabash: type: nama: not found, nama itu masih bebas dipakai.aliastanpa apa-apa menampilkan semua alias, urut abjad.unalias llmenghapus satu alias.
Function: perintah dengan langkah dan argumen
mkcd() {
mkdir -p "$1" && cd "$1"
}
deploy() {
npm run build
git add -A
git push
}
mkcd() {membuka function bernamamkcd, dan}menutupnya. Langkahnya ditulis di antaranya, satu langkah per baris, menjorok dua spasi.$1di dalam function adalah argumen pertama waktu function-nya dipanggil, sama seperti$1di script.&&artinya "jalankan yang kanan cuma kalau yang kiri berhasil". Kalaumkdirgagal,cdgak dijalankan.mkdir -pmembuat folder sekalian folder induknya yang belum ada, dan gak protes kalau folder-nya sudah ada. Jadimkcd projects/barumembuatprojectsdanprojects/baru, lalu langsung masuk ke dalamnya.deploygak butuh argumen: tiga langkahnya jalan berurutan tiap kali kamu mengetikdeploy. Function tiga langkah = lima baris: pembuka, tiga langkah, penutup.
$ 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
- Spasi di sekitar
=.alias ll = 'ls -la'gak bikin alias. Bash malah mencari tiga alias yang gak ada:bash: alias: ll: not found,bash: alias: =: not found,bash: alias: ls -la: not found. - Memakai
$1di alias. Begitu butuh argumen di tengah perintah, pakai function. $1tanpa tanda kutip di function.mkcd "tugas akhir"denganmkdir -p $1membuat dua folder,tugasdanakhir, lalucdprotes karena dapat dua argumen. Tulis"$1".- Nama yang menimpa perintah lain.
alias ls='ls -la'atau function bernamatestdiam-diam mengganti perintah aslinya. Cek dulu dengantype nama.
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.