Alias estranhas “find. -name '* \! {*} *' -ls ”no Unix Power Tools

3

Do Unix Power Tools, terceira edição, página 175:

Article 9.27 shows a way to match directories in the middle of a path. Here's a simpler "find file" alias that can come in very handy:

alias ff "find . -name '*\!{*}*' -ls"

Give it a file or directory name; the alias will give a long listing of any file or directory names that contain the argument.

(Isso também é disponível on-line .)

Eu não obtenho o argumento para o operador -name . Isso é um erro de digitação? É apenas para versões específicas de find ? O que a barra invertida, o estrondo e as chaves fazem?

    
por Wildcard 17.12.2015 / 09:47

1 resposta

6

Esse é um csh alias; o argumento dado a -name é interpretado pelo shell, não por find . Se eu entendi corretamente, \!{*} é substituído pelos argumentos dados a ff (embora normalmente seja apenas \!* ). É estranho que o livro não especifique o shell ...

Basicamente com o alias definido, digitando

ff test

é executado

find . -name '*test*' -ls

(e não manipula vários argumentos normalmente).

Na segunda edição do livro, o texto define o alias da mesma maneira que é dada na pergunta e aponta para csh_init e sh_init no CD que acompanha. (É seção 17.04.) Curiosamente, csh_init no CD não define o alias, mas sh_init define uma função ff equivalente:

ff() { find . -name "*$1*" -ls; }
    
por 17.12.2015 / 10:04