
나는 얼마 전에 그러한 별칭을 사용하는 것이 alias rm="rm -i"
매우 나쁘다는 것을 읽었습니다(참조를 찾을 수 없음).
그 사실에 대한 역사적 증거나 상식적인 설명이 있습니까?
나는 이것이 사용자에게 자신의 명령을 확인하기 위해 확인 프롬프트에 의존하는 나쁜 습관을 갖게 한다고 생각합니다. 별칭이 없는 다른 프로필에서 그렇게 하면 재난이 발생할 수 있습니다.
답변1
네가 옳아.
익숙해지기 때문에 나쁘다. 해당 시스템이 없는 경우 rm
시스템이 즉시 삭제되기 시작하고 무슨 일이 일어나고 있는지 궁금합니다.
많은 사용자가 다른 시스템에 SSH를 사용하는 데 익숙합니다. 따라서 때로는 개인화된 사용자 계정(별칭 포함)을 설정하지 않고 다양한 시스템을 사용하는 것이 일반적입니다.
대신, 예를 사용 alias rmi='rm -i'
하고 그 사용법을 배우십시오. 다른 시스템에 설정되어 있지 않은 경우 실수로 파일을 삭제하지 않았으므로 언제든지 전체 명령을 입력할 수 있습니다.
답변2
@Daniel이 말했듯이, 그것이 거기에 있을 것이라고 기대하도록 훈련시키는 것 외에는 그 자체로는 해롭지 않습니다. 실제로 이는 CentOS(그리고 RHEL을 확장하면 사용하고 나서 너무 오래 된 것 같습니다) 시스템의 기본 설정입니다.그리고 그건 엉덩이에 엄청난 고통이었어. 그 공연의 나머지 시간 동안 나는 "루트 액세스 권한이 없어야 하는 사람들을 위한 Linux" 설정을 피하기 위해 /bin/rm을 입력했습니다.
답변3
내 생각에 가장 큰 위험은 사람들이 덩어리를 필터링하기 위해 이와 같은 것에 의존할 수 있다는 것입니다. 디렉터리에서 일부 이미지를 삭제하고 싶지만 전부는 삭제하지 않으려고 한다고 상상해 보세요.
rm -i pics/*.jpg
이를 사용하여 글로브를 수동으로 필터링할 수 있으며 이는 완전히 합리적입니다. 그러나 별칭을 지정하고 사용 중이었는데 rm
해당 별칭 없이 쉘에 착륙하여 시도해 본 경우... 방금 사진을 모두 삭제한 것입니다. 이런!
개인적으로 나는 이 별칭이 내 혈압에 해롭다고 생각합니다. ;) 하지만 그게 바로 나야.
답변4
이것은많이과거에 수백 명의 사용자와 작업한 경험에 따르면 덜 유해합니다.
rm () # must be a function, must require single answer for all targets
{
ls -FCsd "$@"
local reply ; echo -n 'remove[ny]? ' ; read reply
if [ "_$reply" = "_y" ] ; then
/bin/rm -rf "$@" ; else echo '(cancelled)'
fi
}
- 사용자는 '*'뿐만 아니라 와일드카드를 올바르게 사용하고 y/n 프롬프트에 의존하여 파일을 선택하도록 교육받습니다.
rm
올바른 와일드카드를 사용하기 위한 조건은 이 기능이나 별칭이 부족한 다른 컨텍스트에서 사용될 때 종종 재난으로부터 보호되었습니다rm -i
.- 사용자가 'y'를 너무 많이 입력한 파일을 복원하는 데 소요되는 시간이 줄었습니다.
- 사용자는 한 번만 응답하면 됩니다. 사용에 대한 뚜렷한 긍정적인 피드백을 제공합니다.
- Control-c는 작업을 중단하고 아무 작업도 하지 않는 것으로 보고됩니다.
- 스크립트가 아니므로 실제 내용이
rm
그대로 유지되어 다른 프로그램도 그대로 유지됩니다.
코드 스타일은 대부분 sh와 호환되므로( echo .... | tr -d '\012'
bash 이전 쉘 사용 제외) 자유롭게 bash에 맞게 만들 수 있습니다. 코드 자체를 공유하려고 포스팅하는 것이 아니라 코드를 공유하려고 포스팅하는 것입니다.사용자 경험그에 따른 변화.