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.