Como ativar a paginação para o comando ls?

34

Qual é a opção equivalente para o lscomando ativar a paginação como no DOS dir /p?

NES
fonte

Respostas:

54

Não existe um equivalente direto em lssi, mas existe o lessutilitário, que formatará a saída de qualquer comando como páginas separadas, roláveis ​​por linha ou página:

ls -C | less

Onde -Caciona a exibição da coluna. Use lahcomo argumentos ( ls -lah) para obter uma l ine pela exibição de linha com um arquivos ll sendo exibido (incluem as ocultas), e h uman filesizes legíveis.

  • Para que as cores apareçam corretamente , você precisa adicionar o --color=alwaysargumento lse o -Rargumento com menos *:

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

    texto alternativo
    isso mostra 'ls -ah --color = sempre | menos -R '

Ao contrário de more, lesspermitirá rolar pela saída. Também é um pouco mais rápido para listagens muito grandes.

O pipe funciona assim:

Todo programa tem entrada e saída, um canal redireciona a saída de um programa (ls) para a entrada de outro programa (menos). E menos espera apenas a entrada que ele formata.

  • Um equivalente mais antigo da escola seria pg:

    ls | pg
    

Você também pode

  • Use ls | headou ls | tailpara exibir apenas a primeira ou a última parte da saída
  • Use watch "ls"para manter a tela aberta, atualizando-a a cada poucos segundos para assistir as alterações
  • Use banner $(ls)se você estiver sentado muito longe da tela. (;

  • Se você achar tudo isso por muito tempo para lembrar, poderá configurar um alias para ele:

    Abra ~/.bash_aliasescom um editor de texto e adicione algo assim:

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

    (este é um script que é executado toda vez que um novo terminal virtual é iniciado, você deve configurar todos os seus aliases permanentes)

    Agora você pode apenas digitar lspou qualquer nome que escolher.

    Se você deseja passar mais argumentos para o seu alias, precisamos definir uma função :

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

    Uma função, olhando principalmente como esta: name(){ commands; };pode aceitar argumentos, $1, $2, $3e assim por diante. $@significa "todo argumento, se houver" .

    Agora você pode executar algo como lsp *.py, lsp -Ce assim por diante. Nós inserimos os argumentos no ponto em que eles são passados ​​para ls. Também poderíamos ter inserido $ * por menos, se esse fosse o comando importante. Você pode ver todos os argumentos de ls em man ls(vale a pena ler).


*: A razão para isso é que, sempre que você canaliza algo, ele detecta um terminal (na verdade o outro programa) que não é capaz de exibir cores. "--color = always" força ls a ignorar isso. A opção -R torna menos repintar a tela, escapando às cores corretamente.

Stefano Palazzo
fonte
obrigado ótima resposta, exatamente a parte do alias me veio à mente quando vi a longa linha de comando. a única desvantagem ao criar o alias é que, usando um filtro curinga como * .pdf, isso não é possível? talvez exista também uma solução para isso?
NES
Tudo é possível ;-) Eu adicionei um pouco sobre argumentos, de alguma forma não pensei nisso antes.
Stefano Palazzo
2
você deu mais do que o esperado :) obrigado pela resposta detalhada. PS: você sabe se existem diferenças entre o bash e o fish que, de alguma forma, impedem que esse método de passagem de argumento de alias funcione no fish? Eu tenho o alias sem a opção de argumento para trabalhar aqui.
NES
1
Ok, aqui askubuntu.com/questions/19728/… a nova pergunta começa, obrigado novamente por suas respostas úteis até agora.
NES
1
$*e $@faça exatamente a mesma coisa. Eles se expandem para $1 $2 $3 .... Citado, no entanto, se "$@"expande para "$1" "$2" "$3" ...enquanto se "$*"expande para "$1 $2 $3 ..."(ou seja, todos os argumentos em uma sequência, usando o primeiro caractere IFScomo separador). mywiki.wooledge.org/BashGuide/Parameters
geirha
3

Não tenho certeza se existe algum comando ls para paginação. No entanto, você pode usar um pipe e less, assim:

ls | less

E use q para sair.

Ragnar123
fonte
1

Tente ls | lessou ls | more. O segundo está próximo da versão do DOS.

FUZxxl
fonte
1
Existe talvez outro método? porque a desvantagem é para mim que a coloração da concha não está ativa ao usar um cachimbo?
NES
2
Tentels --color=always -C | less -R
FUZxxl