linux:如何通过脚本工具(文件)记录所有操作以保存在日志文件中
嗨,大家好,
1)我希望记录我写的脚本文件,其中包括所有内容(例如,某些功能可能包括删除文件,(rm -rf $file)应该包含要删除的文件和日志文件中的文件名)这意味着脚本文件执行的所有内容。
2)如果1)问题得到解决,我可以输出可读的格式吗?
谢谢各位,希望能得到大家的建议!
我可以想到两种选择:
用于echo
记录您认为对stdout
或重要的特定命令stderr
:
echo "rm -rf $f"
rm -rf "$f"
对于输出到stderr
:
echo "rm -rf $f" >&2
rm -rf "$f"
不幸的是,这种方法应用起来会变得非常乏味,因为它必须手动完成。当命令参数包含空格时也会出现问题;为了能够可靠地区分和区分,引用输出需要做很多工作。"a" "b"
"a b"
-x
在启用/xtrace
选项的情况下运行 bash 。从手册:
-X
打印简单命令的踪迹,用于命令、case 命令、选择命令以及命令及其参数或相关单词列表的算术运算(在它们展开之后和执行之前)。PS4 变量的值被扩展,结果值在命令及其扩展参数之前打印。
要使用,您可以使用set -x
和set +x
启用/禁用脚本特定部分的选项,或者只需在bash
命令行中输入:
bash -o xtrace script.sh
要xtrace
在子shell 中递归使用,请查看这个问题。
这种替代方法的一个缺点是输出非常冗长,并且不如来自显式消息的可读性echo
- 它主要适用于调试脚本,而不是在正常操作下进行日志记录。