По умолчанию ls
отображает вывод в нескольких столбцах, но при отправке на пейджер, такой как less
, он переформатируется в один столбец. Можно ли как-нибудь распечатать оригинальный вывод с несколькими столбцами и сохранить форматирование?
Существует два параметра
blockquote>-C list entries by columns -x list entries by lines instead of by columns
. Первый показывает вывод в столбцах, где каждый столбец идет после предыдущего (с точки зрения сортировки):
enzotib@acer:tmp$ touch {10..99} enzotib@acer:tmp$ ls -C | less 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97 13 18 23 28 33 38 43 48 53 58 63 68 73 78 83 88 93 98 14 19 24 29 34 39 44 49 54 59 64 69 74 79 84 89 94 99
Второй вариант помещает первые элементы в первый ряд, затем во второй ряд и т. Д .:
enzotib@acer:tmp$ ls -x | less 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
При передаче на пейджер ширина терминала и форматирование цвета не учтено в
ls
. Для этого вы можете сделатьls -Cw $COLUMNS --color | less -r
, где опция
-r
дляless
необходима для правильной интерпретации цветовых последовательностей ANSI.
Помещение этой строки в скрипт не работает, потому чтоCOLUMNS
не экспортируется в подоболочки. Два обходных пути можно использовать
export COLUMNS
в вашей~/.bashrc
реализовать эту строку как функцию или псевдоним в [ 1111]
myls() { ls -Cw $COLUMNS --color "$@" | less -r }