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 .