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 .