Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Открыть новую тему     Написать ответ в эту тему

digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи вопрошающие! Если ваша система отлична от ГНУ, и в то же время вы желаете обойтись только дефолтными средствами, указывайте и то и другое сразу, пожалуйста.


UNIX Shell

 
   Это глобальная тема по юниксовой командной оболочке, как по интерактивной работе в командной строке, так и по шелл-скриптам. Ключевые слова: sh, bash, zsh, tcsh, busybox, readline, coreutils, cp, mv, ln, rm, ls, readlink, mkdir, touch, stat, date, test, sleep, chown, chmod, chattr, dd, df, du, env, echo, cat, less, man, grep, sort, findutils, find, locate, xargs, md5sum, cmp, diff, patch, ps, kill, killall, tar, gzip, bzip2, xz, mount, fdisk, parted, mkfs, fsck, e2fsprogs, mtools, ss, netcat, netstat, rsync, ssh, scp, sftp, lftp, ncftp, time, strace.
   Неинтерактивная обработка текста (sed, awk, perl) пока тоже здесь.
   Смотри в других ветках: wget, convert, montage, mogrify и др., gs, git, 7z, p7zip, soffice, mplayer, mencoder, vlc, vim, mc, mcedit, kioclient.
 
 

Hint! Русские маны (подустаревшие, не всегда полные и не всегда для вашей системы) можно попытаться найти на Опеннете, к примеру: bash, tar, grep.

 
Готовые решения:
  • commandlinefu.com
    Крупнейшая база полезных однострочников на командной оболочке с ранжированием на основе пользовательского голосования.
     
  • shell-fu.org
    Аналогично, но поменьше и формат записей более свободный, поэтому встречаются и однострочники, и развернутые скрипты, и просто советы.
     
  • Useful one-line scripts for sed
    Почти исчерпывающий список решений для тех случаев, когда sed незаменим. Более сложные скрипты с sed.sf.net — только для тех, кто знает толк... :)

 
Учебная литература:
  • Greg’s Wiki (http://mywiki.wooledge.org)
    Наиболее обширный авторский сборник постоянно обновляющихся материалов по Башу.

    1. Bash Pitfalls
      (Частые ошибки программирования на Баше: [1], [2], [3], [4], [5] — пер. на русский по сост. на дек. 2008 г.).
      Рассмотрены преимущественно ошибки, возникающие из-за непонимания отличия шелла от «нормальных» скриптовых языков. Если вы уже владеете, например, Перлом, то это вполне может быть ваше первое руководство для ознакомления с Башем.
    2. Bash FAQ
    3. Bash Guide
    4. Bash Reference Sheet
      Шпаргалка по частым синтаксическим оборотам.

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

 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.
Первый пост темы имел вид...

Всего записей: 351 | Зарегистр. 19-04-2003 | Отправлено: 18:51 16-05-2008 | Исправлено: qw12, 09:42 24-03-2020
iKSBi



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pasha_ZZZ
Ваш вариант у меня кажется не возможен, потому как я не нахожу в NVRAM ip выданный мне через PPPoE. Хотя решение сравнивания по-моему очень интересное и действительно неизвестно какие IP Ростелеком через пол года начнёт выдавать в качестве серых. Я до сегодняшнего дня был уверен что 100. не входит в их число.

Всего записей: 80 | Зарегистр. 30-12-2005 | Отправлено: 22:06 12-03-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
iKSBi
Я ж много раз написал, что все зависит от используемой прошивки и ее версии. На моих прошах такое значение есть, а там, где нет - можно и другие методы получения выданного ИП применить, благо их тут описали даже не один.
Это ж шаблон для размышлений над ним, не более, надо только под себя поправить.

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 22:11 12-03-2016
iKSBi



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ASE_DAG
Да, так работает! Спасибо Вам еще раз!)

