BaiduPCS-Py icon indicating copy to clipboard operation
BaiduPCS-Py copied to clipboard

建议: ls命令的输出格式建议

Open kice opened this issue 2 years ago • 3 comments

首先就是 ls--csv 开关输出的格式根本就不是csv格式;如果加上了递归输出,什么都不是了。

--csv开关` 改成输出为合法的csv的格式,而不是tsv(要Tab分割就额外指定)。

path (绝对路径) isdir (是否为目录) size (大小: 字节) user(所属用户) modified (修改时间)
/dir/file.txt False 123454121 a_user 2022/01/23 12:34

括号的中文只是说明这一列的是什么数据;其次可能需要注意下文件名中包含,

其次额外建议加一个类似win DIR/B 输出,方便重定向到txt文件。

kice avatar Jan 23 '22 02:01 kice

确实 ls --csv 不是为了输出标准 csv 用的,是为了给使用者多一个显示的方式。因为 rich 会对于一行过长的输出在列间换行,导致在终端复制不方便。--csv 选项是用 __builtin__.print 来打印一行的,不会有这个问题。

--csv 选项和 --show-* 系列选项一起用来定义输出的内容,使用者可以自己选择。

如果需要输出标准的 csv,原理上使用者只需要加几个过滤器就好了。比如:

BaiduPCS-Py ls /some/path --csv --show-size --show-date --show-absolute-path -R | sd '([^\t]*,[^\t]*)' '"$1"' | sd '\t' ',' | rg -v '^(/|,,)'

sd: https://github.com/chmln/sd rg: https://github.com/BurntSushi/ripgrep

PeterDing avatar Jan 23 '22 03:01 PeterDing

需要用户调用其他程序转换出本身应该是由这程序的输出就很奇怪。

我看法要么改文档(和改开关名)要么就是直接输出现在文档写着的CSV格式。

~~而且搞得这么复杂不如直接让用户写个py脚本直接调用api,然而没多少人会编程和正则表达式~~

kice avatar Jan 23 '22 07:01 kice

可以单独加一个 csv 命令来输出标准的 csv 文件。ls --csv 是为方便显示,不想改动。

PeterDing avatar Jan 23 '22 07:01 PeterDing