我编写了一个 bash 脚本,它可以tree
递归地生成整个目录结构,将由 生成的 HTML 文件放入每个目录中aha
。该脚本读取要索引的目录列表。find
搜索目录内的每个目录并生成完整的目录列表。如果目录/media/veracrypt1
包含 50 个层次结构中的目录,tree
则将给定目录和“下方”中的所有内容都制成一棵树,在目录内写入带有记录的树结构的 HTML 文件,然后向下,重复该操作直至底部。
我希望脚本在定义的时间触发cron
。脚本可以工作,但着色不起作用,管道的输出是白底黑字。我相信这是cron
无法访问LS_COLOR
系统变量的结果。(这是我怀疑的)
如何修改脚本才能产生预期的效果?
脚本的重要部分:
tree -axC "$file" | aha --title $(basename "${file// /_}") > "$file"/[z9][tree]_$(basename "${file// /_}").html; done
它也可以在不使用以下工具的情况下工作aha
:
tree -axC "$file" > "$file"/[z9][tree]_$(basename "${file// /_}").html; done
但与着色(仅在 cron 中)相同的问题仍然存在。
完整脚本文本:
#!/bin/bash
List_make_R_general=/track/to/location_1.txt
List_R_gen_general=/track/to/location_2.txt
cron_log=/track/to/location_3.txt
echo > $cron_log
cat "$List_make_R_general" | while read file; do find "$file" -type d; done | tee "$List_R_gen_general"
cat "$List_R_gen_general" | while read file; do tree -axC "$file" | aha --title $(basename "${file// /_}") > "$file"/[z9][tree]_$(basename "${file// /_}").html; done
cat "$List_R_gen_general" | while read file; do tree -axC "$file" -I "*.JPG" | aha --title $(basename "${file// /_}") > "$file"/[z9][tree]_$(basename "${file// /_}")_[excl].html; done
echo -e "Tree done successfully: $(date) \n" >> $cron_log
exit
答案1
我曾在类似的问题htop
TERM=xterm
最近,您需要在脚本中设置:
#!/bin/bash
export TERM=xterm
…
除了使用之外,您还可以直接为每次调用export
设置变量:tree
…; do TERM=xterm tree -axC …
变量TERM
表明tree
您正在使用哪种类型的终端。在这种情况下,可能1重要的是文本窗口显示颜色的能力:xterm
用 8 种颜色构建,而例如xterm-256color
– 您猜对了 – 用 256 种颜色构建。您可以使用 获取系统的可能值列表,ls -1 /lib/terminfo/x
并使用 查看和比较它们的功能infocmp
,例如
infocmp xterm # view capabilities
infocmp xterm xterm-256color # compare
infocmp xterm xterm-256color | grep colors # compare only colors
1正如评论中所述,tree
实际上只是测试是否TERM
可以设置为任何值,因此TERM=my_precious tree
也可以正常工作。不过,给它一个有效值似乎是个好主意。
进一步阅读: