Можно ли написать скрипт в телефоне
Скрипты на shell под Android
В теме нет куратора. Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).
До назначения куратора, по вопросам наполнения шапки, обращайтесь к модераторам раздела через кнопку 
Для начала перетащу своё сообщение из темы Таскера для лучшего понимания вопроса, о чём речь, и как можно применить.
# помощь урок таскер tasker пример шелл shell перехват аппаратных кнопок
Описание примера Работа shell-скрипта для перехвата аппаратных кнопок телефона.
Вообще, текста будет много, потому что я болтун..
Приступим к делу. Вот результирующий пример, и сразу напишу, что он делает, а потом разбор:
Итак, эта строчка (это ОДНА строчка) запущенная в терминале, или через Задачу Таскера «Run script» запускается в память (и висит там! терминал можно закрывать) и делает следующее: Она отслеживает нажатие аппаратной кнопки Громкость Вниз (думаю на большинстве Xperia заработает тоже, официально отлажено под Xperia Ray) при выключенном экране, и включает (и выключает) фонарик.
Вообще, получается красиво: нажимаешь качельку громкости и МГНОВЕННО включается фонарь, а экран при этом остаётся выключенным.
Отладка скрипта, это собственно 99.9 процента всего времени, потраченного на, поэтому гораздо удобнее «общение» будет проводить в проводном или беспроводном adb. Вертеть варианты отладки через терминал телефона утомительно. (а отладки будет много).
Часть 1. Перехват. Теория.
Итак, перехват. Подглядывать за нажатиями кнопок мы будем программой (консольной текстовой программой) «ПолучитьСобытие», getevent. Можно просто набрать (с рут правами) в терминале имя команды и завороженно смотреть на бегущие строки))
# getevent
Да, вот такие пачки на каждое действие!
0004 0004 00000004
0001 0072 00000001
0000 0000 00000000
0004 0004 0000000c
0000 0000 00000000
0004 0004 00000014
0000 0000 00000000
0004 0004 0000001c
0000 0000 00000000
0004 0004 00000024
0000 0000 00000000
0004 0004 00000024
0000 0000 00000000
0004 0004 00000004
0001 0072 00000000
0000 0000 00000000
0004 0004 0000000c
0000 0000 00000000
0004 0004 00000014
0000 0000 00000000
0004 0004 0000001c
0000 0000 00000000
Понажимав все свои три кнопки)) я пришёл к выводу о достаточности в моём частном случае ловли кода ‘0004 0004 00000004’, правда он случается и в нажатии и в отжатии, но это мы поймаем и учтём.
Итак, я выбрал для ловли кнопки Громкость Вниз код всего лишь одной строки ‘0004 0004 00000004’, который уникален в пределах устройства pm8058-keypad (/dev/input/event1).
Дальше в дело вступает команда read в замесе с командой while, в таком виде:
формализованно: «ввод_данных | while read var1; do [наша построчная обработка] ; done»
Всё, что идёт за знаком «точка с запятой» (semicolon, так сказать) после команды read, это есть команды обработки результата «распихивания» _каждой_ строки с кодами, прилетающей от getevent.
Локальный вывод: То есть, заказали мы прерывания от устройства event1, аппаратных кнопок, и всё, всё «висит» и бездействует. Система спит. Нажатие кнопки (любой) пробуждает систему (она отрабатывает сама) и присылает в getevent пачку строк с произошедшими событием. Мы раскидываем полученные строки с помощью while read на составляющие и уходим на дальнейшую обработку каждой строки отдельно, сравнивая, наша ли эта, искомая, строка, или нет. И потом запускаем боевую нагрузку, выполняем какое-то действие (включаем фонарик, как я, или вызываем сразу задачу таскера). (В принципе, вот всё решение). Но, об этом всём в своё время, ниже, а пока меня ждала целая серия засад:
Часть 2. Workarounds. Первое столкновение с практикой.
Часть 3. Фонарик. Долгая дорога в дюнах.
Ииии.. я запилил. Полный скрипт вы видели уже в начале. Ой, нет, это еще не всё)))
Часть 4. Последняя засада
Теперь всё заработало.
Домашнее задание от username11 я так пока и не выполнил((, а оно вот:
1) выяснить, кто хочет ввода-вывода и устранить.
2) убрать лишние круглые скобки. каждые скобки, это лишний шелл запущенный каскадом.
Такскера тут вообще нет, как вы видите. Справившись с половиной этого дела, отсутствие таскера было уже делом принцпа)) зачем? когда всё «шелльно» и легко. А огромная дурильня-таскер испортит всю красоту. Да и для чего? Мигнуть фонариком?
Bash-скриптинг на устройствах под управлением ОС Android: первые шаги
Программирование для смартфонов
Все мы (ну или почти все) когда-то пользовались смартфонами под управлением ОС Symbian. Многим из нас не хватало функционала уже существующего ПО, и тогда на смартфоне появлялся Python и множество самописных программ на нём же. Такие программы назывались скриптами, а написать скрипт мог любой желающий, вооружившись одним лишь текстовым редактором.
Теперь же многие из нас обзавелись смартфонами, управляемыми ОС Android, которая, как известно, создана на базе ядра Linux.
А одной из отличительных особенностей GNU/Linux является bash — одна из наиболее популярных современных разновидностей командной оболочки UNIX.
Итак, весь необходимый софт установлен. Запустив эмулятор терминала, попробуем выполнить какую-нибудь команду, например, посмотрим информацию о системе:
Особой пользы нам эта команда не принесла, попробуем выполнить что-нибудь более полезное.
Наверное, сейчас нам пригодится новый пароль из, допустим, 30 случайно взятых символов (букв, цифр и знаков препинания):

Как вы уже догадались, довольно неудобно каждый раз вводить в терминале такую команду. Поэтому, чуть-чуть изменив текст, мы создадим скрипт, который генерирует пароль указанной пользователем длины и НВПС сохраняет его в текстовый файл:

Скрипт написан и сохранён. Пытаемся его выполнить, но результат не радует:
А всё потому, что у нас карта памяти отформатирована в файловой системе FAT. (Есть предположение, что на носителе с файловой системой ext4 всё заработает искаропки). Посему кладём наш скрипт в
, не забыв после этого разрешить системе его выполнение командой
или с помощью вашего любимого файл-менеджера.
Запускаем скрипт:

Всё работает, задача выполнена.

Вопрос-ответ
Приветствую тебя, дорогой читатель☆彡
Как ты мог заметить, здесь многие участники задают свои вопросы, да и ты сам мог интересоваться какими-то вопросами и хотеть получить на них ответ.
В этом посте я отвечу на часто задаваемые вопросы, да и просто вопросы на которые интересно ответить.
✿Что такое скрипт? Как его написать?
Скрипт — это сценарий вашего шифтинга. Там можно прописать как ты будешь выглядеть, какие у тебя отношения с другими, что будет происходить во сне и много чего другого.
Для полного ознакомления загляните сюда: «Скрипт»
Там можно найти и как его написать
✿Обязательно ли это?
Совсем нет, скрипт пишется по желанию и если вы и так всё хорошо запомните, можете не писать. Лично я иногда забывала то, что написано в скрипте и перечитывание его мне очень хорошо помогало, также он поможет лучше настроится на перемещение в жр
✿Где его писать? Можно ли менять скрипт после написания?
Писать можно где угодно, будь то заметки или простой лист бумаги. Менять скрипт можно как угодно и когда угодно.
✿Его нужно переписывать каждый раз?
Нет, просто читать каждый раз перед сном.
✿Что делать с ним после удачной попытки шифтинга?
После удачной попытки всё ещё можно читать его перед сном, можно добавить новые пункты которые вы заметили, что вам не хватает в пр
✿Можно ли добавлять свои пункты?
Конечно можно, как добавлять так и убирать
✿Что означает пр, жр, кп, нр?
Это сокращения слов:
Методы — последовательность действий, которые нужно выполнить, чтобы попасть в пр
Методов есть очень много. В нашем сообществе их тоже можно найти, для этого на главной есть отдельная страница с методами
✿Можно ли объединять методы или придумывать свои?
Конечно можно, и первое и второе
✿Обязательно спать на спине?
Только если это указано в методе, если там ничего об этом не сказано, то можно в любой позе
✿Какой метод работает лучше всех?
Нет такого, который работал бы у всех, для каждого это по разному, поэтому нужно пробовать и пробовать, пока не найдёшь свой
✿Что делать если в методе рейвен досчитал до 100 и не уснул?
Попробуй позже или начни сначала
✿Что делать когда появились признаки что шифтинг получается, а ты ещё не досчитал до 100?
Как только появляться симптомы шифтинга, переставайте считать и сконцентрируйтесь на визуализации жр
✿Как понять, что шифтинг получается?
Здесь можно прочитать о симптомах шифтинга
✿Можете дать какие-то советы по шифтингу?
Конечно, что да, вот пост с советами
✿Как это визуализировать?
Представлять себя в жр и всё происходящее вокруг
✿У меня проблемы с визуализацией, что делать?
Над визуализацией нужно работать, тут ты можешь найти упражнения для визуализации, улучшить её или научится визуализировать с нуля
✿Что делать если хочется сейчас, а с визуализацией плохо?
Ищи методы, где нужно мало визуализировать, хоть они и не такие действенные, но всё равно работают
✿Что будет если я умру в пр?
Ничего, ты просто проснёшься
✿Шифтинг это опасно?
Нет, это абсолютно безопасно, только нужно отдыхать от него, чтобы мозг тоже успевал отдыхать
✿Можно остаться там навсегда?
Нет, так как это сон, ты в любом случае проснёшься
✿Что делать, если забыл стоп слово?
Есть 2 варианта: подождать пока не проснёшься сам или очень сильно захотеть проснутся
✿Можно ли зашифтиться вместе с другом?
К сожалению нельзя, ты можешь добавить друга в свой сон как персонажа, но это не будет он, он будет таким же как другие персонажами
✿Можно ли выучить математику в шифтинге?
Опять же, к сожалению, нет. Ты не можешь узнать во сне то, чего не знал в жизни. Это касается и других знаний. Всё что ты можешь сделать, это с помощью сна вспомнить то, что давно забыл, поверь, это тоже очень полезно
✿Можно ли оттуда контактировать с нашим миром?
Тоже нельзя, так как это сон. Вы можете увидеть, как во сне выполняете действия с нашей реальностью, но на реальный мир это никак не повлияет и, тем более, этого не увидят другие
✿Можно спать под одеялом?
Конечно можно, оно ведь тебе не мешает
✿Можно шифтится в шуме или если в комнате есть ещё кто-то?
Можно, но только если это не мешает тебе концентрироваться, если же мешает, лучше использовать беруши или спать в наушниках с включённой музыкой из вашей вселенной, белым шумом или просто спокойной музыкой
✿Что происходит с твоим телом в реальности во время шифтинга?
Ничего особенного, оно просто спит
✿Что основное, что нужно для шифтинга?
Знание жр, уверенность в себе, терпение и вера в себя
✿Можно создать свою реальность, а не такую, которая уже существует?
Конечно можно, шифтиться можно куда угодно и, тем более, в придуманную вами вселенную
✿Насколько всё реалистично?
Всё максимально реалистично, ты видишь всё, будто в реальной жизни и всё осознаёшь
✿Может ли случится сонный паралич?
Обычно нет, только если с вами это случалось раньше и не один раз
✿Можно ли перенести что-то из того мира в наш?
Нет, ничто и никого
✿Я буду чувствовать вкусы, слышать персонажей и чувствовать запахи?
Да, всё будет как в реальной жизни и это очень круто
✿Можно совмещать вселенные?
✿У меня были симптомы, но не получилось, что делать?
Пробовать снова и снова, учиться шифтить, это длительный процесс, так что нужно не сдаваться и продолжать
✿Что делать если я не могу уснуть?
Ложится позже, выпить перед сном успокаивающий чай или съесть ложечку мёда
✿Можно ли шифтить днём?
Да, шифтить можно когда угодно, но тогда нужно использовать маску для сна и убедится, что вам никто не будет мешать
На этом пока всё, но все мы понимаем, что это лишь малая часть вопросов, поэтому предлагаю сделать продолжение из вопросов, которые вы зададите в комментариях.
Скрипт
Приветствую тебя снова. Сегодня я хочу рассказать о такой вещи как скрипт. Разберёмся что это такое и как его написать.
Скрипт — это своего рода сценарий вашего шифтинга. Здесь вы можете указывать всё, что хотите увидеть в желаемой вселенной, также правила вселенной, дополнительные пункты или внешность
Он пишется на листочке или в заметках и читается перед погружением в сон.
Пишется он по желанию и является отличной помощью.
Его вы можете описывать как удобно вам, но здесь я предложу вам что-то по типу шаблона, чтобы вам было легче. Даже если вы используете данный шаблон, можете добавлять в него всё, что хотите, включая фотографии.
(Лично я указывала только имя)
(Имеется в виду человек, эльф, дракон и тому подобное)
(Можно указывать как и какой человек вас называет)
(Если вы хотите видеть именно свои черты характера, описывайте их, не пропускайте этот пункт)
Пример: цвет волос/длина/форма лица/нос/губы/телосложение/параметры/размер обуви итд.
(Лично я не прописывала внешность, так как использовала именно свою)
здесь можно описать не только способности по типу телекинез или исцеление, а также ваши личные реальные способности.
как реальные так и выдуманные
>Язык на котором говорите вы и другие:
Невозможно описать здесь всё, но если вам нужно, смело добавляйте пункты
Отношения с другими персонажами:
>Человек в которого вы влюблены:
>Человек который влюблён в вас:
>Причина ссоры с другим человеком:
(Если вы изначально хотите быть с кем-то в ссоре)
Можете описать здесь помните ли вы своё прошлое, к примеру я прописала, что не помню, так как по самому сюжету никто не помнит своего прошлого.
>Где именно вы появитесь:
вас может и никто не встречать
>Звуки которые должны быть рядом:
Часто именно по этим пунктам можно понять что ты попадаешь во вселенную.
>На каком моменте попадаете:
если вы хотите попасть в какой-то фильм или книгу, можете описать на каком моменте вы туда попали и что там сейчас происходит.
так можно попасть в прошлое или будущее
Можно описать конкретные ситуации которые будут там происходить, но лично я просто визуализировала их.
На них стоит обратить особенное внимание!!
>Можете ли вы чувствовать боль:
>Можете ли умереть вы или другие персонажи:
>Запоминают ли вас персонажи когда вы уходите:
>Останавливается ли время когда вы уходите:
например 1 час в реальном времени = 1 день в другой вселенной
это слово, сказав которое вы вернётесь в реальную жизнь
Лучше выбрать такое слово, которое вы точно не будете использовать просто так.
Вам не нужно учить скрипт на память, его просто нужно прочесть перед сном. Он поможет вам визуализировать желаемую вселенную и ваше нахождение в ней. Люди делились опытом о том, что забыли указать, что не чувствуют боль и им пришлось почувствовать ужасную боль по сюжету, так что будьте внимательными ко всем пунктам.
Shell-скриптинг в среде Android
Содержание статьи
Android основан на ядре Linux, включает в себя набор стандартных UNIX-команд и простой шелл sh. Все это значит, что мы можем не только использовать командную строку для выполнения низкоуровневых операций, но и писать шелл-скрипты, которые будут выполнять функции, недоступные из графического интерфейса. В этой статье мы поговорим о том, что с их помощью можно сделать и зачем все это нужно.
Для прошлого номера журнала я написал статью о Tasker — системе, которая позволяет автоматизировать работу Android и заменить сотни сторонних приложений. К сожалению, Tasker ограничен высокоуровневыми функциями Android и не позволяет выполнять такие низкоуровневые операции, как монтирование файловых систем, изменение параметров ядра, системных переменных или запуск демонов. Зато все это можно сделать с помощью скриптов.
Сразу оговорюсь, что в этой статье речь пойдет о шелл-скриптах в традиционном для Linux понимании, без использования инструментов вроде SL4A, QPython или Roboto. Главное назначение таких скриптов — изменение поведения системы, параметров ядра, работа с демонами (ADB, например) и тому подобное. Скрипты могут стартовать на этапе загрузки ОС, установки новой прошивки, после тапа по кнопке или же по традиции — из терминала.
В статье я расскажу, как писать такие скрипты, как заставить их стартовать автоматически, привязывать к определенному системному событию. В качестве бонуса также объясню, как заставить консоль восстановления (recovery) выполнить необходимые тебе действия перед установкой или сразу после установки новой прошивки. Начинаем.
Особенности Android-окружения
В самой своей основе, там, где нет Java и Dalvik, Android представляет собой минималистичный Linux-дистрибутив со всеми свойственными ему атрибутами: ядром, системой инициализации, набором библиотек, демонов, консольных команд и, конечно же, шеллом. Последний — это не что иное, как mksh из MirBSD, переименованный в sh; простой командный интерпретатор с поддержкой языковых конструкций классического Bourne shell из UNIX и автодополнением по нажатию Tab.
В качестве комплекта базовых UNIX-команд здесь используется toolbox, своего рода урезанная альтернатива BusyBox, которая позволяет вызывать несколько разных команд из одного бинарника (с помощью симлинков). Toolbox включает в себя очень ограниченный набор команд, в котором нет не только grep или sort, но даже cp. Поэтому для полноценной работы со скриптами настоятельно рекомендуется установка BusyBox, благо в маркете полно бесплатных инсталляторов.
Основное назначение скриптинга в Android — работа с ядром и системными утилитами. Ядро тут стандартное и экспортирует все те же интерфейсы /proc и /sys, через которые можно рулить железом и состоянием системы. Плюс есть набор специфичных для Android утилит, которые будут очень полезны при разработке скриптов:
Хакер #185. Докажи баг!
Первый пример
Теперь давайте попробуем написать первый скрипт. Делать это лучше на компе, а еще лучше в Linux или редакторе, который умеет создавать текстовые файлы без символа возврата каретки (который при открытии в Android будет выглядеть как ^M в конце каждой строки). Наш первый скрипт будет состоять всего из двух строк, которые делают бэкап всех установленных приложений на карту памяти. Его код (требует BusyBox):
Сохраняем (пусть он называется apk_backup.sh) и перекидываем на смартфон с помощью ADB:
Теперь его нужно запустить. Проще всего сделать это с помощью все того же ADB:
Примерно таким же образом скрипт можно запустить из консоли на самом смартфоне/планшете:
Само собой, такой способ не очень удобен. Поэтому нам нужен какой-то быстрый способ запуска скрипта. Наиболее удобное из найденных мной решений — это приложение QuickTerminal. Устанавливаем, запускаем, переходим на вкладку Quick Command, нажимаем кнопку «+», вбиваем имя (произвольное) и команду (sh /sdcard/apk_backup.sh), в поле Output Type выбираем либо Dialog Output, либо Nothing. В первом случае во время выполнения скрипта на экране появится окно с результатом, во втором все пройдет в фоне. Кому что удобнее. Далее сохраняем и получаем кнопку, с помощью которой скрипт можно будет запустить быстро и легко.
Теперь напишем скрипт, который восстановит наш бэкап:

Имея рут, можно даже сделать бэкап настроек всех приложений с помощью копирования и архивации каталога /data/data/, однако восстановить его будет очень проблематично, так как в Android каждое приложение исполняется от имени созданного специально для него Linux-юзера и хранит настройки внутри каталога, принадлежащего этому пользователю. Проблема здесь в том, что идентификатор Linux-юзера для каждого приложения генерируется динамически, поэтому после восстановления бэкапа в заново установленной системе идентификаторы не будут совпадать и приложения не смогут прочитать свои настройки. Придется вручную выяснять ID юзера для каждого приложения и менять права доступа на каталоги с данными.
С другой стороны, мы можем использовать встроенный в Android Backup Manager, позволяющий сторонним приложениям использовать возможности системы для бэкапа и восстановления приложений и их данных. Управлять им можно из консоли (а значит, и с помощью скриптов), но сам по себе он никакого бэкапа не производит, а возлагает эту работу на сторонние приложения. Helium — одно из таких приложений. Если установить и настроить его, операцию бэкапа и восстановления можно будет заскриптовать. Например, следующий простой скрипт сделает резервную копию всех сторонних приложений:
Автозапуск
Другой популярный способ автозапуска — это использование средств автоматического исполнения скриптов при загрузке в сторонних прошивках. Сегодня почти все сколько-нибудь известные кастомные прошивки умеют стартовать скрипты из каталога /system/etc/init.d/, а в стоке такую функциональность можно получить с помощью приложения Universal init.d из маркета. С последним, однако, надо быть осторожным, так как оно запускает скрипты не на раннем этапе загрузки, как это происходит в том же CyanogenMod, а уже после полной загрузки системы.
Итак, что мы можем поместить в автозагрузку? Например, скрипт запуска демона ADB в сетевом режиме:
Для подключения к нему с ПК набираем такую команду:
Также мы можем применить некоторые оптимизации подсистемы виртуальной памяти:
Ну или подогнать механизм lowmemorykiller (автоматическое убийство фоновых приложений при нехватке памяти) под наши нужды:
Ну и конечно же, автоматический выбор планировщика процессов:
Все это можно сделать с помощью специализированного софта, но зачем загружать систему дополнительным ПО, которое еще и будет висеть в фоне, когда можно обойтись несколькими простыми скриптами?

