Bash의 임시 별칭만 나열

Bash의 임시 별칭만 나열

나는 주어진 bash 세션의 모든 별칭을 나열하는 방법을 알고 있습니다 alias -p. 특정 bash 세션의 모든 임시 별칭, 즉 내 bash 프로필에 없는 모든 별칭 목록을 가져오는 방법이 있습니까?

감사해요!

답변1

그렇게 간단하지 않습니다. bash에는 "임시" 별칭이라는 개념이 없습니다. bash 소스 .bashrc를 통해 실행되는 명령은 명령줄에 입력하는 명령과 동일합니다. 또한 bash 프로필은 특정 상황에서만 특정 별칭을 정의할 수 있습니다.

bash 프로필을 실행한 후 별칭 세트를 변수(또는 파일)에 저장한 다음 필요할 때 해당 변수와 현재 설정된 별칭 간의 차이를 확인할 수 있습니다.

$ BASE_ALIAS="$(alias | sort)"
$ alias tmp_alias=""
$ unalias ls
$ diff <( echo "$BASE_ALIAS" ) <( alias | sort )
3d2
< alias ls='ls --color=auto'
5a5
> alias tmp_alias=''

diff선언 이후 별칭이 ls제거되고 별칭이 추가되었음을 표시합니다.tmp_aliasBASE_ALIAS

답변2

다음 방법으로 이를 수행할 수 있습니다.

comm -2 -3 --nocheck-order <(alias -p) <(bash -l -c 'alias -p')

이는 현재 별칭 목록을 새 셸에 있는 별칭과 비교하여 수행됩니다.
comm유틸리티는 첫 번째 명령에 나타나는 행만 표시하는 데 사용됩니다 <(alias -p). --nocheck-order별칭 목록이 실제로 순서대로 되어 있음에도 불구하고 순서가 맞지 않다고 불평하는 것을 방지해야 합니다 .

관련 정보