[unix] 사용자가 실행하려는 명령을 실행하기 전에 다른 명령을 실행하십시오.

ls이 방법으로 도구 의 원래 동작을 수정하고 싶다고 가정 해 봅시다 .

$ ls
Hello World
file1 file2 ...

어떻게해야합니까?

실행할 때 ls다른 명령을 실행하고 싶습니다 echo "Hello World!".

내가 보는 빠른 해결책은 별칭을 사용하는 것입니다.

alias orig_ls="ls"
alias ls='echo "Hello World!"'

그러나 이것이 실행될 orig_ls때 출력 할 것이기 때문에 이것은 실제 솔루션이 아닙니다 "Hello World!".



답변

때로는 별칭이 원하는 것을 쉽게 수행 할 수있을만큼 강력하지 않기 때문에 별칭을 사용하지 않는 방법이 있습니다.

쉘이 시작될 때 제공되는 일부 파일 (예 .bashrc:)에 다음 기능을 추가하십시오.

ls () {
    echo "Hello world!"
    command ls "$@"
}

별명과 달리 함수는 재귀 할 수 있습니다. 이것이 command ls대신에 사용되는 이유 입니다 ls. ls방금 정의한 함수 대신 실제 쉘을 사용하도록 쉘에 지시합니다 .


답변

당신은 전화하는 것을 잊지 않아야합니다 ls:

alias ls='echo "Hello World!"; ls'


답변