我正在重新编写Unix命令ls,我正在使用多个系统功能,包括但不限于,功能等。我拥有所需的所有信息,并且已经取得了很大进展。但是,我需要帮助格式化输出。
当你运行命令ls -l并且输出被格式化以便所有列都是正确的大小,而不管所述文件名的长度。
我想知道如何以与ls相同的方式格式化我的输出,关于列(只是一般的想法而不是实际的代码)。我该怎么做?
答案 0 :(得分:0)
有各种非打印转义字符可以执行任务,例如将光标移动到特定位置,更改字体和背景颜色等。您可以使用它们将光标移动到计算位置以实现整齐的列基于格式,如ls
命令的输出。您想要考虑的字符如下:
\033[l;cH
:将光标移动到 l 行和列 c 。\033[nA
:将光标向上移动 n 行。\033[bB
:将光标向下移动 n 行。\033[nC
:向前移动光标 n 字符。\033[nD
:向后移动光标 n 字符。\033[2J
:清除屏幕并将光标移动到第0行和第0列\033[K
:不移动光标,清除从当前光标位置开始的行。\033[s
:存储当前光标位置\033[u
:将光标移回先前存储的位置。例如,以下语句将光标移动到屏幕的左上角并清除第一行,并将光标返回到其原始位置。
printf("\033[s\033[0;0H\033[K\033[u");