Por que o alias se comporta de maneira diferente da execução do comando bash diretamente?

2

Estou tentando criar um alias para abrir meu log fie

alias open_log='date='date +%y%m%d';sudo tail -n 10 ~/logs/reconfig-$date.log;'

Quando eu executo esse alias

open_log

Eu tenho

tail: cannot open ‘/home/benu/logs/reconfig-.log’ for reading: No such file or directory

Mas se eu correr

" o que defini para esse alias "

date='date +%y%m%d';sudo tail -n 10 ~/logs/reconfig-$date.log;

Funciona perfeitamente bem.

+ service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]
+ mkdir -p /etc/nginx/sites-available
+ cp /root/portal-data/sites-available/default-https /etc/nginx/sites-available/default
+ '[' '!' -f /etc/ssl/mywifibusiness.trg.telenet.be.cert.pem ']'
+ echo 'Error: Unable to find certificate at /etc/ssl/mywifibusiness.trg.telenet.be.cert.pem'
Error: Unable to find certificate at /etc/ssl/mywifibusiness.trg.telenet.be.cert.pem
+ exit 1
Error: Executing /home/benu/reconfig.d/70-ssc-portal.sh returned 1
Reconfigure aborted

Por que eles estão se comportando de maneira diferente? Alguém pode elaborar?

Como corrijo meu alias para que ele funcione?

    
por kyo 04.05.2017 / 16:47

1 resposta

2

Desculpe, @ihue. Eu entendi errado para começar. Parabéns para @ilkkachu.

Compare o alias com a linha de comando, postada antes da edição:

alias 'date=date +%y%m%d;sudo tail -n 10 ~/logs/reconfig-$date.log;'
date='date +%y%m%d';sudo tail -n 10 ~/logs/reconfig-$date.log;

O alias está faltando os backticks. Além disso, os backticks são todos menos antiquados . Use o seguinte formulário para substituição de comando: $(command) .

As aspas duplas funcionam da seguinte forma, o que define a data sempre que o alias foi definido.

alias open_log="sudo tail -n 10 ~/logs/reconfig-$(date +%y%m%d).log"

As aspas simples funcionam dinamicamente, configurando a data toda vez que você chama o alias.

alias open_log='sudo tail -n 10 ~/logs/reconfig-$(date +%y%m%d).log'
    
por 04.05.2017 / 16:59

Tags