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

    0

    1. 1
    adb shell pm list packages -e|cut -d: -f2|sort|perl -ple '$="adb shell appops set $ AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore"' | bash

    Реальный пример с Х-ра.

    Запостил: nemyx, 15 Августа 2026

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

    • И не лень было. Можно было внутри одного шелла запустить и pm, и цикл с appops. И Перл тут не особо нужен.
      Ответить
    • зачем так сложно
      Ответить
      • Я бы так написал:
        adb shell 'for d in `pm list packages -e | cut -d: -f2`; do appops set $d AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore; done'

        Нормально?

        Можно было бы через xargs, но xargs в Андроиде тупой. А если запускать xargs на компе, получится говно из поста.
        Ответить
      • Автор использовал Перл только ради того, чтобы заменить символ в шоблоне на переменное значение. А поскольку Перла в его девайсе на Андроиде не оказалось, он его вызывал на компе, к которому подключен девайс, и поэтому adb shell джва раза.

        Интересно, как выглядят его команды, когда он обращается к серверу по ssh.
        Ответить
        • > нету перла
          Позорище! И это линукс???

          Толи де ло:
          https://postimg.cc/G9b984zp
          Ответить
          • слушай, а если там перл есть, то запусти пожалста
            echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

            что выдает?
            Ответить
            • Я честно пытался, но тут на клавиатуре нет вертикальной палочки...
              Ответить
          • Круто.

            Над N900 как только ни глумились. Для своего времени это был зверь.
            Ответить
          • Вспомнился N9000. В отличие от N900, на нём был не ARMv7, а 80386, и не Maemo (що маемо, то маемо), а GEOS. Народ по приколу на N9000 DOS ставил и пытался запускать досовские игрушки, но там видеорежимы оказались несовместимыми с тем, к чему мы привыкли.
            Ответить
    • Что это и для чего (безотносительно какчества кода)?

      В Андроиде по умолчанию действует автоотзыв прав доступа, если приложением не пользовались N дней (чтобы пользователь заебался снова подтверждать манифест или чесал репу, почему приложение перестало работать). Код по задумке автора должен отключить автоотзыв прав у всех установленных приложений.
      Ответить
      • Ответ от "ИИ"
        ### Разбор команды по частям:
        
        1.  **`adb shell pm list packages -e`**
            *   `adb shell`: запускает команду внутри подключенного Android-устройства.
            *   `pm list packages`: команда пакетного менеджера, которая выводит список всех установленных приложений.
            *   `-e`: флаг, который показывает только те приложения, у которых **уже выданы** какие-либо разрешения (чтобы не тратить время на пустые пакеты).
        
        2.  **`| cut -d: -f2`**
            *   Вывод первой команды выглядит так: `package:com.android.chrome`.
            *   `cut -d: -f2` обрезает строку по разделителю `:` и берет вторую часть. В итоге остается только чистое имя пакета: `com.android.chrome`.
        
        3.  **`| sort`**
            *   Сортирует список имен пакетов по алфавиту.
        
        4.  **`| perl -ple '$="adb shell appops set $ AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore"'`**
            *   Это «магия» трансформации текста. Perl берет каждое имя пакета (например, `com.android.chrome`) и подставляет его в шаблон команды.
            *   На выходе из этого этапа получается огромный список строк вида:
                `adb shell appops set com.android.chrome AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore`
                `adb shell appops set com.example.app AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore`
            *   Параметр `ignore` говорит системе: «Игнорируй правило автоматического отзыва разрешений для этого приложения».
        
        5.  **`| bash`**
            *   Принимает весь этот сгенерированный список команд и **выполняет их** одну за другой.
        
        ---
        Ответить
    • Я когда-то выписывал журнал «Х-р».
      Ответить
      • Это где к читаттелю на ты обращались?
        Ответить
        • Типа: "ты читател не читател, ты — говно!"?
          Ответить
          • А вы не учёный вы хуёный вот вы кто. И дом иметь вы право не имеете потому что вы не учёный а хуй дрисный. Таких учёных надо раскулачивать и показывать всем чтоб так вот больше не было! Вы не учёный а говно вот вы кто.
            Ответить

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