在c中重新编码unix命令ls(格式化输出)

时间:2016-06-09 10:18:39

标签: c algorithm

我正在重新编写Unix命令ls,我正在使用多个系统功能,包括但不限于,功能等。我拥有所需的所有信息,并且已经取得了很大进展。但是,我需要帮助格式化输出。

当你运行命令ls -l并且输出被格式化以便所有列都是正确的大小,而不管所述文件名的长度。

我想知道如何以与ls相同的方式格式化我的输出,关于列(只是一般的想法而不是实际的代码)。我该怎么做?

1 个答案:

答案 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");