É possível mostrar como o bash globbing funciona fazendo?

1

Estou ensinando a alguém como funciona o bash globbing. Eu gostaria de mostrar (através de algum recurso bash de depuração, se possível) como o bash expande os padrões antes de chamar o comando. Por exemplo, eu gostaria de fazer o seguinte:

ls -l file*.txt

Então eu gostaria que o bash mostrasse o que o file*.txt expandiu para:

ls -l file1.txt file2.txt file3.txt file4.txt

Eu sei como fazer isso usando bash -x de dentro de um script, mas eu prefiro fazê-lo no shell interativo para que eu não tenha que introduzir idéias sobre scripts. Existe uma maneira de fazer isso no modo interativo ?

    
por sshekhar1980 05.06.2017 / 16:53

2 respostas

3

Você pode simplesmente repetir o comando inteiro:

echo ls -l file*.txt
    
por 05.06.2017 / 17:59
0

Ok, então é basicamente o que eu geralmente defino no meu .inputrc para obter zsh como o comportamento em bash :

set show-all-if-unmodified on
set show-all-if-ambiguous on

Coloque as linhas acima em ~.inputrc e você está pronto para ir. Ao fazer algo como ls *.txt apenas aba e ele deve globar tudo para você e gerar os arquivos correspondentes.

EDIT: citações de man bash :

show-all-if-ambiguous (Off) This alters the default behavior of the completion functions. If set to On, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell.

show-all-if-unmodified (Off) This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to On, words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell.

EDIT2: exemplo de saída

$ ls *
books    dev    music   templates
$ ls *

Embora não funcione se o mesmo tentar expandir o seguinte (como tentaria concluir o argumento posterior ~/some/other/folder :

$ cd * ~/some/other/folder
    
por 05.06.2017 / 17:03

Tags