극단적 인 예로, 표준 명령의 별칭을 지정하는 것이 왜 해로운 지 설명하기 위해 표준 명령의 별칭을 지정하겠습니다.
alias ls='rm'
분명히 이것은 언젠가는 끔찍한 놀라움을 일으킬 것이기 때문에 나쁘다. 마찬가지로 표준 명령을 별칭으로 바꾸면 결국 예상치 못한 불행한 결과를 초래할 수 있습니다.
그러나 거의 모든 유닉스 관리자들이 커리어가 발전함에 따라 일어날 일반적인 시나리오를 제시하겠습니다.
언젠가는 새로운 일을 시작하고 다른 사람들이 세운 새로운 시스템에서 일하게 될 것입니다. 토요일 오전 3시에 시작될 것입니다. 당신은 똑바로 생각하지 않고 실수를 저지르기 쉽습니다. 표준 환경을 사용할 수 없습니다. 사실, 당신은 뿌리입니다.
이것을 감안할 때, 당신 rm
은 그것이 별칭이 아닌 것을 기억할 것 rm -i
입니까? 상자에 로그인 할 때마다 특수한 별칭을 확인 하시겠습니까? 루트의 환경을 바꾸면 동료가 변화에 만족할 것입니까?
나는 이것에 대해 정직하게 울타리에 있습니다. 저는 경력에 따라 수천 대의 시스템을 연구했으며 이러한 모든 시스템에서 환경을 수정 한 경우 그 가치를 파악하기가 어렵습니다.
앨리어싱 rm
을하는 것은 rm -i
매우 일반적이며 나는 그것이 많은 문제를 방지 보았다, 그러나 또한 많은 놀라움과 실수로 삭제 된 파일을 복구 할 수있는 추가 작업 시간이 발생했습니다.
이제 일반적인 시스템 명령의 별칭을 피하려고합니다. 대신 별칭과 함수를 사용하여 셸에서 쉽게 수행 할 수없는 작업을 수행합니다. 내가 지금하는 일은 다음과 같이 별칭에 추가 문자를 첨부하는 것입니다.
# 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 ; }
그리고 아마도 새로운 관행에 적응하는 데 시간이 걸리기 때문에 아마도 최종 별칭을 제거해야 할 것입니다.
# For safety!
alias rm='rm -i'
rm -i
인 시스템을 여행 할 때마다 자동으로-f
플래그를 추가하도록 조금 더 훈련시킵니다 .