执行时
watch tree .
我得到如下输出
Every 2.0s: tree . macbook.local: Fri Dec 20 16:23:33 2019
.
hello.txt
hi.txt
hmm.c
subdir
hello.txt
1 directory, 4 files
我希望它看起来像常规的树命令输出。如下所示:
.
├── hello.txt
├── hi.txt
├── hmm.c
└── subdir
└── hello.txt
1 directory, 4 files
我知道我可以用
while; do; clear; tree .; sleep 2; done
但我想用 watch 命令实现同样的事情
答案1
这是预期行为,因为 的输出中删除了所有不可打印字符。的页面watch
中提到了这一点。man
watch
您可以尝试通过以下方式执行命令:
watch "tree|cat -v"
答案2
设置LC_CTYPE=C
可能会tree
使用纯 ASCII 替代。watch
命令可能是:
watch 'LC_CTYPE=C tree .'
# or (not strictly equivalent)
LC_CTYPE=C watch tree .
笔记:
- 该设置将影响文件名中非 ASCII 字符的显示方式。
- 您可能会遇到 的通用提示
LC_ALL=C
。此变量不仅会覆盖LC_CTYPE
,还会覆盖LC_COLLATE
和其他LC_*
变量。LC_COLLATE
会影响 中的排序tree
。
在我的 Debian 中,我可以使用--charset=C
强制 ASCII 绘图而不影响文件名中的字符(所以这比使用的方法更好LC_CTYPE
):
watch tree --charset=C .
虽然在 Debian 中对我来说也很好watch tree .
用。另一方面watch "tree|cat -v"
另一个答案生成几乎不可读的输出。显然您的设置不同(macbook.local
-macOS?)。我的答案是提供可能对使用其他设置的用户有用的提示。