Das atypische "ls" oder wie Linuxoide unterhalten werden

Einmal in einem Telegramm-Chat der St. Petersburger Linuxblood-Community SPbLUG warf ich ein lustiges Rätsel:
Listen Sie die Dateien in Ihrem Home-Verzeichnis mit so vielen Methoden wie möglich auf, ohne ls oder seine Aliase zu verwenden (1 Methode - 1 Punkt)

Die gleiche Aufgabe flog später in einen weiteren Chat , und hier ist, was daraus wurde:

1. Echo und Druck


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

Das Ersetzen des Echo-Befehls durch print bewirkt genau dasselbe.
In der Tat können Sie auf einen Zyklus verzichten, es wird nicht so schön ausfallen, aber es passt zum Zustand der Aufgabe.

 echo ~/* ~/.* 

2. Baum


Ein offensichtlicherer Weg ist die Verwendung eines Baums, was praktisch der Fall ist, wenn Sie die richtigen Schlüssel auswählen.

 tree -aiL 1 ~ 

3. finden


Auch eine mehr als offensichtliche Lösung.

 find ~ -maxdepth 1 -mindepth 1 

4. du


Ja, die Leute haben du nicht vergessen.

 du -ad 1 ~ 

5. Teer


Wir wenden uns Wasserprozeduren mit subtilen Perversionen zu.

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

6. 7. Perl und Python


Da ich im Zustand des Problems vergessen habe, die Dolmetscher einzuschränken, die unter modernem Linux normalerweise sofort im System vorhanden sind, konnten sich die Köche und Schlangenbauern nicht fernhalten:
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 

Außer Konkurrenz


Sie gaben sogar den Quellcode für C an den Berg weiter, aber obwohl der Compiler fast überall vorhanden ist, abgesehen von eingebetteten Distributionen, hielt ich dies für ein völliges Durcheinander. ;-);

 #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


Wahrscheinlich haben die Teilnehmer der Unterhaltung irgendwo in Coreutils / Findutils etwas verpasst. Es gab erfolglose Versuche, weniger / mehr zu verwenden, aber vielleicht hatten die Habrovsk-Leute auch Ideen zur nicht standardmäßigen Verwendung von Standarddienstprogrammen.

Upd. 1


Danke habr! Kommentare, dies ist nur eine Art Urlaub! Und basierend auf ihren Motiven bereite ich einen neuen Beitrag vor. Bleib in Kontakt!

Upd. 2


Wie versprochen der zweite Teil des Marlezon-Balletts .

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


All Articles