나는 종종 단일 문자 별칭을 만드는 것을 발견합니다. 왜냐하면 결국 별칭은 입력 시간을 절약하기 위해 존재하기 때문입니다. 이것을 피해야 하는지 궁금합니다. 나는 어떤 갈등도 모른다.
답변1
피해야 할 것:
- 단일 문자 이름을 사용하는 표준 또는 일반 명령: (
w
로그인된 사용자 활동 표시),X
(X Window System Server),R
(R 프로그래밍 언어 해석기),[
( 와 유사test
) - 쉘 또는 일반 쉘에 내장된 함수:
[
,.
,:
,-
,r
- 쉘 키워드:
{
,}
,!
?
및*
와일드카드- 쉘 구문의 특수 문자:
`"$&();'#~|\<>
, (일부 쉘에도 있음^
)%
, SPC, TAB, NL (및 일부 쉘에 있는 기타 공백) - ASCII가 아닌 문자는 사용하지 않는 것이 가장 좋습니다(이러한 문자는 로케일에 따라 인코딩이 다르기 때문입니다).
- 제어 문자(위에서 이미 언급한 TAB 및 NL 제외)는 입력하기 쉽지 않고 상황에 따라 항상 표시되지 않거나 다르게 표시되므로 사용하지 않는 것이 가장 좋습니다. NUL 문자 에
zsh
대해서만 별칭을 정의하고 사용할 수 있습니다 . (바이트 값이 1인 제어 문자)에 대한 별칭을 정의할 수 있지만bash
분명히 사용하지는 않습니다.^A
단일 문자 이름으로 명령을 찾으려면 다음을 수행하십시오.
bash
: (compgen -c | grep -x . | sort -u
명령 이름에 개행 문자가 포함되어 있지 않다고 가정하면 키워드도 포함됩니다.)zsh
: (type -m '?'
또는type -pm '?'
기능/별칭/내장 기능/키워드가 필요하지 않은 경우).Debian 또는 파생 제품: 패키지에서 단일 문자 이름을 가진 명령을 찾습니다.
$ apt-file find -x '/s?bin/.$' coreutils: /usr/bin/[ e-wrapper: /usr/bin/e python3-q-text-as-data: /usr/bin/q r-base-core: /usr/bin/R r-base-core: /usr/lib/R/bin/R r-cran-littler: /usr/bin/r r-cran-littler: /usr/lib/R/site-library/littler/bin/r wims: /var/lib/wims/public_html/bin/c xserver-xorg-core: /usr/bin/X
답변2
가장 쉬운 방법은 해당 이름을 가진 항목이 이미 존재하는지 확인하는 것입니다. 내 시스템에서:
$ for char in {A..z}; do type "$char" 2>/dev/null; done
R is /usr/bin/R
X is /usr/bin/X
[ is a shell builtin
l is aliased to `ls -CF'
w is /usr/bin/w
내가 알 수 있는 한, 이는 관련된 모든 충돌을 보여줍니다.
- 다음과 같은 다른 별칭
l
- 쉘 예약어
- 기능
- 쉘 내장 함수
w
및 같은 파일 명령[
답변3
인사말: "이런 일을 피했어야 했는지 궁금합니다."
다른 답변에서 언급했듯이 별칭으로 재정의하는 명령이 사용하려는 명령이 아닌 한 기술적 문제가 있어서는 안됩니다.
이와 같은 별칭을 사용할 때 가장 큰 좌절감은 아직 .bashrc를 복사하지 않은 컴퓨터에 친구나 SSH를 연결하는 것을 도울 때입니다. 당신이 개발한 모든 근육 기억은 당신을 물 밖으로 나온 물고기처럼 느끼게 할 것입니다. 너무 혼란스러워서 별칭을 최소한으로 유지하려고 노력합니다.
답변4
별칭을 사용하는 대상에 따라 다릅니다(예:실수로 잘못된 별칭이 실행되면 얼마나 큰 문제가 됩니까?), 그리고 얼마나 자주 실수를 하는지.
예를 들어:
- 잘못된 키를 누르는 경우가 거의 없더라도
r='rm -rf *'
and를 사용하는 것은 아마도 매우 나쁜 생각일 것입니다.t='ls -l *tar*'
- 사용하는데
r='file *.png | grep RGB'
문제t='ls -l *tar*'
가 없을 수도 있습니다.
후자의 경우 대신 입력하면 r
(키보드를 닫으면 잘못 입력하기 쉽습니다) t
원하지 않는 결과가 출력되고 올바른 별칭을 쉽게 입력할 수 있습니다. 그러나 전자의 경우 r
대신 을 입력하면 t
불필요한 피해를 입게 됩니다.
따라서 요점은 다음과 같습니다. 단일 문자 별칭을 사용하는 경우 읽기 전용 작업에만 사용하세요(데이터를 변경할 수 있는 작업에는 사용하지 마세요. 실수로 실행하면 문제가 발생할 수 있습니다).