
나는 주어진 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
별칭 목록이 순서대로 정렬되어 있지 않더라도 불평하지 않도록 하는 것이 필요합니다 .