Alias Bash: membuat, memeriksa, dan menyimpan pintasan perintah

alias adalah perintah bawaan di Bash yang memberikan nama singkat untuk perintah panjang atau kombinasi opsi yang sering digunakan. Anda dapat memeriksa alias yang didefinisikan di shell saat ini atau membuat yang baru, yang berguna untuk mengurangi pengulangan input dan membuat pekerjaan interaktif lebih konsisten.

Alias adalah penggantian teks saat shell membaca perintah, bukan fungsi shell. Jika Anda perlu menempatkan argumen pada posisi tertentu atau menjalankan logika beberapa langkah, fungsi shell lebih tepat.

Apa itu perintah alias?

Dalam Bash, jika kata pertama dari perintah sederhana cocok dengan nama alias, kata itu diganti dengan string yang terdaftar dan kemudian perintah ditafsirkan. Misalnya, jika ll didefinisikan sebagai ls -alF, maka ll /var/log dijalankan seperti ls -alF /var/log.

alias sendiri adalah perintah bawaan Bash. Artikel ini berdasarkan Bash, dan shell lain seperti Zsh mungkin memiliki aturan ekspansi dan berkas konfigurasi yang berbeda.

Sintaks Dasar

alias [-p] [nama[=nilai] ...]

Menjalankannya tanpa argumen akan mencetak semua alias yang didefinisikan di shell saat ini. Jika Anda hanya menentukan sebuah nama, Anda bisa memeriksa alias tersebut, dan dengan menentukan name=value, Anda bisa membuat alias baru atau mengubah nilai yang sudah ada.

alias
alias ll
alias ll='ls -alF'

Memeriksa alias saat ini

Mencetak semua alias

alias

Keluaran umumnya dalam format alias name='value', yang bisa dimasukkan kembali. alias -p juga bisa digunakan untuk tujuan yang sama.

Memeriksa alias tertentu

alias ls
alias grep

Jika nama yang ditentukan tidak didefinisikan sebagai alias, pesan kesalahan akan ditampilkan, dan status kegagalan dikembalikan. Untuk memeriksa apakah nama perintah adalah alias, fungsi, atau eksekusi, gunakan type name.

Membuat alias

Karena nilai tersebut mungkin mengandung spasi atau metakarakter shell, secara umum aman untuk menempatkannya dalam tanda kutip tunggal.

alias ll='ls -alF'
alias grep='grep --color=auto'
alias ..='cd ..'
alias logs='journalctl -xe'

Jangan meletakkan spasi di sekitar =. Jika ditulis alias ll = 'ls -alF', itu tidak menjadi definisi alias. Contoh grep --color=auto memerlukan implementasi yang mendukung opsi tersebut; journalctl memerlukan systemd dan akses ke jurnal yang relevan.

Menyimpan alias untuk penggunaan berkelanjutan

Alias yang didefinisikan di command line hanya berlaku di proses shell saat ini. Untuk menggunakannya di terminal baru, Anda perlu mendefinisikannya di file startup Bash.

alias ll='ls -alF'
alias update='sudo apt update && sudo apt upgrade'

Untuk shell Bash interaktif non-login, tambahkan definisi ke ~/.bashrc di direktori rumah. Shell login membaca berkas profil; apakah profil tersebut juga memuat ~/.bashrc bergantung pada konfigurasi. Beberapa distribusi memuat ~/.bash_aliases dari ~/.bashrc, jadi periksa konfigurasi yang ada terlebih dahulu. Alias update di atas ditujukan untuk sistem berbasis APT; pendefinisiannya tidak menjalankan pembaruan, tetapi pemanggilannya akan meminta hak sudo dan dapat meningkatkan paket.

Setelah menyimpan perubahan, buka shell baru atau muat ulang seluruh ~/.bashrc pada shell saat ini dengan perintah berikut. Memuatnya kembali menjalankan semua perintah dalam berkas itu, jadi periksa isinya terlebih dahulu.

source ~/.bashrc

Contoh alias praktis

Contoh Tujuan
alias la='ls -A' Menampilkan semua entri, termasuk file tersembunyi, kecuali . dan ...
alias c='clear' Membersihkan layar terminal dengan perintah singkat.
alias gs='git status' Memeriksa status pohon kerja Git dengan cepat.
alias dfh='df -h' Menampilkan penggunaan sistem file dalam satuan yang mudah dibaca.
alias mkdir='mkdir -p' Membuat semua direktori induk yang diperlukan. Hati-hati dalam lingkungan tim karena ini mengubah perilaku perintah yang ada.

Cara menjalankan perintah asli

Untuk sementara melewati alias pada nama di mana alias berlaku, Anda bisa menambahkan garis miring terbalik di depan perintah.

\ls

\ls melewati alias ls, tetapi tetap dapat memanggil fungsi bernama ls. command ls biasanya melewati alias dan fungsi tersebut, tetapi command sendiri dapat didefinisikan ulang; alias yang berakhir dengan spasi juga dapat memengaruhi kata berikutnya. Jalur absolut seperti /usr/bin/ls menghindari pencarian nama; periksa jalurnya dengan type -P ls karena lokasinya dapat berbeda.

