1. bash / Говнокод #26727

    0

    1. 1
    2. 2
    #!usr/bin/sh
    sudo rm -rfv /

    Запостил: Oleg4260, 02 Июня 2020

    Комментарии (108) RSS

    • Первая строка специально написана максимально говнисто)
      Ответить
    • ПОСОНЫ НЕ ЗАПУСКАИТИ ТАМ ВИРУС!
      ЛИНУКС УДОЛИЛСЯ ПЕШУ С ШИПДОШС!
      Ответить
      • Всё нормально. Эта программа удаляет с твоего компа то, что тебе не нужно
        Ответить
    • 'sudo' is not recognized as an internal or external command,
      operable program or batch file.


      не работает
      Ответить
    • «Ideone» говорит: «sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set»

      Короче, не работает. Плохо сделали, тупо.

      https://ideone.com/eoN83j
      Ответить
    • Автор, у тебя баг "sudo" не является внутренней или внешней
      командой, исполняемой программой или пакетным файлом.
      Ответить
    • Бля под линуксом был только прод сервер я ввел и все пропало((
      Автор как вернуть код я его только на сервере держал((
      Ответить
    • http://linuxcommand.org/lc3_man_pages/rm1.html

      To  remove a file whose name starts with a `-', for example `-foo', use
             one of these commands:
      
                    rm -- -foo
      
                    rm ./-foo

      Какой багор )))

      AUTHOR
             Written by Paul Rubin, David MacKenzie, Richard M.  Stallman,  and  Jim
             Meyering.

      Какой скилл ))) А что делали до того, как эти уважаемые люди создали «rm»?
      Ответить
      • Эм, пользовались другой реализацией? Юниксы так то и до гну были.
        Ответить
        • Что сложного в этой утилите?
          Ответить
          • Х.з., а кто сказал, что она сложная?

            Почитай кстати исходник /bin/true, удивишься сколько там кода. Хотя тула тупо возвращает 0.
            Ответить
            • А где смотреть оригинал исходников?
              Ответить
              • https://unix.stackexchange.com/questions/419697/why-are-true-and-false-so-large
                Ответить
                • false.c:
                  #define EXIT_STATUS EXIT_FAILURE
                  #include "true.c"


                  Какой багор )))
                  Ответить
                  • показать все, что скрытоvanished
                    Ответить
                    • статический полиморфизм
                      Ответить
                      • Плохо, что родитель знает о потомке.

                        Должно быть так:
                        // Default value is "ExitSuccess", to be overridden by inheritors
                        #ifndef EXIT_STATUS_STRATEGY_IMPL
                        # define EXIT_STATUS_STRATEGY_IMPL EXIT_SUCCESS
                        #endif
                        Ответить
                        • #ifndef EXIT_STATUS
                          # error "Pure virtual macro call
                          #endif

                          И пусть каждая реализация себе дефайнит. А то нетолерантно как-то.
                          Ответить
                        • там же сишник писал
                          ваши ожидания завышены

                          впрочем можно ведь PR заслать
                          Ответить
                  • true.c:

                    #define EXIT_STATUS EXIT_SUCCESS
                    #include "false.c"
                    Ответить
                    • А так нельзя?

                      #include !"false.c"
                      Ответить
                      • Нет. Зато можно return !NULL
                        Ответить
                        • Not Unsigned Long Long
                          Ответить
                          • long short x;
                            short long y;

                            Что длинее?
                            Ответить
                            • Вообще я думаю, что длиннее всего изумрудный хуй.

                              Но так же в няшной нельзя, я надеюсь, как ты написал?
                              Ответить
                              • Нельзя. Даже long long long is too long for gcc.
                                Ответить
                                • Is short short too short for gcc?
                                  Ответить
                                  • 1 - short short
                                    2 - short
                                    3 - long short
                                    4 - long
                                    5 - short short long long
                                    6 - short long long
                                    7 - long short long long
                                    8 - long long

                                    Какой потенциал проебали )))
                                    Ответить
                                    • Всегда удивлялся "пасхалкам" типа too long.

                                      Ну ладно там deadbeef или zloebu4, вставили константу или комментарий, это 10 секунд.

                                      Но тут-то надо было написать обработку спецситуации на уровне чего-то там? аст, парсера?
                                      Ответить
                                    • Внешне в описании типа несколько слов, разделённых пробелами, кажутся модификаторами. Кажется, что с помощью модификаторов можно гибко описать произвольный тип. А потом оказывается, что кобенация «long long», а также кобенации «long», «short» , «long long» с «unsigned» или с «signed» и с «int» захардкожены и других кобенаций не предвидится (ну ещё «long double» есть). Тупо синтаксический хак.
                                      Ответить
                                    • нахуй это всё после 1999-го года тащемто?
                                      Ответить
                        • Это чо, ещё и stddef.h инклюдить?
                          Ответить
                • https://github.com/wertarbyte/coreutils/blob/master/src/true.c
                  Ответить
            • Она ещё и локализована :3
              $ /bin/true --help
              Выкарыстаньне: /bin/true [довады загаднага радка ігнаруюцца]
                альбо:  /bin/true ПАРАМЭТАР
              Exit with a status code indicating success.
              
                    --help     паказвае гэтую даведку
                    --version  выводзіць зьвесткі пра вэрсію
              
              ЗАЎВАГА! Ваш інтэрпрэтатар загадаў можа мець уласную вэрсію true, якая,
              звычайна, замяняе вэрсію, што апісана тутака. Калі ласка,  зьвярніцеся да
              дакумэнтацыі вашага інтэрпрэтатара загадаў, каб даведацца аб парамэтрах,
              якія ён падтрымлівае.
              
              GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
              Report true translation bugs to <http://translationproject.org/team/>
              Full documentation at: <http://www.gnu.org/software/coreutils/true>
              or available locally via: info '(coreutils) true invocation'
              Ответить
            • Оверинжиниринг. Обработка параметров командной строки, чтобы показать хелп, хелп может быть локализован (это ещё «gettext» или как там тащить). Давайте ещё до кучи «ICU» статически влинкуйте!

              Параметр командной строки, показывающий версию — зачем? Зачем? Что там можно добавить в новой версии? Или это чисто для «autotools», чочобы скрипт «./configure» мог что-нибудь вытащить?

              Не проще полностью выпилить хелп, а кому нужно, тот через «man» посмотрит?
              Ответить
              • Приведи реальный пример использования true или false.
                Ответить
                • while true; do
                      # ...
                  done
                  
                  supress_this_error_with_set_e || true


                  Про "false" кроме генерированых говноскриптов ничего на ум не приходит
                  Ответить
                  • Но ведь true один раз загружается в память? По скорости это примерно как вызов напрямую main(1, {"true"}), и похуй какого размера бинарник?
                    Ответить
                    • Он на каждой итерации цикла будет загружаться и выгружаться.
                      Ответить
                      • Какой анскилл )))
                        Ответить
                        • «Баш»Интерпретатор скрипта же не знает, что он каждый раз возвращает одно и то же значение. Интерпретатор будет на каждой итерации заново запускать «/bin/true» в надежде, что эта программа вернёт новое значение.
                          Ответить
                        • В линуксе это не так страшно, кстати. Процессы очень быстро поднимаются.

                          А вот для всяких cygwin/mingw под вендой это полная жопа. У винды процессы очень дорогие. И все эти скрипты там дико тормозят.

                          З.Ы. К слову, именно поэтому сторонники винды всегда топят за треды.
                          Ответить
                    • Он вообще не загружается. Вся эта мелочь обычно заинлайнена в интерпретатор. А бинари для совместимости с чем-то древним (оригинальный sh?).
                      Ответить
                      • Конкретно в «баше» — да. Там ещё [ и [[ заинлайнены в интерпретатор, а для совместимости с говном мамонта есть бинари /bin/[ и /bin/[[.

                        Но мы вроде рассматривали теоретический случай, когда /bin/true может кому-то пригодиться.
                        Ответить
                      • Я так и знал, что икарус меня наебал.
                        Ответить
      • Ну кстати с этими минусами в именах куча уязвимостей в говноскриптах... Криво позовёшь tar - получишь запуск произвольного кода.
        Ответить

    Добавить комментарий