Như một ví dụ cực đoan, hãy để tôi chỉ bí danh một lệnh tiêu chuẩn để minh họa tại sao các lệnh tiêu chuẩn có thể gây hại:
alias ls='rm'
Rõ ràng, điều này là xấu bởi vì nó sẽ gây ra một bất ngờ khó chịu một ngày nào đó. Tương tự như vậy, thay thế các lệnh tiêu chuẩn bằng bí danh cuối cùng sẽ dẫn đến một bất ngờ đáng tiếc khi bạn ít mong đợi nhất.
Nhưng hãy để tôi trình bày một kịch bản phổ biến sẽ xảy ra với gần như mọi quản trị viên Unix khi họ thăng tiến trong sự nghiệp:
Một ngày nào đó trong tương lai, bạn sẽ bắt đầu một công việc mới và sẽ làm việc trên một hệ thống mới do những người khác thiết lập. Bây giờ sẽ là ba giờ sáng thứ bảy và bạn không suy nghĩ thẳng và dễ mắc sai lầm. Môi trường tiêu chuẩn của bạn sẽ không có sẵn. Trong thực tế, bạn là root.
Với điều này, bạn sẽ nhớ rằng rm
nó không phải là bí danh rm -i
? Bạn sẽ kiểm tra bí danh đặc biệt của mình mỗi khi bạn đăng nhập vào hộp không? Nếu bạn thay đổi môi trường của root, đồng nghiệp của bạn có hài lòng với thay đổi của bạn không?
Tôi thành thật trên hàng rào về điều này. Tôi đã làm việc trên hàng ngàn hệ thống trong sự nghiệp của mình và nếu tôi sửa đổi môi trường trên tất cả các hệ thống này, thật khó để thấy giá trị.
Aliasing rm
để rm -i
là rất phổ biến và tôi đã nhìn thấy nó ngăn ngừa nhiều vấn đề, nhưng nó cũng đã gây ra nhiều bất ngờ và giờ làm việc thêm để khôi phục tập tin vô tình bị xóa.
Vì vậy, bây giờ tôi cố gắng tránh răng cưa các lệnh hệ thống phổ biến. Thay vào đó, tôi sử dụng các bí danh và các hàm để làm những việc mà trình bao không thể dễ dàng thực hiện. Những gì tôi có xu hướng làm bây giờ là đính kèm một chữ cái thêm vào bí danh, như:
# 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 ; }
Và có lẽ tôi thực sự nên loại bỏ bí danh cuối cùng của mình, bởi vì việc thích nghi với thực tiễn mới cần có thời gian:
# For safety!
alias rm='rm -i'
rm -i
, nó sẽ huấn luyện tôi thêm một chút để tự động thêm-f
cờ.