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