bash 별칭에 연결된 명령을 보는 방법은 무엇입니까?


324

bash 쉘에 별명이 있다고 가정하십시오. 별명을 실행할 명령을 인쇄하는 간단한 명령이 있습니까?

답변:


431

type내장이 유용합니다. 별명뿐만 아니라 함수, 내장, 키워드 및 외부 명령에 대해서도 알려줍니다.

$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep () 
{ 
    ps -ef | { 
        read -r;
        printf '%s\n' "$REPLY";
        grep --color=auto "$@"
    }
}

type -a cmd이 이름으로 모든 명령을 우선 순위대로 표시 ls합니다 ls. 이는 별칭 자체가 호출하는 위 의 별칭에 유용 합니다 .

$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls

이것은 당신이 실행할 때 있음을 알려줍니다 ls, /bin/ls사용되며, --color=auto사용자가 직접 추가 한 다른뿐만 아니라, 인수의 목록에 포함됩니다.


별칭에 추가 별칭이 포함 된 경우 어떻게해야합니까?
user251046

2
@ 계속 사용 user251046 type당신이 별칭 아닌 다른 무언가를 명중 할 때까지 ...
geirha

type따옴표를 구문 분석 / 해석 하기 때문에이 답변이 마음에 듭니다. 따라서 따옴표가 올바른지 확인할 수 있습니다.
wisbucky

을 얻었 ls is aliased to 'ls --color=auto'지만 / bin / ls 또는 / usr / local / bin / ls 또는 무엇을 사용하는지 확인하기 위해 한 계층을 더 깊게 얻을 수 있습니까?
krubo

1
@krubo type -a ls는 선호하는 순서대로 찾은 모든 ls 명령을 표시합니다. 별명 바로 아래에있는 것이 별명에 의해 실행될 별명입니다.
geirha

163

alias쉘 프롬프트에서 입력 하십시오. 현재 활성화 된 모든 별칭의 목록을 출력해야합니다.

또는 alias [command]특정 별칭이 별칭으로 지정된 것을 볼 수 있도록 입력 할 수 있습니다 . 예를 들어, ls별칭이 별칭으로 지정된 것을 찾으 려면을 수행 할 수 있습니다 alias ls.


12
또는 alias ls구체적 ls으로 별칭이 지정된 항목을 찾으려면 입력하십시오 .
poolie 2012

2
@poolie 실제로. 나는 모든 별칭 을 보는 것이 문제라고 생각하기 때문에 alias 명령에 대해 더 자세히 설명하지 않았습니다.
토마스 워드

별명에 대해서는 작동하지만 사용자 정의 쉘 기능을 정의한 경우 작동하지 않습니다. type그러나 두 경우 모두 작동합니다.
Sujay Phadke

53

내가 정말 좋아 Ctrl+ Alt+ E내가 배운로 이 답변 . 현재 입력 된 명령 줄을 "확장"합니다. 즉, 다른 것 중에서 별칭 확장을 수행합니다.

그게 무슨 뜻이야? 현재 명령 행에 작성 될 수있는 별명을 별명이 나타내는 것으로 바꿉니다.

예를 들어, 내가 입력하면 :

$ ls

다음을 눌러 Ctrl+ Alt+ E, 그것은으로 설정되어

$ ls --time-style=locale --color=auto

다른 배포판에서도 이와 동일합니까?
sepehr

@sepehr 데비안에서 작동합니다. bash 기능이고 모든 배포판에서 작동해야합니다.
Der Hochstapler

4
당신 말이 맞습니다, 그것은 bash에서 작동하지만 zsh가 있으며 불행히도 작동하지 않습니다.
sepehr

정말 도움이되었습니다.
XXL

1
하나의 경고가 있습니다. 별칭에 필요한 따옴표가 포함되어 있으면 제거됩니다. 그래서 squeue -u davidmh -o %.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R 대신에squeue -u davidmh -o "%.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R "
Davidmh

10

엄밀히 말하면 정답은 BASH_ALIASES 배열을 사용하는 것입니다.

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

2
나는 사람이 쓸모없는 물건없이 실제 진술에 프로그래밍 방식으로 액세스하려는 상황에서 이것이 유용하다는 것을 알았습니다.
M. Justin

이것은 zsh에서 작동하지 않습니다
ProGrammar

1
@ProGrammar 문제는 bash에 관한 것이 었습니다-zsh의 경우 zsh
noonex

1
빙고. @ M.Justin과 마찬가지로 정확히 필요한 것- ls거기에있는 것을 변경하지 않고 현재 별칭 에 더 많은 스위치를 쌓고 싶습니다 . 그래서 나는 alias ls="${BASH_ALIASES[ls]} --time-style=iso"내 사건에 갈 것 입니다.
리치

2

which명령을 사용할 수 있습니다 .

lsas에 대한 별칭을 설정 한 ls -al다음을 입력 which ls하면 다음이 표시됩니다.

ls: aliased to ls -al.


bash는 which명령 이 없습니다 .
geirha

나를 위해 일하지 ..
Chiel ten Brinke

2
whichunix.stackexchange.com/questions/10525 / ... 여기에 설명 된대로 별칭을 찾는 나쁜 방법 입니다 ... Ubuntu의 bash에서 별칭에 대해서는 작동하지 않습니다.
Sujay Phadke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.