为任何命令添加进度条
您是否曾尝试压缩一个巨大的文件,然后在终端前等待了一会儿,想知道是否应该去喝杯咖啡或者它是否即将完成?
在花了一些时间处理大型文件并尝试弄清楚我进步了多少之后,我最终发现了一些技巧,并决定将其工业化。进入Spybar。

这是一个简单的 Python 脚本,你可以使用
pip install spybar
如果您在命令前添加此命令,它将启动该命令并显示进度条。您也可以将其附加到现有的 PID。所有说明请参阅 readme 文件。
然而,本文并非讨论该工具的使用方法,而是讨论其工作原理。
首先声明一下,它只兼容 Linux。在其他操作系统上可能也有类似的方法,但本文不讨论这个问题。
在Linux中,有一个特殊的目录,/proc
其中包含每个正在运行的进程的目录。
假设您正在处理进程42
,您可以通过执行以下操作列出进程打开的所有文件
ls -lsh /proc/42/fd
在 C 语言中,打开文件时会得到一个整数,它是文件句柄。所有这些整数都列在fd
目录中。它们都是指向实际打开文件的符号链接。使用ls
,找到所需文件后,就可以记下它的编号。假设你对数字 感兴趣3
。
还有一个文件夹,里面包含一些关于这些处理程序的元信息。你可以简单地通过以下方式访问它:
cat /proc/42/fdinfo/3
您将获得类似这样的结果:
pos: 569573376
flags: 0104000
mnt_id: 28
包括向pos
我们指出处理程序指向的确切位置的行。
然后你只需要知道文件的大小,然后你就知道当前位置和文件大小,这就是生成进度条所需要的全部内容。
做了一段时间之后,我觉得应该写个小工具,于是就写到这里。感谢阅读!
鏂囩珷鏉ユ簮锛�https://dev.to/xowap/add-progress-bars-to-any-command-1f58