`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줄은 기차 이미지(연기가 없는)로 이 목록을 편리하게 장식합니다.

관련 정보