bash에서 csh 별칭이 작동하도록 하려면 어떻게 해야 합니까?

bash에서 csh 별칭이 작동하도록 하려면 어떻게 해야 합니까?

이 별칭은 다음과 같은 경우에는 제대로 작동 /bin/csh 하지만 다음 경우에는 작동하지 않습니다 /bin/bash.

alias cd='chdir !* && setprompt; clear;  ls -F'

기본적으로 나는 cd어떤 디렉토리와 ls색상도 원합니다.

답변1

그것이 무엇인지 잘 모르겠지만 setprompt별칭 in은 별칭 bash과 같은 csh매개 변수를 허용 하지 않습니다(사용 !*). 셸에서의 앨리어싱은 bash앨리어싱보다 훨씬 간단하며 csh명령줄에 대한 기본 텍스트 대체 도구와 동등한 기능만 제공합니다.

대신 유틸리티를 오버로드하는 짧은 쉘 함수를 작성할 수 있습니다 cd.

cd () {
    command cd "$1" && clear && ls -F
}

아니면 한 줄로,

cd () { command cd "$1" && clear && ls -F; }

이 셸 함수 선언은 에서 별칭을 선언할 때마다 나타납니다 bash(아마도 ~/.bashrc).

함수에서 사용할 수 있는 하나의 매개변수를 사용합니다 "$1". command cd이것을 인수로 사용하여 호출됩니다 . command cd대신에 cd쉘 함수를 재귀적으로 호출하는 것을 피하기 위해 사용합니다 .

cd명령은 디렉토리를 변경하고 성공할 경우 clear호출되어 디렉토리 목록을 생성하는 데 사용됩니다 ls -F.

관련 정보