Columns

如何在視窗邊框的末尾回顯帶有換行符的行?

  • October 16, 2014

我想在一行中回顯一個列表,TAB 分隔(就像ls一個文件夾中的文件一樣)

for i in one two some_are_very_long_stuff b c; do echo $i; done

每個單詞列印一行:

one
two
some_are_very_long_stuff
b
c

相反,我想打破它,就像ls沒有選項一樣:

mkdir /tmp/test
cd /tmp/test
for i in one two some_are_very_long_stuff b c z; do touch $i; done
ls

將輸出

b  one                       two
c  some_are_very_long_stuff  z

您可以使用columns來自 GNU 的命令autogen

$ seq 60 | columns
1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
53 54 55 56 57 58 59 60

使用zsh,您可以使用print -C

$ print -C4 {1..20}
1   6   11  16
2   7   12  17
3   8   13  18
4   9   14  19
5   10  15  20

$ print -aC4 {1..20}
1   2   3   4
5   6   7   8
9   10  11  12
13  14  15  16
17  18  19  20

如果您需要先對它們進行排序(就像這樣ls做):

$ print -oC4 {1..20}
1   14  19  5
10  15  2   6
11  16  20  7
12  17  3   8
13  18  4   9

引用自:https://unix.stackexchange.com/questions/101908