Запуск скриптов до и после установки прошивки
Почти каждый, кто устанавливает на свой гаджет стороннюю прошивку, также ставит поверх нее пакет с фирменными приложениями Google (gapps), который включает в себя маркет, YouTube, Gmail и другой софт. Каждый раз, когда происходит обновление прошивки, раздел /system, содержащий ее и gapps, полностью стирается, но приложения Google всегда остаются на месте. Это происходит потому, что, кроме всего прочего, gapps содержит в своем составе специальный скрипт, который размещается в каталоге /system/addon.d/ и запускается консолью восстановления до и после установки прошивки. Этот скрипт делает бэкап и восстановление приложений Google.
Мы можем использовать эту возможность для выполнения наших собственных действий до и после установки прошивки. Вот так, например, выглядит мой скрипт восстановления, который ничего не бэкапит, но подчищает прошивку от мусора сразу после ее установки:
Скрипт удаляет рингтоны, уведомления, движок синтеза речи и несколько приложений. Все эти действия запускаются в ответ на передачу скрипту опции командной строки restore (это делает консоль восстановления после установки прошивки), однако также предусмотрены и варианты обработки таких опций, как backup, pre-backup, post-backup, pre-restore и post-restore. Здесь это просто заглушки, но если бы мы захотели сделать бэкап некоторых файлов и приложений перед установкой прошивки, мы могли бы добавить их в блок backup, как это сделано в скрипте /system/addon.d/70-gapps.sh:
Этот кусок скрипта прекрасно иллюстрирует, как сделать бэкап файлов. Ключевые элементы здесь: функция listfiles, которая при запуске выводит листинг файлов, и функция backupfile, которая является частью консоли восстановления (определена в файле /tmp/backuptool.functions). Она делает бэкап файлов в цикле.


