Um curinga dentro de aspas duplas glob? [fechadas]

6

Em um "BASH padrão", um curinga entre aspas duplas glob? Por exemplo:

$ touch abc
$ ls "*abc*"

isso ou aquilo não funcionaria no bash?

Foi-me dito que o Ubuntu foi lançado com uma variante bash que não está em conformidade com POSIX ou BASH. Isso é verdade?

    
por Matt 03.08.2011 / 23:44

1 resposta

6

Resposta curta: não

Resposta longa do homem bash:

A inclusão de caracteres entre aspas duplas preserva o valor literal de todos os caracteres entre aspas, com exceção de $, ', \

Então:

~$ touch sas
~$ ls *a*
sas
~$ ls "*a*"
ls: cannot access *a*: No such file or directory

É claro que quando falamos em aspas duplas e asteriscos, há outra exceção: expansão de parâmetro (ex: "$ *") ... mas isso é outra história

Para a segunda pergunta: você está perguntando sobre traço? O dash é um shell leve para scripts. No debian, e no ubuntu por extensão (como é baseado no debian), é aliased para sh; Sua maior vantagem sobre o bash é sua velocidade, por isso é usado por padrão para scripts do sistema; no entanto bash ainda está disponível como o shell interativo para usuários por padrão

 ~$ ls -l /bin/sh 
lrwxrwxrwx 1 root root 4 2011-04-21 11:54 /bin/sh -> dash
    
por 03.08.2011 / 23:52

Tags