`Sl` কখনও কি বর্তমান ডিরেক্টরিটি দেখায়?


106

লুপ থেকে বেরিয়ে আসা লোকদের জন্য slহ'ল হিউমারাসাস কমান্ড লাইন টুল যা লোকদের ভুল টাইপ করলে ট্রিপ আপ করে ls। চালিত হলে এটি একটি বাষ্প লোকোমোটিভ মুদ্রণ করে। উদাহরণ স্বরূপ:

                          (  ) (@@) ( )  (@)  ()    @@    O     @     O     @      O
                     (@@@)
                 (    )
              (@@@@)

            (   )
         ====        ________                ___________
     _D _|  |_______/        \__I_I_____===__|_________|
      |(_)---  |   H\________/ |   |        =|___ ___|      _________________
      /     |  |   H  |  |     |   |         ||_| |_||     _|                \_____A
     |      |  |   H  |__--------------------| [___] |   =|                        |
     | ________|___H__/__|_____/[][]~\_______|       |   -|                        |
     |/ |   |-----------I_____I [][] []  D   |=======|____|________________________|_
   __/ =| o |=-O=====O=====O=====O \ ____Y___________|__|__________________________|_
    |/-=|___|=    ||    ||    ||    |_____/~\___/          |_D__D__D_|  |_D__D__D_|
     \_/      \__/  \__/  \__/  \__/      \_/               \_/   \_/    \_/   \_/

যাইহোক, ম্যান পৃষ্ঠায় slএটি নিম্নোক্ত বাগটি উল্লেখ করেছে:

BUGS
        It rarely shows contents of current directory.

সুতরাং, প্রশ্ন, কিছু শর্ত আছে, যার অধীনে slআসলে নেই বর্তমান ডিরেক্টরী দেখাবেন?


45
আমাকে একটি খুব দরকারী ইউটিলিটির সাথে পরিচয় করানোর জন্য আমি কয়েক দশক অবহেলিত ছিলাম।
ডেভনুল

3
@ এসএলএম আমরা এটি নিশ্চিত করে রেখেছি, তাই আমি এই সমস্যাটি সমাধান করার জন্য একটি বাগ

44
এটি বলে যে এটি খুব কমই ডিরেক্টরিটির বিষয়বস্তু প্রদর্শন করে। সুতরাং আমি অনুমান করি তাদের অর্থ যদি আপনার মতো ফাইল থাকে তবে | | | H |__--------------------| [___] | =| |এসএল তাদের দেখায়।
মিঃ লিস্টার

3
অনুরোধটি টানুন: github.com/mtoyoda/sl/pull/11
asteri

7
আমি 14 বছর ধরে ইউনিক্স / লিনাক্স সিসাদমিন এবং এই অবিশ্বাস্য সরঞ্জামটির কথা কখনও শুনিনি। এটি শিখতে কত অবাক হয় amazing
মাইকেল মার্টিনেজ

উত্তর:


183

যতদূর আমি জানি, কেবলমাত্র শর্তের অধীনে slবর্তমান ডিরেক্টরিটি প্রদর্শিত হয় যখন আপনি এটির মতো ভুল টাইপ করেন ls


8
+1 হাস্যকর, তবে আমি আরও অনুমোদিত উত্তর আশা করছি।

37
টুইটগুলি দেখুন
মাইকজার্ভ