По словам разработчика mksh, изначально пользовательские версии Android-смартфонов вообще не должны были иметь в своем составе шелл, но после выпуска смартфона для разработчиков HTC (T-Mobile) G1 он фактически стал стандартной частью системы.
Версии Android 2.3 и ниже вместо mksh использовали минималистичный шелл ash, который входит в базовый комплект всех BSD-систем.
Чтобы получить одни и те же скрипты на всех устройствах, можно использовать приложение DropSync или FolderSync (автоматическая синхронизация через Dropbox).
Что еще?
С помощью скриптов в Android можно сделать намного больше, чем бэкапы и настройка параметров системы. Вот, например, скрипт, который просыпается каждые десять минут и, если уровень заряда батареи стал меньше 30%, отключает Wi-Fi и Bluetooth:
Чтобы скрипт работал в фоне, достаточно вызвать его следующим образом:
А это скрипт, который позволяет быстро заполнять формы, требующие ввода имэйла и пароля (в приложениях и на веб-сайтах):
Запускать его можно разными способами. Либо перед запуском приложения, установив задержку:
Не ахти как удобно, зато работает. Как мы можем использовать такую функциональность? Например, сделать простенький скрипт clip.sh:
Или просто открыть окно номеронабирателя с нужным номером:
Примерно таким же образом можно отправить SMS:
Скрипт принимает два аргумента: номер телефона и содержимое SMS. После запуска он откроет окно SMS-приложения, вставит в него нужный текст, а затем нажмет кнопку Enter для отправки, после чего окно закроется.
Другие полезные при скриптинге команды:
Вместо выводов
Для кого-то все описанное в статье может показаться несколько надуманным. Дескать, все это можно сделать с помощью стандартного софта и Tasker. Но зачем использовать тяжелый Java-софт там, где нужное действие можно выполнить с помощью простенького скрипта, который не занимает лишней памяти и может быть легко перенесен на другое устройство? Скрипты удобны, просты, быстро отрабатывают и дают возможность тонкой настройки под себя.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.










