¿Cómo activar la paginación para el comando ls?

34

¿Cuál es la opción equivalente para que el lscomando active la paginación como en DOS dir /p?

NES
fuente

Respuestas:

54

No existe un equivalente directo en lssí mismo, pero existe la lessutilidad, que formateará la salida de cualquier comando como páginas separadas, desplazables por línea o página:

ls -C | less

Donde -Cdesencadena la visualización de columnas. Uso lahcomo argumentos ( ls -lah) para obtener un l ine mediante presentación en línea con unos archivos que se muestran ll (incluya los ocultos), y h uman filesizes legibles.

  • Para que los colores se muestren correctamente , debe agregar el --color=alwaysargumento lsy el -Rargumento en less *:

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

    texto alternativo
    esto muestra 'ls -ah --color = always | menos -R '

En contraste con more, lessle permitirá desplazarse por la salida. También es un poco más rápido para listados muy grandes.

La tubería funciona así:

Cada programa tiene entrada y salida, una tubería redirige la salida de un programa (ls) a la entrada de otro programa (menos). Y menos simplemente espera una entrada que luego formatea.

  • Un dos equivalente más antiguo sería pg:

    ls | pg
    

Tú también puedes

  • Use ls | heado ls | tailpara mostrar solo la primera o la última parte de la salida
  • Use watch "ls"para mantener la pantalla abierta, actualizándola cada pocos segundos para ver los cambios
  • Úselo banner $(ls)si está sentado muy lejos de la pantalla. (;

  • Si encuentra todo eso demasiado largo para recordarlo, puede configurar un alias para ello:

    Abra ~/.bash_aliasescon un editor de texto y agregue algo como esto:

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

    (este es un script que se ejecuta cada vez que se inicia un nuevo terminal virtual, debe configurar todos sus alias permanentes allí)

    Ahora solo puede escribir lsp, o el nombre que elija.

    Si desea poder pasar más argumentos a su alias, necesitamos definir una función en su lugar:

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

    Una función, principalmente con este aspecto: name(){ commands; };puede aceptar argumentos, $1, $2, $3y así sucesivamente. $@significa "cada argumento, si lo hay" .

    Ahora puede ejecutar algo así lsp *.py, lsp -Cy así sucesivamente. Insertamos los argumentos en el punto donde se pasan a ls. También podríamos haber insertado $ * por menos, si fuera el comando importante. Puede ver todos los argumentos de ls en man ls(vale la pena leer).


*: La razón de esto es que cada vez que canaliza algo, detecta un Terminal (en realidad el otro programa) que no es capaz de mostrar el color. "--color = always" obliga a ls a ignorar esto. El interruptor -R hace que repinte menos la pantalla, escapando los colores correctamente.

Stefano Palazzo
fuente
gracias gran respuesta, exactamente la parte con el alias vino a mi mente cuando vi la larga línea de comandos. ¿La única desventaja al crear el alias es que usar un filtro comodín como * .pdf no es posible? ¿Acaso existe también una solución para esto?
NES
Todo es posible ;-) Agregué un poco sobre argumentos, de alguna manera no pensé en eso antes.
Stefano Palazzo
2
diste más de lo esperado :) gracias por la respuesta detallada. PD, ¿sabe si hay diferencias entre bash y fish que de alguna manera evitan que este método de paso de argumento de alias funcione en peces? Obtuve el alias sin la opción de argumento para trabajar aquí.
NES
1
Ok, aquí askubuntu.com/questions/19728/… comienza la nueva pregunta, gracias de nuevo por sus útiles respuestas hasta ahora.
NES
1
$*y $@hacer exactamente lo mismo. Se expanden a $1 $2 $3 .... Sin embargo, entre "$@"comillas , se expande a "$1" "$2" "$3" ...mientras que se "$*"expande a "$1 $2 $3 ..."(es decir, todos los argumentos en una sola cadena, utilizando el primer carácter de IFScomo separador). mywiki.wooledge.org/BashGuide/Parameters
geirha
3

No estoy seguro de si hay algún comando ls para la paginación. Sin embargo, puede usar una tubería y less, así:

ls | less

Y use q para salir.

Ragnar123
fuente
1

Prueba ls | lesso ls | more. El segundo está cerca de la versión de DOS.

FUZxxl
fuente
1
¿Hay quizás otro método? porque la desventaja es para mí que la coloración de la carcasa no está activa cuando se usa una tubería?
NES
2
Pruebals --color=always -C | less -R
FUZxxl