Sebagai contoh ekstrem, izinkan saya hanya alias perintah standar untuk menggambarkan mengapa aliasing perintah standar dapat berbahaya:
alias ls='rm'
Jelas, ini buruk karena akan menyebabkan kejutan buruk suatu hari nanti. Demikian juga, mengganti perintah standar dengan alias pada akhirnya akan menyebabkan kejutan yang disayangkan ketika Anda tidak mengharapkannya.
Tapi izinkan saya menyajikan skenario umum yang akan terjadi pada hampir setiap admin Unix saat mereka maju dalam karir mereka:
Suatu hari di masa depan, Anda akan memulai pekerjaan baru dan akan bekerja pada sistem baru yang dibuat oleh orang lain. Ini akan menjadi jam tiga pagi pada hari Sabtu dan Anda tidak berpikir jernih dan cenderung membuat kesalahan. Lingkungan standar Anda tidak akan tersedia. Faktanya, Anda root.
Mengingat ini, apakah Anda akan mengingat yang rm
tidak alias rm -i
? Apakah Anda akan memeriksa alias khusus Anda setiap kali Anda masuk ke dalam kotak? Jika Anda mengubah lingkungan root, apakah rekan kerja Anda akan senang dengan perubahan Anda?
Saya jujur di pagar tentang ini. Saya telah bekerja pada ribuan sistem dalam karier saya, dan jika saya memodifikasi lingkungan pada semua sistem ini, akan sulit untuk melihat nilainya.
Mengasingkan rm
ke rm -i
sangat umum dan saya telah melihatnya mencegah banyak masalah, tetapi juga menyebabkan banyak kejutan dan jam kerja ekstra untuk memulihkan file yang terhapus secara tidak sengaja.
Jadi sekarang saya mencoba untuk menghindari aliasing perintah sistem umum. Sebaliknya saya menggunakan alias dan fungsi untuk melakukan hal-hal yang shell tidak dapat dengan mudah dilakukan. Apa yang saya cenderung lakukan sekarang adalah melampirkan surat tambahan ke alias, seperti:
# List long, with color or special characters, depending on OS
alias ll='ls -l'
# Long, with metacharacters, show dotfiles, don't show . and ..
alias lll='ls -lA'
# Long, with metacharacters, show dotfiles, show . and ..
alias lla='ls -la'
# List just the dotfiles
alias l.='ls -l -Ad .????*'
# Useful greps
#alias hgrep='history |grep ${*} |grep -v $$'
alias greph='history |grep ${*}'
alias grepp='ps -ef |grep ${*}'
### Highlight some text.
# From http://unix.stackexchange.com/questions/366/convince-grep-to-output-all-lines-not-just-those-with-matches/367#367
highlight () { grep --color -E "$1|$" $2 ; }
Dan mungkin saya benar-benar harus menyingkirkan alias terakhir saya, karena beradaptasi dengan praktik baru membutuhkan waktu:
# For safety!
alias rm='rm -i'
rm -i
, itu melatih saya sedikit lebih untuk secara otomatis menambahkan-f
bendera.