функция оболочки "* .foo" - PullRequest
1 голос
/ 14 апреля 2011

Я хочу добавить в мою функцию .zshrc, которая будет выполнять операции с файлом с суффиксом ".c".Например,

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

должен выполнять «gcc foo.c -o foo», когда я вхожу в «foo.c»

Но когда я добавил эту функцию в «.zshrc»,моя оболочка начинает печатать "не найдено совпадений: * .c" при входе в систему.

Могу ли я сделать это иначе или сделать эту функцию "ленивой"?

1 Ответ

3 голосов
/ 14 апреля 2011

Вам понадобится 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.

Объедините вашу письменную функцию с псевдонимом суффикса, и вы должны быть настроены на переход!

Сначала напишите свою функцию в следующем виде:

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

И тогда псевдоним суффикса

alias -s c='compile_c'

будет работать как положено.

...