Setup Ubuntu 24.04 dengan Zsh dan Autocompletion agar Terminal Lebih Nyaman
· 12 min

Panduan lengkap mengubah terminal Ubuntu 24.04 menjadi lebih nyaman untuk developer dengan Zsh, autocompletion, autosuggestions, syntax highlighting, fzf, zoxide, eza, dan berbagai shortcut produktivitas.
Terminal merupakan salah satu tools yang paling sering digunakan oleh developer maupun system administrator. Jika setiap hari bekerja menggunakan SSH, Git, Docker, Frappe, ERPNext, Nginx, Supervisor, atau berbagai command Linux lainnya, konfigurasi shell yang nyaman dapat meningkatkan produktivitas secara signifikan.
Pada tutorial ini kita akan mengubah shell default Ubuntu 24.04 dari Bash menjadi Zsh, kemudian menambahkan autocompletion, autosuggestions, syntax highlighting, pencarian history menggunakan fzf, navigasi folder menggunakan zoxide, serta eza sebagai alternatif modern untuk perintah ls.
Konfigurasi terminal yang baik seharusnya mempercepat pekerjaan tanpa membuat environment menjadi terlalu kompleks.
Stack yang Digunakan #
- Zsh sebagai shell utama
- Native Zsh compinit untuk autocompletion
- zsh-autosuggestions untuk suggestion berdasarkan history
- zsh-syntax-highlighting untuk membedakan command valid dan tidak valid
- fzf untuk pencarian history interaktif
- zoxide untuk navigasi directory yang lebih cepat
- eza sebagai pengganti ls
- bat sebagai alternatif cat dengan syntax highlighting
- Alias untuk Git, Linux server, Nginx, Supervisor, dan Frappe
1. Install Package yang Dibutuhkan #
Pertama, update repository Ubuntu kemudian install semua package yang akan digunakan.
sudo apt update
sudo apt install -y \
zsh \
zsh-autosuggestions \
zsh-syntax-highlighting \
fzf \
zoxide \
eza \
bat \
git \
curlSetelah proses instalasi selesai, cek versi Zsh.
zsh --version2. Jadikan Zsh sebagai Default Shell #
Gunakan perintah chsh agar Zsh menjadi shell default untuk user saat ini.
chsh -s "$(which zsh)"Untuk memastikan perubahan sudah tersimpan, cek konfigurasi user pada file /etc/passwd.
grep "$USER" /etc/passwdBagian terakhir seharusnya mengarah ke /usr/bin/zsh. Setelah itu logout dari SSH lalu login kembali. Jika ingin langsung mencoba tanpa logout, gunakan perintah berikut.
exec zsh3. Konfigurasi File .zshrc #
File ~/.zshrc merupakan file konfigurasi utama Zsh. Sebelum mengubahnya, buat backup terlebih dahulu.
cp ~/.zshrc ~/.zshrc.backup 2>/dev/null || trueKemudian buka file konfigurasi.
nano ~/.zshrcGunakan konfigurasi berikut sebagai dasar.
export PATH="$HOME/.local/bin:$PATH"
HISTFILE="$HOME/.zsh_history"
HISTSIZE=50000
SAVEHIST=50000
setopt APPEND_HISTORY
setopt INC_APPEND_HISTORY
setopt SHARE_HISTORY
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_FIND_NO_DUPS
setopt HIST_REDUCE_BLANKS
setopt HIST_VERIFY
setopt AUTO_CD
setopt INTERACTIVE_COMMENTS
unsetopt BEEP
bindkey -e
bindkey "^[[H" beginning-of-line
bindkey "^[[F" end-of-line
autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search
bindkey "^[[B" down-line-or-beginning-search
autoload -Uz compinit
mkdir -p "$HOME/.cache/zsh"
compinit -d "$HOME/.cache/zsh/zcompdump"
zstyle ':completion:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
zstyle ':completion:*:descriptions' format '%F{yellow}-- %d --%f'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path "$HOME/.cache/zsh"
if [ -f /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]; then
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
fi
if [ -f /usr/share/doc/fzf/examples/key-bindings.zsh ]; then
source /usr/share/doc/fzf/examples/key-bindings.zsh
fi
if [ -f /usr/share/doc/fzf/examples/completion.zsh ]; then
source /usr/share/doc/fzf/examples/completion.zsh
fi
if command -v zoxide >/dev/null 2>&1; then
eval "$(zoxide init zsh)"
fi
alias c="clear"
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias grep="grep --color=auto"
alias gs="git status"
alias ga="git add"
alias gc="git commit"
alias gp="git push"
alias gl="git pull"
alias gd="git diff"
alias gb="git branch"
alias gco="git checkout"
alias ports="sudo ss -lntp"
alias dfh="df -h"
alias duh="du -h"
alias mem="free -h"
if command -v eza >/dev/null 2>&1; then
alias ls="eza"
alias ll="eza -lah --group-directories-first"
alias la="eza -a"
alias lt="eza --tree --level=2"
else
alias ll="ls -lah"
alias la="ls -A"
fi
if command -v batcat >/dev/null 2>&1; then
alias bat="batcat"
fi
autoload -Uz colors
colors
setopt PROMPT_SUBST
PROMPT='%F{cyan}%n%f@%F{green}%m%f:%F{blue}%~%f
%(?.%F{green}.%F{red})❯%f '
if [ -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]; then
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
fiSetelah file disimpan, reload konfigurasi tanpa perlu logout.
source ~/.zshrc4. Menggunakan Autocompletion #
Zsh memiliki sistem autocompletion yang jauh lebih fleksibel dibanding shell standar. Cukup tekan TAB saat mengetik command.
sudo systemctl rest<TAB>Zsh dapat melengkapi command menjadi restart. Autocompletion juga dapat digunakan untuk service, branch Git, directory, file, dan banyak command lainnya.
sudo systemctl restart <TAB>
git checkout <TAB>5. Autosuggestions dari Command History #
Plugin zsh-autosuggestions menampilkan rekomendasi command berdasarkan command yang pernah dijalankan sebelumnya.
sudo supervisorctl statusJika command tersebut pernah digunakan, ketika Anda mengetik sudo sup, Zsh dapat menampilkan kelanjutan command secara otomatis. Tekan tombol panah kanan untuk menerima suggestion.
6. Syntax Highlighting #
zsh-syntax-highlighting memberikan warna berbeda antara command yang valid dan command yang tidak ditemukan. Fitur sederhana ini sangat membantu mengurangi typo ketika bekerja langsung di server.
git status
gitt status7. Mencari History dengan fzf #
Salah satu fitur paling berguna dari setup ini adalah pencarian command history menggunakan fzf. Tekan CTRL + R lalu ketik bagian dari command yang ingin dicari.
bench --site advan.localhost migrate
bench restart
bench update
bench --site bpos.localhost doctor
bench setup nginxDengan cara ini Anda tidak perlu lagi menekan tombol panah atas berkali-kali untuk mencari command lama.
8. Navigasi Folder Lebih Cepat dengan zoxide #
zoxide dapat dianggap sebagai versi pintar dari perintah cd. Tool ini mempelajari directory yang sering dikunjungi.
cd ~/frappe-custom-15/apps/blueprint_pos/blueprint_pos/apiSetelah directory sering dikunjungi, Anda dapat berpindah ke sana menggunakan bagian dari nama folder.
z blueprint
z apiFitur ini sangat membantu jika satu server memiliki banyak project atau banyak Frappe Bench.
9. Menggunakan eza sebagai Pengganti ls #
eza merupakan alternatif modern untuk perintah ls. Output-nya lebih informatif dan mendukung tampilan tree.
ll
ltAlias ll menampilkan file secara detail, sedangkan lt menampilkan struktur directory berbentuk tree hingga dua level.
10. Alias yang Berguna untuk Server #
Jika sering mengelola Ubuntu server, beberapa command panjang dapat dibuat menjadi alias.
alias nginx-test="sudo nginx -t"
alias nginx-reload="sudo systemctl reload nginx"
alias sup="sudo supervisorctl"
alias supstatus="sudo supervisorctl status"
alias ports="sudo ss -lntp"
alias services="systemctl --type=service --state=running"
alias disk="df -h"
alias memory="free -h"
alias cpu="uptime"Dengan konfigurasi tersebut, command panjang seperti sudo supervisorctl status cukup dijalankan menggunakan supstatus.
11. Alias Git #
Git termasuk command yang paling sering digunakan developer, sehingga alias sederhana dapat mempercepat workflow.
alias gs="git status"
alias ga="git add"
alias gc="git commit"
alias gp="git push"
alias gl="git pull"
alias gd="git diff"
alias gb="git branch"
alias gco="git checkout"12. Alias untuk Frappe dan ERPNext #
Jika server menjalankan banyak Frappe Bench, Anda dapat menambahkan alias navigasi.
alias f15="cd ~/frappe-15"
alias fc15="cd ~/frappe-custom-15"
alias fb="cd ~/frappe-bench"
alias br="bench restart"
alias bs="bench start"
alias bup="bench update"Hindari membuat alias migrate yang langsung mengeksekusi semua site jika server menjalankan banyak site. Lebih aman menentukan site secara eksplisit.
bench --site example.localhost migrate13. Memastikan Autocompletion Docker Berjalan #
Jika Docker sudah terinstall, coba tekan TAB setelah command Docker.
docker <TAB>
docker compose <TAB>Jika muncul error terkait file completion _docker, kemungkinan terdapat broken symbolic link pada directory completion Zsh.
find -L /usr/share/zsh/vendor-completions -type l -printJika file _docker memang merupakan broken symlink, hapus file tersebut kemudian rebuild cache completion.
sudo rm /usr/share/zsh/vendor-completions/_docker
rm -f ~/.zcompdump*
rm -f ~/.cache/zsh/zcompdump*
exec zsh14. Shortcut Zsh yang Wajib Diketahui #
- TAB — autocomplete command, file, directory, atau option
- TAB dua kali — menampilkan pilihan autocomplete
- CTRL + R — mencari command history menggunakan fzf
- CTRL + A — memindahkan cursor ke awal command
- CTRL + E — memindahkan cursor ke akhir command
- CTRL + U — menghapus teks sebelum cursor
- CTRL + K — menghapus teks setelah cursor
- CTRL + W — menghapus satu kata sebelum cursor
- CTRL + L — membersihkan tampilan terminal
- CTRL + C — membatalkan command yang sedang berjalan
- CTRL + Z — suspend process
- Panah kanan — menerima autosuggestion
- Panah atas dan bawah — mencari history berdasarkan teks yang sedang diketik
15. Opsional: Menggunakan Starship Prompt #
Jika menginginkan tampilan prompt yang lebih modern, Starship dapat digunakan untuk menampilkan informasi Git branch, versi Python, Node.js, Rust, Go, status command, dan execution time.
Namun untuk server production, prompt Zsh sederhana sering kali lebih ideal karena lebih ringan, lebih sedikit dependency, dan lebih mudah ditroubleshoot ketika melakukan SSH ke banyak server.
16. Hasil Akhir #
Setelah seluruh konfigurasi selesai, environment terminal akan memiliki autocomplete, command suggestions, syntax highlighting, pencarian history interaktif, navigasi directory pintar, dan alias untuk command yang sering digunakan.
Zsh
|
+-- Native compinit
| +-- TAB autocomplete
|
+-- zsh-autosuggestions
| +-- command suggestion dari history
|
+-- zsh-syntax-highlighting
| +-- command valid dan invalid lebih mudah dibedakan
|
+-- fzf
| +-- CTRL + R interactive history
|
+-- zoxide
| +-- smart directory navigation
|
+-- eza
| +-- modern replacement untuk ls
|
+-- bat
| +-- modern replacement untuk cat
|
+-- aliases
+-- Git
+-- systemctl
+-- Supervisor
+-- Nginx
+-- Frappe dan ERPNextKesimpulan #
Untuk Ubuntu 24.04 yang digunakan sebagai development server maupun production server, kombinasi native Zsh, zsh-autosuggestions, zsh-syntax-highlighting, fzf, zoxide, dan eza memberikan keseimbangan yang baik antara kenyamanan, kecepatan, dan kemudahan maintenance.
Pendekatan ini juga tidak bergantung pada framework besar seperti Oh My Zsh, sehingga startup shell tetap ringan dan konfigurasi lebih mudah dipahami ketika terjadi masalah.
Terminal yang nyaman bukan sekadar soal tampilan. Tujuan utamanya adalah mengurangi command berulang, menghindari typo, dan membuat pekerjaan di server menjadi lebih cepat.