我正在重新创建unix shell命令,并且正在执行ls。我必须模仿ls -l显示权限,文件大小等。本机的ls -l如果格式化舒服,所以每列保持对齐这样的:如何用padding正确地格式化printf()?
-rw-r--r-- 1 matt matt 1474560 Apr 11 14:54 diskimage
drwxr-xr-x 2 matt matt 4096 Mar 25 15:31 Example
-rwxr-xr-x 1 matt matt 26375 Apr 12 14:24 final
-rwxr-xr-x 1 matt matt 75 Apr 11 14:39 log.sh
现在,我的LS的版本并几乎同样的事情,除了我的专栏不用排队时不同的值在使用printf()函数是这样的:
drwxr-xr-x 0 1024 Dec 03 14:11 .
drwxr-xr-x 0 1024 Dec 03 14:11 ..
drwxr-xr-x 0 1024 Dec 03 13:57 Z
drwxr-xr-x 0 1024 Dec 03 14:11 X
drwxr-xr-x 0 1024 Dec 03 13:56 Y
-rw-r--r-- 0 334632 Dec 10 08:39 big
正如你所看到的,最后一项没有对齐,因为大小列大于其余。如何让printf函数以自动对齐列的格式进行打印?
以前我见过这个,但是如果我想要8是一个根据给定的最长值而改变的数字 –
@MattHintzke然后你使用'*'和一个额外的参数。请'man printf()'。 – 2013-04-12 21:34:49