42
  • লেমা: slএকটি বাষ্প লোকোমোটিভ মুদ্রণ করে
  • লেমা: বৈধ ফাইলের নামগুলিতে ফরোয়ার্ড স্ল্যাশ থাকতে পারে না (যদিও পাথগুলি পারে)
  • লেমা: বাষ্প লোকোমোটিভে ফরোয়ার্ড স্ল্যাশ রয়েছে:

    $ touch '                          (  ) (@@) ( )  (@)  ()    @@    O     @     O     @      O
    >                      (@@@)
    >                  (    )
    >               (@@@@)
    > 
    >             (   )
    >          ====        ________                ___________
    >      _D _|  |_______/        \__I_I_____===__|_________|
    >       |(_)---  |   H\________/ |   |        =|___ ___|      _________________
    >       /     |  |   H  |  |     |   |         ||_| |_||     _|                \_____A
    >      |      |  |   H  |__--------------------| [___] |   =|                        |
    >      | ________|___H__/__|_____/[][]~\_______|       |   -|                        |
    >      |/ |   |-----------I_____I [][] []  D   |=======|____|________________________|_
    >    __/ =| o |=-O=====O=====O=====O \ ____Y___________|__|__________________________|_
    >     |/-=|___|=    ||    ||    ||    |_____/~\___/          |_D__D__D_|  |_D__D__D_|
    >      \_/      \__/  \__/  \__/  \__/      \_/               \_/   \_/    \_/   \_/'
    touch: cannot touch ‘[...]’: No such file or directory
    

উপসংহার: slবর্তমান ডিরেক্টরিটি কখনই প্রদর্শন করে না। Qed।


6
এটিতে বেশ কয়েকটি /'এস' রয়েছে , যা ইউনিক্স ফাইলের নামগুলিতে অনুমোদিত নয়।
এমটাক

2
আপনি যদি একটি করেন তবে mkdir -p "$(dirname "$(sl)")"আপনি করতে পারেন touch "$(sl)"। অবশ্যই, আপনি নিজের ওএস / এফএস এর সীমা পরীক্ষা করতে পারেন। এবং পরিষ্কার যে মজা আছে।
কেভিন

3
@ মিস্টারলিস্টার অবশ্যই এটি তখনই সম্ভব হবে যদি এই ধরনের ফাইলগুলি তৈরি করার অনুমতি দেওয়ার জন্য ফাইল সিস্টেমের মধ্যে কোনও বাগ থাকে। আপনার কি রেফারেন্স আছে?
l0b0

1
@ ভোলকারসিগেল: সত্যই নয়। উইন্ডোজ উভয়ই সমর্থন করে /এবং \এগুলি একই জিনিস বোঝায়।
কনরাড বোরোস্কি

3
যদি আপনার কাছে কোনও ফাইল H(উদাহরণস্বরূপ) নামে থাকে তবে slতা প্রকৃতপক্ষে তা প্রদর্শন করে না। এটি কেবল এটি অন্যান্য অনেক জিনিস দেখায়। :-)
শ্রীভাতসার আর

38

সেই বাগটি ঠিক করার জন্য এখানে একটি প্যাচ রয়েছে :)

diff --git a/sl.c b/sl.c
index 2eeceb3..f2213ad 100644
--- a/sl.c
+++ b/sl.c
@@ -37,6 +37,7 @@
 #include <curses.h>
 #include <signal.h>
 #include <unistd.h>
+#include <stdlib.h>
 #include "sl.h"

 int ACCIDENT  = 0;