Всего записей: 80 | Зарегистр. 30-12-2005 | Отправлено: 22:22 12-03-2016
Damiurgent

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые! Помогите пожалуйста написать корректно скрипт для bash.
Задача такая: проверить в памяти есть ли от текущего пользователя конкретный демон в памяти и если нет, то запустить его. Буду в крон вставлять, а то вываливается сам собой. Спасибо.

Всего записей: 15 | Зарегистр. 25-08-2006 | Отправлено: 18:16 26-03-2016
mrsimpson

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть несколько миллионов ссылок формата
http://site3.com:790
http://site312.com
http://site1.com:10000
https://site3.com:443
и т.д.
 
Ищу рецепт чтобы их прочекать в несколько десятков потоков, и на выходе записать в csv результат в виде: url, http code, size, title
 
Это можно сделать огромным количеством способов, очевидно. Например, с помощью curl. А может и нет. Как, к примеру, поверять сразу в 50 потоков и записывать результаты в один файл?
Или вот есть нечто очень мощное https://github.com/urbanadventurer/whatweb/, но что-то он медленно обрабатывает список. Хотя, особо не разбирался. Кроме того, гуглятся десятки различных других утилит, хотя бы на том же Гитхабе.
 
Что мне выбрать из всего этого разнобразия? Меня интересует скорость и точность. Как к примеру это сделать с помощью того же curl?

Всего записей: 18 | Зарегистр. 10-04-2016 | Отправлено: 18:50 10-04-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mrsimpson> Как, к примеру, поверять сразу в 50 потоков и записывать результаты в один файл?
 
Пример примитивного распараллеливания безо всякого искуственного предела в 50 потоков (а он здесь, имхо, совсем не обязателен) смотрите чуть выше по ветке.  Запись из многих процессов в один файл никакой проблемы не представляет.
 
Добавлено:
Но вообще, здесь, накладные расходы будут аховые.  Если вам это не на один раз, то надо какими-то другими средствами пользоваться, а не командной оболочкой и внешними утилитами — можно программку на Перле / Питоне написать / поискать-подогнать, а можно в сторону nmap’а посмотреть.
 
И вообще, что вы в итоге делаете?  Общедоступные HTTP-прокси, что ли проверяете?

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 19:22 10-04-2016 | Исправлено: ASE_DAG, 19:24 10-04-2016
1karavan1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача: "Вернуть количество секунд с момента запуска ОС"
Есть что-нибудь более красивое/наглядное, чем нижеследующий код?

Код:
cat /proc/uptime | awk -F. '{print $1}'

Всего записей: 382 | Зарегистр. 20-11-2015 | Отправлено: 15:16 11-04-2016
mithridat1



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1karavan1
https://unix.stackexchange.com/questions/27013/displaying-seconds-as-days-hours-mins-seconds

Всего записей: 4924 | Зарегистр. 05-01-2006 | Отправлено: 17:02 11-04-2016
1karavan1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mithridat1
Там совсем другой вопрос решается: "вывод количества секунд в формате дней, часов, минут"
Мне-же необходимо получить целое количество секунд.
Надеялся увидеть ответ с одной командой и одним параметром без подтягивания awk.

Всего записей: 382 | Зарегистр. 20-11-2015 | Отправлено: 17:17 11-04-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1karavan1
Ну это вряд ли... ну 1 команда, ну 2. Можно awk заменить на grep или sed, если нужно
 
Добавлено:
хотя... grep и 1 команда:
Цитата:
grep -Eo '^[0-9]+' /proc/uptime

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 17:18 11-04-2016
1karavan1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Можно awk заменить на grep или sed, если нужно

Не суть, если нет возможности отказаться, то менять шило на мыло не вижу смысла.
Хотя, Ваш пример с grep будет лучше, он хотя-бы без конвейера.

Всего записей: 382 | Зарегистр. 20-11-2015 | Отправлено: 17:25 11-04-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1karavan1
Ну awk тяжеловесней grep с sed вместе взятых раза в 2
 
