2011-04-14 4 views
1

".c"접미사가있는 파일로 작업을 수행하는 내 .zshrc 함수에 추가하고 싶습니다. 예를 들어 내가 "foo.c를""* .foo"셸 함수

를 입력하고 때,

*.c() { 
    gcc $0 -o ${0%.*} 
} 

는 "gcc가 foo.c를 -o foo는"수행해야하지만이 기능을 추가 할 때에 ".zshrc는"내 껍질은 인쇄를 시작합니다 "일치하는 항목이 없습니다 : * .c"로그인하십시오.

이 방법을 사용하거나이 기능을 "게으른"것으로 설정할 수 있습니까?

답변

3

alias -s 동작이 필요합니다. 맨 페이지에서 :

ALIASES 
    Suffix aliases are supported in zsh since version 4.2.0. Some examples: 

     alias -s tex=vim 
     alias -s html=w3m 
     alias -s org=w3m 

    Now pressing return-key after entering foobar.tex starts vim with foobar.tex. Calling 
    a html-file runs browser w3m. www.zsh.org and pressing enter starts w3m with argument 
    www.zsh.org. 

작성한 기능을 접미사 별명에 결합하면 이동하도록 설정해야합니다! 다음 의도 한대로

alias -s c='compile_c' 

이 작동 접미사 별칭을

compile_c() {  
    gcc $1 -o ${1%.*} 
} 

그리고 :

첫째,이 양식에 함수를 작성.

+0

$ 0, $ 1, $ 2 변수가 별명 – user123980801

+0

@ user123980801에 정의되어 있지 않으므로 작동하지 않습니다. 이것이 progo의 의미라고 생각합니다 :'__gcc_compile() {gcc $ 1 -o $ {1 %. *}}; alias -s c = __ gcc_compile' - 이것은 zsh 4.3.11에서 나에게 적합합니다. – yibe

+0

예, 작동합니다. 예제를 참조하십시오. – progo