globbing e wildcards

0

Os curingas devem ser expandidos para um programa que não é o primeiro a ser lançado? Cada exemplo usa curinga para o primeiro programa no pipelilne.

Por exemplo, o seguinte não funciona:

ls|grep *.h

E se eu fizer assim, então é o grep e não o shell que expande o curinga (?)

ls|grep -E "*.h"

Existe um exemplo em que o curinga não é o primeiro pipe? A razão pela qual estou perguntando é que estou implementando um shell e posso fazer curingas para o primeiro programa no pipeline, por exemplo. ls *.h , mas não sei se deveria fazer isso para os pipes subseqüentes.

O pano de fundo é que estou escrevendo meu próprio shell e implementei curinga:

$ ls *.c|grep mai

[21822]
main.c
$ 
    
por Niklas Rosencrantz 12.05.2016 / 17:33

1 resposta

1

Um exemplo:

$ echo jeff > jeff
$ echo not > not
$ echo 's/jeff/not/' | sed -i -f - *
$ cat jeff
not

Para mais informações sobre o que as shells padrão devem fazer com a expansão do nome do arquivo / nome do caminho (globbing), veja:

link onde está escrito:

After field splitting, if set -f is not in effect, each field in the resulting command line shall be expanded using the algorithm described in Pattern Matching Notation, qualified by the rules in Patterns Used for Filename Expansion.

    
por 12.05.2016 / 17:38