adiciona novas linhas na saída do comando .cshrc

2

Estou tentando configurar um "dinâmico" motd para os usuários quando eles fazem login no FreeBSD 10. Eu os configurei para que ele use .cshrc e tenha alguns comandos para gerar algumas informações. No entanto, uma dessas impressões é uma única linha em vez de adicionar novas linhas.

echo 'Uptime: ''uptime'
echo '''who -H | awk '{print $0,"\n"}''

A saída de quem sai como uma única linha, em vez disso, é separada. Como posso fazer isso para adicionar uma nova linha \ n ao final de cada linha? Eu tentei algumas alterações de sed também, mas tudo vem com o mesmo resultado.

Estou testando com o tcsh.

    
por hdub 25.04.2014 / 21:40

1 resposta

1

Existem 2 problemas com a sua abordagem.

O primeiro é que você não está citando a saída de suas substituições de comando. Quando você faz isso, o shell está digitando palavras na saída no espaço em branco e passando cada palavra como argumentos separados para echo . echo , em seguida, exibe todos os seus argumentos em uma única linha.
A correção para isso é para citar suas substituições de comando. Por exemplo:

echo "$(who -H | awk '{ print $0,"\n"}')"

A segunda questão é que você não precisa do echo (ou awk ). Você está capturando a saída do comando em uma string e, em seguida, ecoando-a de volta sem qualquer manipulação. Assim, o echo não serve para nada.

Transforme seu mini-script neste:

echo "Uptime: $(uptime)"
who -H

Eu tirei o awk e ele não estava fazendo nada além de adicionar linhas.

Existem outras maneiras de fazer isso também:

echo -n "Uptime: "
uptime
who -H
    
por 26.04.2014 / 03:23