我正在尝试创建一个别名来打开我的日志文件
alias open_log='date=`date +%y%m%d`;sudo tail -n 10 ~/logs/reconfig-$date.log;'
当我运行该别名时
open_log
我有
tail:无法打开“/home/benu/logs/reconfig-.log”进行读取:没有这样的文件或目录
但如果我跑
”我为该别名设置的内容”
date=`date +%y%m%d`;sudo tail -n 10 ~/logs/reconfig-$date.log;
它工作得很好。
+ 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
为什么他们的行为不同?谁能详细说明一下吗?
如何修复我的别名以使其正常工作?
答案1
抱歉,@ihue。我一开始就错了。感谢@ilkkachu。
将别名与编辑前发布的命令行进行比较:
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;
别名缺少反引号。另外,反引号是一切都过时了。使用以下形式进行命令替换:$(command)
.
双引号的工作方式如下,每次设置别名时都会设置日期。
alias open_log="sudo tail -n 10 ~/logs/reconfig-$(date +%y%m%d).log"
单引号动态工作,在每次调用别名时设置日期。
alias open_log='sudo tail -n 10 ~/logs/reconfig-$(date +%y%m%d).log'