เป็นตัวอย่างที่ดีที่สุดขอให้ฉันใช้นามแฝงคำสั่งมาตรฐานเพื่อแสดงให้เห็นว่าทำไมการนามแฝงคำสั่งมาตรฐานอาจเป็นอันตราย:
alias ls='rm'
เห็นได้ชัดว่านี่เป็นสิ่งที่ไม่ดีเพราะมันจะทำให้แปลกใจที่น่ารังเกียจบางวัน ในทำนองเดียวกันการแทนที่คำสั่งมาตรฐานด้วยนามแฝงในที่สุดก็จะนำไปสู่ความประหลาดใจที่โชคร้ายเมื่อคุณคาดหวังมันน้อยที่สุด
แต่ให้ฉันนำเสนอสถานการณ์ทั่วไปที่จะเกิดขึ้นกับผู้ดูแลระบบ Unix เกือบทุกคนในขณะที่พวกเขาก้าวหน้าในอาชีพของพวกเขา:
สักวันหนึ่งในอนาคตคุณจะเริ่มงานใหม่และจะทำงานกับระบบใหม่ที่คนอื่นตั้งขึ้นมา มันจะเป็นสามนาฬิกาในตอนเช้าของวันเสาร์และคุณไม่ได้คิดอะไรและมีแนวโน้มที่จะทำผิดพลาด สภาพแวดล้อมมาตรฐานของคุณจะไม่สามารถใช้ได้ ในความเป็นจริงคุณเป็นรากฐาน
รับสิ่งนี้คุณจะจำrm
ได้rm -i
ไหมว่าไม่ได้ใช้นามแฝง? คุณจะตรวจสอบนามแฝงพิเศษของคุณทุกครั้งที่คุณลงชื่อเข้าใช้ในช่อง? หากคุณเปลี่ยนสภาพแวดล้อมของรูทเพื่อนร่วมงานของคุณจะมีความสุขกับการเปลี่ยนแปลงของคุณหรือไม่
ฉันซื่อสัตย์กับรั้วเกี่ยวกับเรื่องนี้ ฉันทำงานกับระบบหลายพันระบบในอาชีพการงานของฉันและถ้าฉันปรับเปลี่ยนสภาพแวดล้อมในระบบเหล่านี้ทั้งหมดมันคงยากที่จะเห็นคุณค่า
aliasing 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
ตั้งค่าสถานะโดยอัตโนมัติ