Как активировать пагинацию для команды ls?

34

Каков эквивалентный параметр для lsкоманды для активации нумерации страниц, как в DOS dir /p?

NES
источник

Ответы:

54

lsСам по себе простого эквивалента нет , но есть lessутилита, которая будет форматировать вывод любой команды как отдельные страницы, прокручиваемые по строке или странице:

ls -C | less

Где -Cзапускается отображение столбца. Использование в lahкачестве аргументов ( ls -lah) , чтобы получить л НСИ на строчный дисплей с а Л.Л. файлов отображается ( в том числе скрытые из них), а также ч Умань читаемых filesizes.

  • Чтобы цвета отображались правильно , вам нужно добавить --color=alwaysаргумент в ls, а -Rаргумент на меньшее *:

    ls -C --color=always | less -R

    альтернативный текст
    это показывает 'ls -ah --color = всегда | меньше -R '

В отличие от more, lessпозволит вам прокручивать вывод. Это также немного быстрее для очень больших списков.

Труба работает так:

Каждая программа имеет вход и выход, канал перенаправляет вывод одной программы (ls) на вход другой программы (реже). И менее просто ожидает ввода, который он затем форматирует.

  • Более старым школьным эквивалентом будет pg:

    ls | pg
    

Вы также можете

  • Используйте ls | headили ls | tailдля отображения только первой или последней части вывода
  • Используйте, watch "ls"чтобы держать дисплей открытым, обновляя его каждые несколько секунд, чтобы посмотреть изменения
  • Используйте, banner $(ls)если вы сидите очень далеко от экрана. (;

  • Если вы обнаружите, что все это слишком долго запоминается, вы можете создать для него псевдоним :

    Откройте ~/.bash_aliasesтекстовым редактором и добавьте в него что-то вроде этого:

    alias lsp="ls -ah --color=always | less -R"
    

    (это скрипт, который запускается каждый раз, когда запускается новый виртуальный терминал, вы должны настроить все свои постоянные псевдонимы там)

    Теперь вы можете просто напечатать lspили любое другое имя по вашему выбору.

    Если вы хотите иметь возможность передавать дополнительные аргументы вашему псевдониму, нам нужно определить функцию вместо:

    lsp(){ ls -ah --color=always "$@" | less -R; }
    

    Функция, главным образом, глядя , как это: name(){ commands; };может принимать аргументы, $1, $2, $3и так далее. $@означает «каждый аргумент, если есть» .

    Теперь вы можете запустить что - то подобное lsp *.py, lsp -Cи так далее. Мы вставляем аргументы в тот момент, когда они передаются в ls. Мы могли бы также вставить $ * за меньшее, если бы это была важная команда. Вы можете увидеть все аргументы ls в man ls(стоит прочитать).


*: Причина этого в том, что всякий раз, когда вы что-то переносите, он обнаруживает терминал (фактически другую программу), не способный отображать цвет. «--color = всегда» заставляет ls игнорировать это. Ключ -R позволяет меньше перекрашивать экран, правильно скрывая цвета .

Стефано Палаццо
источник
спасибо отличный ответ, именно та часть с псевдонимом пришла мне в голову, когда я увидел длинную командную строку. Единственный недостаток создания псевдонима заключается в том, что при использовании фильтра с подстановочными знаками, такого как * .pdf, это невозможно? возможно, существует ли решение для этого?
NES
Все возможно ;-) Я добавил немного об аргументах, я как-то не думал об этом раньше.
Стефано Палаццо
2
Вы дали больше, чем ожидалось :) спасибо за подробный ответ. PS Знаете ли вы, есть ли различия между bash и fish, которые как-то мешают этому способу передачи аргументов псевдонима работать в fish? я получил псевдоним без параметра аргумента, чтобы работать здесь.
NES
1
Хорошо, здесь askubuntu.com/questions/19728/… новый вопрос начинается, еще раз спасибо за ваши полезные ответы.
РЭШ
1
$*и $@делать то же самое. Они расширяются до $1 $2 $3 .... В кавычках, однако, "$@"расширяется в "$1" "$2" "$3" ...то время как "$*"расширяется в "$1 $2 $3 ..."(то есть все аргументы в одну строку, используя первый символ в IFSкачестве разделителя). mywiki.wooledge.org/BashGuide/Parameters
гейра
3

Я не уверен, есть ли какая-то команда ls для нумерации страниц. Тем не менее, вы можете использовать трубу и less, как это:

ls | less

И используйте q для выхода.

Ragnar123
источник
1

Попробуйте ls | lessили ls | more. Второй близок к версии для DOS.

FUZxxl
источник
1
Есть ли другой способ? потому что недостаток для меня в том, что раскраска оболочки не активна при использовании трубы?
NES
2
Попробуйтеls --color=always -C | less -R
FUZxxl