Добавлено:
Если хочется с awk - то там бесконвейерный вариант абсолютно такой же, как и у grep:
Цитата:
awk -F. '{print $1}' /proc/uptime

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 17:27 11-04-2016
1karavan1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
не спорю, мне достаточно было одного плюса Вашего примера против моего ))

Всего записей: 382 | Зарегистр. 20-11-2015 | Отправлено: 17:36 11-04-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
awk быстрее grep и sed. Особенно двух вместе взятых. Переключение контекста и буферные pipeline'ы вообще ооочень дорогие операции.
Или говоря про "тяжесть", Вы имеете ввиду размер бинарника awk?)

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6562 | Зарегистр. 28-08-2008 | Отправлено: 18:48 11-04-2016
1karavan1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd

Цитата:
Переключение контекста и буферные pipeline'ы вообще ооочень дорогие операции.

А какие есть способы сравнения утилизации ресурсов различными версиями своего кода?

Всего записей: 382 | Зарегистр. 20-11-2015 | Отправлено: 18:59 11-04-2016 | Исправлено: 1karavan1, 19:01 11-04-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1karavan1
> Есть что-нибудь более красивое/наглядное, чем нижеследующий код?
> cat /proc/uptime | awk -F. '{print $1}'
 
Не знаю, что вы называете красивым и наглядным, но оптимально это делать, разумеется, так:
 
$ IFS+='.' read uptime __ < /proc/uptime
$ echo "$uptime"
780262

 
Alukardd> awk быстрее grep и sed
 
Можно источник?
 


mrsimpson, как успехи?

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 19:07 11-04-2016 | Исправлено: ASE_DAG, 19:18 11-04-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1karavan1
Alukardd
На тормозном девайсе все 3 версии отработали по времени одинаково (разница в пределах погрешности).

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 19:29 11-04-2016
1karavan1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Измеряли через time?
Полагаю, если кусок кода слишком мал для оценки, то заворачивать его в функцию, которую дернуть тыщу раз.

Всего записей: 382 | Зарегистр. 20-11-2015 | Отправлено: 19:41 11-04-2016
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
 Можно источник?  
что бы не уходит в дебри споров или ещё хуже дебри математики и алгоритмов, скажу что это субъективное мнение.
Тем не менее разверну свой ответ, а так же доплню его тем что успед нагуглить за пару минут:
 - конечно, если задача только поиск, то grep будет быстрее и на больших объемах инфы это будет очень заметно, однако если результат надо будет как-то отформатировать переставить поля местами и т.п., то ответ уже далеко не очевиден и будет зависеть от сложности манипуляций;
 - даже с grep'ами всё не всегда одинаково и зависит от конкретной версии grep'а (в т.ч. разница между egrep, frep и т.д.);
 - awk для чистого поиска будет медленнее, хотя бы потому, что это интерпритирйемый язык;
 - что касается разницы между sed и awk, то тут скорее шило на мыло, тут много будет зависить от кривизны кода скрипта, который вы накрапаете и опыт показывает, что на sed полноценно пишут единицы, а чаще это убогие поделия, посему гипотетическое преимущество sed сходит на нет.
 
 
Итого мой личный вывод для задач, которые мне приходится решать: чистый поиск — разумеется grep. Поиск и замена, а так же сложные поиски с динамическими зависимостями — awk. Если надо найти десяток строк в многогигабайтном файле и немного из обработать, то скорее всего grep + awk будет справедливым решением.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6562 | Зарегистр. 28-08-2008 | Отправлено: 23:01 11-04-2016
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1karavan1
Да не, на раутере, скрипт 5000 раз в цикле, в начале date +%s и в конце, ну и разница между ними. В итоге пустой цикл - 30 секунд, с наполнением - 70.

Всего записей: 12375 | Зарегистр. 11-03-2002 | Отправлено: 10:00 12-04-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru