bash 스크립트나 별칭을 바로가기로 선호하시나요? [폐쇄]

bash 스크립트나 별칭을 바로가기로 선호하시나요? [폐쇄]

나는 많은 작은 1~2줄 스크립트를 저장하는 ~/bin디렉토리(mine에 있음 ) 를 가지고 있습니다 . PATH그들 중 일부는 cd디렉토리로 가서 파일에 대해 명령을 실행합니다 vim. 하지만 내 파일에는 .bash_aliases같은 목적을 가진 별칭이 더 많이 있습니다.

Bash 스크립트를 작성할지 별칭을 작성할지 어떻게 결정합니까? 어떤 길을 택하든 상관없나요?

답변1

충분히 자주 사용하면 모든 셸에 로드하는 데 따른 오버헤드가 발생합니다. 함수로 작성하겠습니다.

프로젝트에 특정한 것이라면 프로젝트 작업 시 셸에 소스로 제공될 수 있는 별칭 및 함수 집합으로 작성할 수 있습니다.

독립적인 방식으로 작동하는 경우에만 내 ~/bin에 스크립트로 작성될 수 있습니다. 기본적으로 별칭인 일부 라이너가 있지만 셸이 아닌 다른 곳에서 실행하는 데 사용됩니다(예: 다른 프로그램에서 프롬프트를 실행하는 데 사용됩니다). 대부분의 경우 상당히 실질적인 스크립트여야 합니다.

답변2

일반적으로 쉘 스크립트 함수는 별칭보다 더 유연하므로 선호해야 합니다. 예를 들어 별칭에서는 주어진 인수 수나 해당 유형이 예상한 대로인지 테스트할 수 없습니다. 나는 동의한다갈렙예를 들어 별칭은 간단한 단일 라이너에 적합합니다.alias cp='cp -i'

답변3

단일 명령의 더 복잡한 문자열 대체에는 스크립트가 더 적합할 수 있습니다. 또한 다른 스크립트에서 사용되거나 다른 사람이 사용할 수 있는 모든 것이 스크립트로 가장 좋습니다. 다른 사람의 bin 디렉터리에서 프로그램을 실행하는 것은 좋은 생각이 아니지만, 다른 사람의 개인 별칭 파일을 얻는 것보다 낫습니다.

별칭은 대화형 환경을 개인화하는 데 가장 적합합니다. 예를 들어, e='emacs -nw'등등.

답변4

저는 가장 간단한 방법을 사용합니다.

주로 명령에 인수가 없으면 별칭을 사용합니다.

명령에 매개변수가 있으면 함수를 사용합니다.

예를 들어 make 및 cd를 다음 디렉토리로 이동합니다.

md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }

명령이 자체적으로 매개변수가 있는 설치된 함수를 사용하는 경우 해당 함수도 사용합니다.

예를 들어 git에 -v를 추가합니다.

git () { [ $1 = commit ] && command git commit -v "${@:2}" || command git "$@"; }

관련 정보