我想将以下命令放入我的~/.bash_aliases文件中:
grep screen /var/log/auth.log|grep "$(date|awk '{print $2" "$3}')"
Run Code Online (Sandbox Code Playgroud)
我尝试将以下内容放入别名文件中:
alias unlocks=grep screen /var/log/auth.log|grep "$(date|awk '{print $2" "$3}')"
Run Code Online (Sandbox Code Playgroud)
但我得到以下信息:
bash:别名:屏幕:未找到
bash:别名:/var/log/auth.log:找不到
据推测,这是因为命令字符串中存在空格,通常可以通过引用整个字符串来解决,但我已经使用了两种类型的引号,并且无法弄清楚如何正确转义它们。
请问有人可以帮忙吗?
不要尝试将如此复杂的东西设为别名。而是定义一个函数.bashrc。
unlocks () {
grep screen /var/log/auth.log | grep "$(date +"%b %d")"
}
Run Code Online (Sandbox Code Playgroud)
awk另外,当您可以直接调整输出时不要使用date。但是,您可以使用awk替换以下两个实例grep:
unlocks () {
awk -v date=$(date +"%b %d") '/screen/ && $0 ~ date' /var/log/auth.log
}
Run Code Online (Sandbox Code Playgroud)