Une fois dans un chat télégramme de SPbLUG de la communauté
Linuxblood de Saint-Pétersbourg, j'ai jeté un puzzle amusant:
Lister les fichiers de votre répertoire personnel avec autant de méthodes que possible, sans utiliser ls ou ses alias (1 méthode - 1 point)
La même tâche s'est ensuite envolée
vers un autre chat , et voici ce qui en est ressorti:
1. écho et impression
for i in ~/* ~/.* ; do echo $i ; done
Exactement la même chose sera retournée en remplaçant la commande echo par print.
En fait, vous pouvez vous passer d'un cycle, cela se terminera moins bien, mais cela correspond à l'état de la tâche.
echo ~/* ~/.*
2. arbre
Une façon plus évidente est d'utiliser l'arborescence, qui est pratiquement ls si vous choisissez les bonnes touches.
tree -aiL 1 ~
3. trouver
Aussi une solution plus qu'évidente.
find ~ -maxdepth 1 -mindepth 1
4. du
Oui, les gens n’ont pas oublié du.
du -ad 1 ~
5. goudron
Nous nous tournons vers
les procédures de l'eau avec des perversions subtiles.
tar -cvf /dev/null --no-recursion ~/* ~/.* 2>null
6. 7. Perl et Python
Étant donné que dans l'état du problème, j'ai oublié de restreindre les interprètes, qui dans Linux moderne sont généralement hors de la boîte dans le système, les cuisiniers et les éleveurs de serpents ne pouvaient pas rester à l'écart:
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
Hors compétition
Ils ont même donné le code source de C à la montagne, mais même si le compilateur est présent presque partout, à l'exception des distributions intégrées, j'ai considéré cela comme un gâchis complètement complet. ;-)
#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
Probablement, quelque part dans coreutils / findutils, les participants à l'amusement ont raté quelque chose. Il y a eu des tentatives infructueuses d'utiliser moins / plus, mais peut-être que le peuple Habrovsk a également eu des idées sur l'utilisation non standard des services publics standard.
Upd. 1
Merci habr! Commentaires, ce ne sont que des vacances! Et sur la base de leurs motivations, je prépare un nouveau post. Restez en contact!
Upd. 2
Comme je vous l'avais promis, la deuxième partie du
Marlezon Ballet .