Gunakan fungsi shell jika argumen diperlukan

Alias tidak dapat menempatkan argumen pertama di tengah ekspansi. Definisikan fungsi berikut dalam Bash interaktif, lalu jalankan mkcd "folder baru". Fungsi membuat direktori jika perlu dan berpindah ke dalamnya pada shell saat ini. Jika jumlah argumen salah, fungsi menampilkan cara penggunaan dan mengembalikan kegagalan.

mkcd() {
  if [ "$#" -ne 1 ] || [ -z "$1" ]; then
    printf '%s\n' 'Penggunaan: mkcd direktori' >&2
    return 1
  fi
  local dir=$1
  case $dir in /*|./*|../*) ;; *) dir=./$dir ;; esac
  mkdir -p -- "$dir" && CDPATH= cd -- "$dir"
}

Awalan ./ menjaga nama relatif, termasuk nama yang diawali tanda hubung; CDPATH= memastikan cd memilih jalur yang dibuat. Periksa lokasi dengan pwd. Untuk kembali, gunakan cd ..; hapus direktori uji yang kosong dengan rmdir -- "folder baru".

Argumen yang dimasukkan setelah alias ditambahkan apa adanya di akhir perintah yang diperluas. Jika tujuannya hanya untuk menambahkan opsi default, alias sudah cukup, tetapi jika diperlukan kondisi, loop, atau validasi argumen, gunakan fungsi.

Ketika sebuah alias tidak diperluas

Shell Non-Interaktif dan Skrip

Bash secara default tidak memperluas alias di shell non-interaktif. Anda dapat mengubah ini dengan shopt -s expand_aliases, tetapi dalam skrip, menggunakan fungsi atau perintah eksplisit daripada alias lebih baik untuk portabilitas dan prediktabilitas.

Mendefinisikan dan mengeksekusi dalam baris yang sama

Alias diperluas saat Bash membaca perintah, bukan pada saat eksekusi. Oleh karena itu, alias yang didefinisikan pada baris yang sama atau dalam perintah gabungan tunggal mungkin tidak berlaku untuk perintah yang langsung mengikuti.

alias hi='printf "hello\n"'; hi

Jika hi belum didefinisikan, baris ini mendefinisikannya, tetapi pemanggilan di baris yang sama tidak memakai definisi baru dan dapat menghasilkan kesalahan perintah tidak ditemukan. Pada shell interaktif, masukkan definisi dan pemanggilan pada baris terpisah. Dalam skrip, gunakan fungsi atau perintah eksplisit.

Kriteria untuk penggunaan yang aman

  • Hindari alias yang menyembunyikan operasi berbahaya seperti penghapusan atau penimpaan.
  • Saat menggunakan nama yang sama dengan perintah bawaan, sadari bahwa perilakunya mungkin berbeda.
  • Pastikan prosedur operasi server atau skrip yang dibagikan tidak bergantung pada alias pribadi.
  • Gunakan fungsi ketika diperlukan penanganan kutipan yang kompleks, pipeline, dan pemrosesan argumen.
  • Periksa definisi aktual dari sebuah alias dengan alias name atau type name.

Perbandingan alias, fungsi, skrip

Metode Penggunaan yang sesuai Perhatian
alias Tambahkan nama pendek atau opsi default di shell interaktif Sulit untuk menangani argumen posisi dan logika kompleks secara langsung.
Fungsi shell Argumen, pernyataan kondisional, dan tugas berulang yang membutuhkan beberapa perintah Jenis shell saat ini dan definisi fungsi diperlukan.
Skrip eksekusi Tugas yang dapat digunakan kembali oleh pengguna dan sistem yang menyediakan interpreter serta dependensi yang diperlukan Penempatan file, izin eksekusi, dan manajemen PATH diperlukan.

Pertanyaan yang Sering Diajukan

Saya membuat alias, tetapi menghilang di terminal baru.

Alias yang dibuat dari command line hanya ada di shell saat ini. Simpan di ~/.bashrc atau file konfigurasi alias yang digunakan oleh distribusi Anda, dan mulai shell baru.

Bisakah saya menyertakan argumen dalam nama alias?

Argumen yang dimasukkan setelah alias ditambahkan di akhir ekspansi, tetapi Anda tidak dapat menentukan posisinya seperti $1. Jika Anda perlu menentukan posisi argumen atau melakukan validasi, gunakan fungsi shell.

Bagaimana cara menghapus alias?

Di shell saat ini, gunakan unalias name. Jika alias disimpan di file startup, hapus atau komentari definisinya juga agar tidak dibuat kembali di shell baru. Menghapus baris dari berkas saja tidak menghapus alias yang sudah ada di shell saat ini.

Artikel terkait dan dokumentasi resmi