motofan logo
26 страниц V « < 3 4 5 6 7 > »         
> 

Написание скриптов #!/bin/sh for UNIX, Кто поможет?

VINRARUS
сообщение 17.6.2011, 17:56 Закрепленное сообщение!


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Ура! В теме появилася шапочка. watsup.gif
В даной теме помогаем друг другу в написании шелл скриптов, и дружно решаем проблемы связанные с ними smile.gif

Вот мои рукописные мануалы для совсем новичков:
Основы. Синтаксис, кавычки, переменные, условные операторы
Розширенная инфа о if

Подробный мануал с примерами по ВСЕМ функциям SH
Портативная версия еще одного мануала
Книги в формате Djvu

Примеры работы с текстом через sed и мануал PRO и мануал NUB
Примеры работы с текстом через awk и мануал
Обрезка текста внутри переменных - чорт ногу сломит =] О логике шаблонов.

Где быстро найти инфу?
Тут вводите в строчку поиска манов любую утилиту, например echo, и 95% вероятности что получите инфу по всем функциям и ключам
Вот инфа по НЕКОТОРЫМ утилитам, также можна пользоваться поиском

ПС

1. Не во всех UNIX\LINUX системах можно сразу в терминале вводить команды утилит.
Например в MOTOMAGX часто перед командой утилиты нужно вводить "busybox" (например busybox free) хотя это и решено на некоторых модах.
А в некоторых выкидышах типа Android они и вовсе отсутствуют как и сам busybox, но есть возможность добавить его самому.

2. Не всегда утилиты поддерживают то что написано в манах к ним, иногда функционал меняется от версии к версии.

3. Также нужно знать что код от bash иногда может не работать корректно на shell (sh), хотя и очень редко.
Это из за того что древним программистам делать было нечего, когда не было еще интернета, и они понапридумывали кучу модификаций.
Хорошо хоть код под чистый shell подойдет ко всем им, из за чего он считается эталоном. smile.gif
А не bash как считают юные линуксойды.
[close]


Сообщение отредактировал VINRARUS - 12.12.2020, 21:32
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 13.7.2011, 13:17


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



а не на php парсеры есть ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Pyth_ON!
сообщение 13.7.2011, 16:08


MOTOMAGXX0r
****

Группа: Пользователи
Сообщений: 166
Регистрация: 29.4.2009
Пользователь №: 198 680
Модель телефона: ROKR EM30/PEARL VE66
Прошивка: R6716_G_71.01.02R_B

Рейтинг: 48



Цитата(Osta @ 13.7.2011, 13:17) *

а не на php парсеры есть ?

Могу собрать минимальный бинарик php... smile.gif
А так можно переписать с использованием sed и grep...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 13.7.2011, 16:55


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Цитата(Pyth_ON! @ Сегодня, 19:08)
* можно переписать с использованием sed и grep

и кто бы показал Так Было - Так Стало )? интересует случайная цитата башорга
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 18.7.2011, 11:06


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Вот нашол способ быстрее считывать параметры с конфигов! Правда поздновато я ето надумал, но в сеже может комуто пригодиться. wink.gif
Так ето делалося:
Код
ET=`sed -n -e '/^swapT = /p' $CFGPATH | awk '{print $3}'`

А вот мой вариант:
Код
ET=`sed -e '/^swapT = /!d' -e 's/^swapT = //' $CFGPATH`


Вот напишу принцып работы для тех кому ето интересно. smile.gif Преимущества 2го варианта в скорости выполнения. Путем отсутствия конвеера (конвеер-ето строчка с набором разных команд которые выполняються по очереди и раздиляються отакой палкой "|"). И если раньше одна програма искала строчку с параметром, а вторая удаляла название параметра, то щас только одна програма ето делает, по етому затраченое время на нее меньше.
Ну канечно если скрипт читает 1-2 параметра, то прироста от скорости не густо, но если их например 20 шт, то и разница будет гдето секунд 5-7.
Например так можно ускорить загрузку всего мода минимум на 5 сек.

Сообщение отредактировал VINRARUS - 4.11.2017, 19:24
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
igoripp
сообщение 19.7.2011, 16:48


Самый дерзкий
******

Группа: Пользователи
Сообщений: 1 412
Регистрация: 27.3.2010
Из: Касимов, Муром
Пользователь №: 215 540
Модель телефона: sony ion
Прошивка: Разные

