El atípico "ls" o cómo se entretienen los linuxoides

Una vez en un chat de telegramas de la comunidad de sangre sangrienta de San Petersburgo SPbLUG lancé un rompecabezas divertido:
Enumere los archivos en su directorio de inicio con tantos métodos como sea posible, sin usar ls o sus alias (1 método - 1 punto)

La misma tarea más tarde voló a otro chat , y esto es lo que surgió:

1. eco e impresión


for i in ~/* ~/.* ; do echo $i ; done 

Se devolverá exactamente lo mismo al reemplazar el comando echo con print.
De hecho, puede prescindir de un ciclo, resultará no tan bonito, pero se ajusta a la condición de la tarea.

 echo ~/* ~/.* 

2. árbol


Una forma más obvia es usar el árbol, que es prácticamente ls si elige las teclas correctas.

 tree -aiL 1 ~ 

3. encontrar


También una solución más que obvia.

 find ~ -maxdepth 1 -mindepth 1 

4. du


Sí, la gente no se olvidó de du.

 du -ad 1 ~ 

5. alquitrán


Pasamos a los procedimientos de agua con perversiones sutiles.

 tar -cvf /dev/null --no-recursion ~/* ~/.* 2>null 

6. 7. Perl y Python


Dado que, en la condición del problema, olvidé poner una restricción a los intérpretes, que en Linux moderno generalmente están listos para usar en el sistema, los cocineros y criadores de serpientes no podían mantenerse alejados:
Perl:

 perl -e 'use feature "say"; opendir my $dh, "." or die "Could not open . for reading: $!\n"; while (my $thing = readdir $dh) { say $thing; };' 

Python:

 echo -e "import os\nfor i in os.listdir(os.getenv('HOME')): print(i)" | python 

Fuera de competencia


Incluso dieron el código fuente de C a la montaña, pero a pesar de que el compilador está presente en casi todas partes, a excepción de las distribuciones integradas, lo consideré un desastre completamente completo. ;-)

 #include <stdio.h> #include <stdlib.h> #include <dirent.h> #define HOME getenv("HOME") int main(int argc, char const *argv[]) { struct dirent *dp; DIR *dir = opendir(HOME); while ((dp = readdir(dir)) != NULL) printf("%s\n", dp->d_name); closedir(dir); return 0; } 

PS


Probablemente, en algún lugar de coreutils / findutils, los participantes de la diversión se perdieron algo. Hubo intentos fallidos de usar menos / más, pero tal vez la gente de Habrovsk también tuvo ideas sobre el uso no estándar de las utilidades estándar.

Upd. 1


Gracias habr! Comentarios, esto es solo una especie de vacaciones! Y en base a sus motivos, estoy preparando una nueva publicación. Mantente en contacto!

Upd. 2


Como prometí, la segunda parte del Ballet Marlezon .

Source: https://habr.com/ru/post/466987/


All Articles