مرة واحدة في دردشة برقية من مجتمع سان بطرسبرج Linuxblood
SPbLUG رميت لغز مضحك:
أدرج الملفات الموجودة في الدليل الرئيسي بأكثر من طريقة ممكنة ، دون استخدام ls أو الأسماء المستعارة له (طريقة واحدة - نقطة واحدة)
انتقلت المهمة نفسها لاحقًا
إلى دردشة أخرى ، وهنا ما جاء منها:
1. الصدى والطباعة
for i in ~/* ~/.* ; do echo $i ; done
بالضبط سيتم إرجاع نفس الشيء عن طريق استبدال أمر echo بالطباعة.
في الواقع ، يمكنك الاستغناء عن دورة ، وسوف تتحول ليس بشكل جميل ، لكنه يناسب شرط المهمة.
echo ~/* ~/.*
2. شجرة
هناك طريقة أكثر وضوحًا هي استخدام الشجرة ، والذي يكون عمليًا إذا اخترت المفاتيح الصحيحة.
tree -aiL 1 ~
3. تجد
أيضا أكثر من حل واضح.
find ~ -maxdepth 1 -mindepth 1
4. دو
نعم ، الناس لم ينسوا دو.
du -ad 1 ~
5. القطران
ننتقل إلى
إجراءات المياه مع الانحرافات خفية.
tar -cvf /dev/null --no-recursion ~/* ~/.* 2>null
6. 7. بيرل وبيثون
نظرًا لأنني في حالة المشكلة نسيت أن أضع قيودًا على المترجمين الفوريين ، الذين في نظام Linux الحديث عادة ما يكونون خارج النظام ، لم يتمكن الطهاة ومزارعو الثعابين من الابتعاد:
بيرل:
perl -e 'use feature "say"; opendir my $dh, "." or die "Could not open . for reading: $!\n"; while (my $thing = readdir $dh) { say $thing; };'
الثعبان:
echo -e "import os\nfor i in os.listdir(os.getenv('HOME')): print(i)" | python
خارج المنافسة
لقد قاموا حتى بإعطاء الكود المصدري لـ C إلى الجبل ، لكن على الرغم من وجود المترجم في كل مكان تقريبًا ، باستثناء أي توزيعات مُرمز إليها ، فقد اعتبرت ذلك فوضى كاملة تمامًا. ؛-)
#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
ربما ، في مكان ما في coreutils / findutils ، غاب المشاركون في تسلية شيء. كانت هناك محاولات فاشلة لاستخدام أقل / أكثر ، ولكن ربما حصل أفراد هابروفسك أيضًا على أفكار حول الاستخدام غير القياسي للأدوات المساعدة القياسية.
محدث. 1
شكرا هابر! التعليقات ، هذا هو مجرد نوع من عطلة! واستنادا إلى دوافعهم ، أنا أستعد وظيفة جديدة. ابقى على اتصال
محدث. 2
كما وعدت ، الجزء الثاني من
مارليزون باليه .