Рейтинг: 1335.5



Знающие люди, подскажите. sh поддерживается всеми системами UNIX. Если применять bash, то он 100 процентов подойдет для использования на телефоне е8? Файл bash у нас есть по адресу /bin/bash, но слышал что bash постоянно обновляется, И отсюда этот вопрос. Или считаете, что лучше не выпендриваться и знать sh?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 19.7.2011, 18:29


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Я за sh, так как он поддерживаеться гарантировано везде где наследил линукс.
Ну и он проще и понятнее за bash.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 26.7.2011, 12:34


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



Код
Name=`date +%H:%M@%d%a-`


как правильно прописать, чтобы вместо @ был пробел ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 26.7.2011, 14:23


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Разделив 1 команду на 2:
Код
Name="`date +%H:%M` `date +%d%a-`"

или взяв в лапки:
Код
Name=`date '+%H:%M %d%a-'`


Сообщение отредактировал VINRARUS - 4.11.2017, 19:30
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Osta
сообщение 26.7.2011, 16:05


Freestyler
********

Группа: Легенды MotoFan.Ru
Сообщений: 10 329
Регистрация: 20.7.2004
Пользователь №: 8 235
Модель телефона: Moto
Прошивка: *#9999#


Настроение:
Все невыспавшиеся в следующей жизни будут котами



Рейтинг: 4362



VINRARUS, спасибо, работает !

А можно это переложить на sh ?

Spoiler:


_http://bash.org.ru/random - по этой ссылке уже выдаются случайные цитаты, что для нас очень удобно! Пишем такой код:

Код
$borgs=file_get_contents( "http://bash.org.ru/random" );
preg_match( '/<div>(.*?)<\/div>/is', $borgs, $borg );
$simchm2 = array("<br />", "<br>");
$borg=str_replace($simchm2,"\n", $borg);
$borg=htmlspecialchars_decode ($borg[1]);
echo($borg);


Это рабочий код -, мы украли цитату smile.gif Теперь давайте разбирать всё по очереди wink.gif "$borgs=file_get_contents( "http://bash.org.ru/random" );" - мы выкачиваем исходный код страницы и записываем его в переменную. После этого мы режем первый попавшийся код на этой странице, который находится в скобках заданных нами "preg_match( '/<div>(.*?)<\/div>/is', $borgs, $borg );"
"$simchm2 = array("<br />", "<br>");" - здесь мы делаем массив, где режем html-теги (массив для того, чтобы не писать одну и ту же строку много раз...)
Далее нам нужно заменить html-теги на нужный нам формат (который работает в аське/блокноте и т. д.) "$borg=str_replace($simchm2,"\n", $borg);" - этой строкой мы и заменяем... После чего заменяем html-пробелы, двоеточия и т. д. на нормальный человеческий вид (если Вам по аське придёт html-тег, вы навряд ли поймёте, что это: запятая или пробел... =) ) В php уже за нас сделали удобную функцию, котороя это делает: "$borg=htmlspecialchars_decode ($borg[1]);" "$borg[1]" - потому что у нас в массиве есть 2 вида, один не полностью обрезан, второй обрезан...
Ну и естественно, нам надо вывести то, что получили, посмотреть - как да что =) : "echo($borg);" Всё =) Да, и ещё: если Вы будете выводить на сайте (через браузер), то Вам хватит:

Код
$borgs=file_get_contents( "http://bash.org.ru/random" );
preg_match( '/
(.*?)<\/div>/is', $borgs, $borg ); echo($borg);


Поздравляю, у нас есть случайная цитата с http://bash.org.ru!

[close]
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
VINRARUS
сообщение 26.7.2011, 17:55


Куратор темы

Термоядерный
********

Группа: Пользователи
Сообщений: 3 496
Регистрация: 12.12.2009
Из: Чорнобиль
Пользователь №: 211 044

Рейтинг: 1211



Тут очень глубокие знания нада, да еще и не только в sh.


Сообщение отредактировал VINRARUS - 26.7.2011, 17:57
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Написание скриптов #!/bin/sh for UNIX, Кто поможет? · Motorola на Linux OS · Forum
 

26 страниц V « < 3 4 5 6 7 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.4.2024, 17:47

Форум живёт: