Сохранение вывода нескольких столбцов из ls при подкачке

По умолчанию ls отображает вывод в нескольких столбцах, но при отправке на пейджер, такой как less, он переформатируется в один столбец. Можно ли как-нибудь распечатать оригинальный вывод с несколькими столбцами и сохранить форматирование?

5
задан 20 December 2011 в 13:02

1 ответ

Существует два параметра

   -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 не экспортируется в подоболочки. Два обходных пути можно использовать

  1. export COLUMNS в вашей ~/.bashrc

  2. реализовать эту строку как функцию или псевдоним в [ 1111]

    myls() {
        ls -Cw $COLUMNS --color "$@" | less -r
    }
    
0
ответ дан 20 December 2011 в 13:02

Другие вопросы по тегам:

Похожие вопросы: