`sl`は現在のディレクトリを表示しましたか?

`sl`は現在のディレクトリを表示しましたか?

慣れていない人のために説明すると、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実際にどのような条件下でどのような条件が存在するかという質問が残っています。する現在のディレクトリを表示しますか?

答え1

私が知っている限り、sl現在のディレクトリが表示される唯一の条件はとして誤って入力した場合ですls

答え2

  • Lemma: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現在のディレクトリを表示しないでください。量子電子デバイス。

答え3

バグを修正したパッチです:)

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] == '-') {

答え4

I0b0の答えは単なる証拠であり、すべてのsl内容を表示するわけではありません。ただ現在のディレクトリのリスト。ただし、場合によっては、sl現在のディレクトリのリストが他の「情報」と一緒に表示されます。

たとえば、空のディレクトリでは次のようになります。

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

最初の6行はディレクトリの内容をリストし、残りの10行は列車のイメージ(煙なし)でこのリストを便利に装飾します。

関連情報