중첩된 별칭을 소스 명령으로 확인

중첩된 별칭을 소스 명령으로 확인

귀하의 편의를 위해 몇 가지 별칭을 만들었습니다. 하지만 이제는 유용한 명령을 보내 도움을 주어야 하는데 여기에는 별칭이 가득합니다. 나는 이것을 시도했지만 type u반환되는 것은

up && ap upgrade -y --show-progress && r && ap check && ap autoclean

별칭은 다음과 같습니다 u.

alias a='alias'
a ap='apt-get'
a r='ap autoremove -y'
a up='ap update'

답변1

작성한 별명(실행 준비 완료)을 사용하여 Ctrl-Alt-e명령을 누르고Bash가 확장합니다. Ctrl-Alt-ereadline 명령에 대한 기본 바인딩입니다 shell-expand-line.

Bash 에 푸시할 때마다 Ctrl-Alt-e별칭 레이어가 하나씩 확장되므로 명령이 필요한 만큼 확장될 때까지 반복해서 푸시하세요.

Meta키가 가 아닌 경우 Alt교체하거나 를 누르세요Escape Ctrl-e .

아직 하나 있어요alias-expand-line함수는 기본적으로 바인딩되지 않으며 별칭만 확장됩니다.

답변2

에도 비슷한 질문을 올렸어요스택 오버플로(아마도 Unix와 Linux에서 출시되어야 할 것입니다).

내 해결책은 bash 함수를 작성하는 것이었습니다.

xtrace() {
    local eval_cmd
    printf -v eval_cmd '%q' "${@}"
    { set -x
      eval "${eval_cmd}"
    } 2>&1 | grep '^++'
    return "${PIPESTATUS[0]}"
}

그러면 xtrace u다음과 같은 내용이 인쇄됩니다.

++ apt-get update
++ apt-get upgrade -y --show-progress
++ apt-get autoremove -y
++ apt-get check
++ apt-get autoclean

이는 실제로 전달한 별칭을 실행하므로 원하지 않는 경우 u@MichaelHomer의 솔루션이 더 나은 접근 방식입니다. 또한 체인으로 인해 &&별칭의 명령 중 하나라도 0을 반환하지 않으면 실행이 중지되고 지금까지 확장된 별칭만 표시됩니다.

관련 정보