단일 문자 bash 별칭을 사용하지 않아야 합니까?

단일 문자 bash 별칭을 사용하지 않아야 합니까?

나는 종종 단일 문자 별칭을 만드는 것을 발견합니다. 왜냐하면 결국 별칭은 입력 시간을 절약하기 위해 존재하기 때문입니다. 이것을 피해야 하는지 궁금합니다. 나는 어떤 갈등도 모른다.

답변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불필요한 피해를 입게 됩니다.

따라서 요점은 다음과 같습니다. 단일 문자 별칭을 사용하는 경우 읽기 전용 작업에만 사용하세요(데이터를 변경할 수 있는 작업에는 사용하지 마세요. 실수로 실행하면 문제가 발생할 수 있습니다).

관련 정보