"Ls" yang tidak lazim atau bagaimana linuxoids terhibur

Suatu kali dalam sebuah obrolan telegram dari komunitas St Petersburg Linuxblood SPbLUG saya melemparkan sebuah teka-teki lucu:
Buat daftar file di direktori home Anda dengan sebanyak mungkin metode, tanpa menggunakan ls atau aliasnya (1 metode - 1 poin)

Tugas yang sama kemudian terbang ke obrolan lain , dan inilah yang terjadi:

1. gema dan cetak


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

Hal yang persis sama akan dikembalikan dengan mengganti perintah gema dengan cetak.
Bahkan, Anda bisa melakukannya tanpa siklus, itu akan berubah tidak begitu indah, tetapi itu sesuai dengan kondisi tugas.

 echo ~/* ~/.* 

2. pohon


Cara yang lebih jelas adalah dengan menggunakan pohon, yang praktis adalah jika Anda memilih kunci yang tepat.

 tree -aiL 1 ~ 

3. temukan


Juga solusi yang lebih jelas.

 find ~ -maxdepth 1 -mindepth 1 

4. du


Ya, orang tidak melupakan du.

 du -ad 1 ~ 

5. tar


Kami beralih ke prosedur air dengan penyimpangan yang halus.

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

6. 7. Perl dan Python


Karena dalam kondisi masalah saya lupa memberi batasan pada penerjemah, yang dalam Linux modern biasanya berada di luar kotak dalam sistem, para juru masak koki dan ular tidak bisa menjauh:
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 

Keluar dari kompetisi


Mereka bahkan memberikan kode sumber untuk C ke gunung, tetapi meskipun kompiler hadir hampir di mana-mana, kecuali untuk distribusi emmbedded, saya menganggap ini berantakan sepenuhnya lengkap. ;-)

 #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


Mungkin, di suatu tempat di coreutils / findutils, para peserta hiburan melewatkan sesuatu. Ada upaya yang gagal untuk menggunakan lebih sedikit / lebih, tetapi mungkin orang-orang Habrovsk juga mendapat ide tentang penggunaan utilitas standar yang tidak standar.

Pembaruan. 1


Terima kasih habr! Komentar, ini hanya semacam liburan! Dan berdasarkan motif mereka, saya sedang menyiapkan posting baru. Tetap berkomunikasi!

Pembaruan. 2


Seperti yang saya janjikan, bagian kedua Balet Marlezon .

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


All Articles