@@ -71,6 +72,13 @@ void option(char *str)
 int main(int argc, char *argv[])
 {
     int x, i;
+    
+    srand(time(NULL));
+    if(rand() % 100 < 10)
+    {
+       /* 10% chance of directory listing :) */
+       execv("/bin/ls", argv);
+    }

     for (i = 1; i < argc; ++i) {
    if (*argv[i] == '-') {

5
ওহ পালনকর্তা. আপনি স্যার একটি পণ্ডিত এবং প্রতিভা।

3
দয়া করে ... দয়া করে ... সেই

1
হ্যাঁ, আমি কীভাবে এটি করব তা আসলে আমার কোনও ধারণা নেই? অন্যান্য লোকের সফ্টওয়্যার জন্য ওয়েব-ভিত্তিক ডাউনলোড পোর্টাল বাদে আমি গিথুব নিজেই ব্যবহার করি না। আপনি যদি এটি পছন্দ করতে পারেন। আমি উপরের কোডে সমস্ত কপিরাইট আনুষ্ঠানিকভাবে দাবি অস্বীকার করে পাবলিক ডোমেনে রাখি।
আয়নোক্লাস্ট ব্রিঘাম

+1, তবে এটি ঠিক 10% নয় - rand() "0 এবং RAND_MAX এর মধ্যে পরিসরে একটি সিউডো-র্যান্ডম অবিচ্ছেদ্য সংখ্যা প্রদান করে," এটি গ্রন্থাগার-নির্ভর কিন্তু 100 দ্বারা বিভাজ্য হতে পারে না
l0b0

1
প্রযুক্তিগতভাবে, এক্সেক্স () ফাংশনগুলি ফিরে আসতে পারে। থেকে man 3 exec: "এক্সিকিউটিভ () এর কোনও ফাংশন যদি ফেরত দেয় তবে একটি ত্রুটি ঘটবে The
আয়নোক্লাস্ট ব্রিঘাম

24

আপনি এখানে সোর্স কোডটি চেক করতে পারেন - https://github.com/mtoyoda/sl , হায় আফসোস ডকুমেন্টেড এগুলি ছাড়া অন্য কোনও বিকল্প নেই এবং দুঃখের বিষয় আসলে ফাইলগুলির নাম মুদ্রণ করবে না।

সুতরাং দেখে মনে হচ্ছে @ এসফাইনের উত্তরটি সঠিক।


7
লিঙ্কটির জন্য ধন্যবাদ, এটি সমাধান করা যায় কিনা তা দেখার জন্য আমি বিকাশকারীদের সাথে একটি টিকিট জমা দিয়েছি ।

5
@ লেগোস্টোর্টমুপ্র, সত্যিই একটি জটিল বিষয়।
গ্রিম

5
হার্টলেডের পর থেকে সম্ভবত সবচেয়ে বড় বাগ!

12

নোট করুন যে I0b0 এর উত্তর কেবলমাত্র একটি প্রমাণ যা slকখনই সমস্ত এবং কেবলমাত্র বর্তমান ডিরেক্টরি তালিকা প্রদর্শন করে না । তবে, এমন পরিস্থিতিতে রয়েছে যেখানে slঅতিরিক্ত 'তথ্য' সহকারে বর্তমান ডিরেক্টরি তালিকা প্রদর্শন করা হবে।

উদাহরণস্বরূপ, একটি খালি ডিরেক্টরিতে:

$ touch '                          (  ) (@@) ( )  (@)  ()    @@    O     @     O     @      O'
$ touch '                   (@@@)'
$ touch '                  (    )'
$ touch '              (@@@@)'
$ touch '            (   )'
$ sl

প্রথম ছয়টি লাইনে ডিরেক্টরিটির বিষয়বস্তুগুলি তালিকাবদ্ধ করা হবে এবং বাকি 10 টি লাইনগুলি সুবিধামতভাবে ট্রেনের একটি চিত্র (ধোঁয়াবিহীন) দিয়ে এই তালিকাটি শোভিত করবে।


3
অথবা, বর্তমান ডিরেক্টরিটি একটি খালি সেট হতে পারে। কোন ক্ষেত্রে ট্রেনের ছবি সহ সমস্ত (অস্তিত্বহীন) ফাইল প্রদর্শিত হয় are :-)
কেভিন সিফার্ট

6

আমি জানি যে লেগো স্টর্মট্রোপার একটি টিকিট লগইন করেছেন যাতে সমালোচনামূলক সমস্যাটির সমাধান করা যায়। কে জানে যে এটি ঠিক করতে পুরো সময় নিতে পারে?

এরূপ হিসাবে, আমি একটি কার্যকর প্রস্তাব দিয়েছি যাতে গুরুতর সমস্যার কারণে প্রভাব হ্রাস করা যায়। আপনি slকার্যকর একটি শেল ফাংশন তৈরি করতে পারেন sl:

sl() {
  ((RANDOM%42)) && command sl || ls;
}

এখন অনিয়ন্ত্রিতভাবে sl, ডিরেক্টরি বিষয়বস্তু তালিকাবদ্ধ করুন।


2

যদি আপনি এটির নাম lsরাখেন তবে এটি বর্তমান ডিরেক্টরিটি মুদ্রণ করবে - আসলে, একবার আমি বাষ্প ইঞ্জিনের লোকোমোটিভ দেখে হাসি থামিয়ে দিয়েছিলাম, আমি এটিকে আমার এলিয়াসগুলির তালিকায় যুক্ত করেছি।


1

আপনি সর্বদা এটির জন্য সোর্স কোডটি নিজের জন্য পর্যালোচনা করতে পারবেন এবং আপনি কোনও অবস্থাতেই দেখতে পাবেন এটি প্রকৃত lsকমান্ড বা পরিচালনা ডিরেক্টরি প্রদর্শন করে না।

https://github.com/mtoyoda/sl

উত্স আসলে বরং সহজ। এমনকি যদি আপনি "কোডার নন" তবে আপনার বেশিরভাগটি বুঝতে সক্ষম হওয়া উচিত।

আমি বিশ্বাস করি যে আপনি উপরে যে "বাগ" পোস্ট করেছেন তা সত্যিই কেবল ঠাট্টার মধ্যে রয়েছে (এবং এই লোলের মতো আলোচনার কারণ হিসাবে)


1

হ্যাঁ, slআপনি যদি বাশে উপযুক্ত উপন্যাস বা আপনি যে কোনও শেল ব্যবহার করছেন সেট আপ করেন তবে ঠিক এলএস এর মতোই কাজ করবে!

আমার কাছে এলএস সহ বেশ কয়েকটি উরফ রয়েছে

alias ls='ls -FG'
alias ll='ls -lFG'

পরামর্শের জন্য ধন্যবাদ - আমি যোগ করব

alias sl='ls -FG'

(এমন নয় যে আমি কখনও টাইপিংয়ের কথা মনে করি slতবে তারপরে আমি আমাদের প্রবণতা llবা lh!)


-1

আমিও যেমন করতাম তুমি তা করতে পার ...

এমভি / ইউএসআর / গেমস / এসএল / ইউএসআর / গেমস / এসএল-ওএলডি

এমভি / ইউএসআর / গেমস / এলএস / ইউএসআর / গেমস / এলএস-ওএলডিডি

ন্যানো / ইউএসআর / গেমস / এসএল

নিম্নলিখিত পেস্ট করুন:

#! / বিন / ব্যাশ

প্রতিধ্বনিত "" আপনি টাইপড 'sl' ইনস্টল অফ '' এলএস '! "

, / Usr / গেম / SL বয়সী

প্রতিধ্বনি "অনুমান আমি যেভাবেই এটি তালিকাবদ্ধ করতে পারি ..."

/ বিন / ম

প্রস্থান করতে CTRL + X এবং সংরক্ষণের জন্য Y টিপুন।

ন্যানো / ইউএসআর / গেমস / এলএস

নিম্নলিখিত পেস্ট করুন:

#! / বিন / ব্যাশ

প্রতিধ্বনি "আপনি টাইপ করেছেন 'এলএস' ইনস্টল অফ 'এলএস'!"

, / Usr / গেম / SL বয়সী

প্রতিধ্বনি "অনুমান আমি যেভাবেই এটি তালিকাবদ্ধ করতে পারি ..."

/ বিন / ম

প্রস্থান করতে CTRL + X এবং সংরক্ষণের জন্য Y টিপুন।

পিএস: এটি পুনরুত্থানের জন্য আপনাকে স্বাগত জানাই .. "এসএল লিনাক্স কমান্ড" অনুসন্ধান করা এখনও এই থ্রেডটিকে সামনে এনেছে, তাই আমি ভেবেছিলাম যে আমি কীভাবে ফাইলগুলি তালিকাভুক্ত করেছি তার সত্যিকারের উত্তর দেব ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.