귀하의 편의를 위해 몇 가지 별칭을 만들었습니다. 하지만 이제는 유용한 명령을 보내 도움을 주어야 하는데 여기에는 별칭이 가득합니다. 나는 이것을 시도했지만 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을 반환하지 않으면 실행이 중지되고 지금까지 확장된 별칭만 표시됩니다.