나는 주어진 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_alias
BASE_ALIAS
답변2
다음 방법으로 이를 수행할 수 있습니다.
comm -2 -3 --nocheck-order <(alias -p) <(bash -l -c 'alias -p')
이는 현재 별칭 목록을 새 셸에 있는 별칭과 비교하여 수행됩니다.
이 comm
유틸리티는 첫 번째 명령에 나타나는 행만 표시하는 데 사용됩니다 <(alias -p)
. --nocheck-order
별칭 목록이 실제로 순서대로 되어 있음에도 불구하고 순서가 맞지 않다고 불평하는 것을 방지해야 합니다 .