Armazena saída de comando na variável

2

Se eu fizer z='ls' e, em seguida, echo $z , ele irá imprimir o diretório listado, mas sem novas linhas ou formatação. Eu suponho que a falta de formatação colorida é impossível de contornar, mas seria possível obtê-lo com as novas linhas lá?

    
por user365967 21.11.2014 / 22:46

2 respostas

4

Cite a variável:

echo "$z"

Sem aspas, cada palavra em $z se torna um argumento separado para echo , com aspas a variável inteira é um único argumento - newlines e all.

    
por 21.11.2014 / 23:29
3

Você pode obter cores dizendo

z=$(ls --color)

ou, para ser explícito,

x=$(ls --color=always)

$(command) é (essencialmente) equivalente a 'command' ; consulte Qual é o benefício de usar $ () em vez de backticks em scripts de shell? O padrão de ls é --color=auto , o que significa usar cores somente ao gravar em um terminal (isto é, quando a saída padrão é um terminal). $(command) e 'command' executam o command com saída para um canal; --color=always diz a ls para usar cores, mesmo neste caso.

Você pode testar isso facilmente comparando

ls | cat

com

ls --color | cat
    
por 22.11.2014 / 02:30