concatenação à linha anterior no bash

0

Estou tentando adicionar um alias ao meu .bashrc , para que a execução do seguinte comando > push 123 adicione a linha 2017-08-29/push/123 (com a data atual) ao final de um arquivo.

adicionando o alias: %código% almos faz o truque, isso adiciona duas linhas da seguinte forma

2017-08-29/push/
123

Por favor, ajude-me a criar uma única linha.

    
por user7175478 29.08.2017 / 22:51

1 resposta

3
push () { date "+%F/push/$1" >> /tmp/pushlog.txt; }

Isso define uma função de shell que anexa a string ao arquivo /tmp/pushlog.txt .

A string de formato usada com date incorpora o primeiro argumento da linha de comando da função shell.

bash-4.4$ push 123
bash-4.4$ push "hello world"
bash-4.4$ push "%s"
bash-4.4$
bash-4.4$ cat /tmp/pushlog.txt
2017-08-29/push/123
2017-08-29/push/hello world
2017-08-29/push/1504041277

Se você estiver planejando usar push para enviar strings que podem ser interpretadas por date (como no último exemplo), e se não for o que você deseja, use:

push () { printf '%s/push/%s\n' "$(date '+%F')" "$1" >> /tmp/pushlog.txt; }

O motivo pelo qual você obtém uma nova linha indesejada em seu arquivo é que date gera uma nova linha no final de sua saída. Essa nova linha é removida ao usar date em $(...) , como fiz na segunda implementação da função shell acima.

    
por 29.08.2017 / 23:13

Tags