UNIX シェル コマンドを再作成し、現在 ls を実行しています。許可、ファイルサイズなどを表示する ls -l を模倣する必要があります。適切にフォーマットされている場合、ネイティブの ls -l は次のようにすべての列が整列したままになります。
-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 関数に、列を自動的に整列させてフォーマットされた方法で印刷するように指示するにはどうすればよいですか?