现在我想在freeBSD中记录所有用户的登录消息,所以我在freeBSD中输入last -f /var/log/utx.log
来查看日志。
输出格式为:
brandboat pts/1 xxx.xxx.xxx.xxx Sat Nov 1 11:28 still logged in
brandboat pts/0 xxx.xxx.xxx.xxx Sat Nov 1 11:21 still logged in
root ttyv0 Sat Nov 1 11:16 still logged in
brandboat pts/1 xxx.xxx.xxx.xxx Sat Nov 1 11:11 - 11:25 (00:13)
我尝试将所有这些消息复制到变量中:
set aaa= `last -f /var/log/utx.log`
echo $aaa
输出是:
brandboat pts/1 xxx.xxx.xxx.xxx Sat Nov 1 11:28 still logged in brandboat pts/0 xxx.xxx.xxx.xxx Sat Nov 1 11:21 still logged in root ttyv0 Sat Nov 1 11:16 still logged in brandboat pts/1 xxx.xxx.xxx.xxx Sat Nov 1 11:11 - 11:25 (00:13)
正如您所看到的,它不会保留命令输出中的原始格式。如何将其保存在 csh ?
中答案 0 :(得分:0)
这是黑魔法,但它有效:
$ csh
% set g=`ls | sed -s ':a;N;$\\!ba;s/\n/\\n/g'`
% echo "$g"
% /bin/echo -e "$g"
我们的想法是使用\n
按sed
更改换行符。我用trick来获取它。请注意,我必须双重转义标签!ba
,告诉csh
它不是一个事件。
您可以将ls
替换为last -f /var/log/utx.log
以检查它是否适合您。