[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]
Пишете ли вы скрипты под свои нужды?
>>159293А работа считается своими нуждами или это нужда работодателя?
Джаваскрипты считаются?
>>159295Да
>>159293А то! Вот недавно случайно ухудшение качества фоточек для викимапии.
Нет нужды.А вот в конфигах ковыряюсь.
Пишу, потому что потом этот скрипт придётся снова писать или вспоминать. А так - он всегда есть и его можно вызвать одной командой.
>>159293Да.Но это все равно что спросить "бьёте ли вы молотком, когда пользуетесь им?" Чтобы компьютером пользоваться, его нужно программировать. Как-то так.
>>159293Да.
Но это все равно что спросить "бьёте ли вы молотком, когда пользуетесь им?" Чтобы компьютером пользоваться, его нужно программировать. Как-то так.
>>159430Сколько людей пользуется компьютером ни разу не прикасаясь даже к средствам, типа VBA?
>>159434Да, можно покупать швейцарский нож и пользоваться только одним лезвием. Только, если продолжать эту аналогию, компьютер - это не швейцарский нож, а 3D-принтер по стали с держателем готовых изделий. Как ты верно заметил, подавляющее большинство людей даже предустановленное лезвие не меняет, не то что там включает 3D-принтер.
>>159438Что можно в домашних условиях скриптами делать? Ну писал я один раз на вбс, чтобы майнер прятать, ну иногда в играх клавиатурными макросами играю. Но у меня нет ежедневных настолько рутинных операций, чтобы можно было их заскриптовать.
>>159430>"бьёте ли вы молотком, когда пользуетесь им?" Ошибка. Правильно: "Делаете ли вы молоток каждый раз когда хотите ударить им"
>>159430
>"бьёте ли вы молотком, когда пользуетесь им?"
Ошибка. Правильно: "Делаете ли вы молоток каждый раз когда хотите ударить им"
>>159443Нет, неправильно. Просто молоток - слишком простой инструмент, поэтому и аналогия получилась совсем уж для дебилов. Это как если бы ТЭС была сравнена с водяным колесом.
>>159438Давай без дурацких аналогий. Ты б ещё про автомобили написал.
Пишу. По необходимости, иногда от нечего делать — интересно же.Даже прямо сейчас:sed -E '/\s*<!--\s*$/,/\s*-->\s*$/d;/^\s*<!--.*?-->\s*$/d;s/(^\s*\S+)*\s*<!--.*?-->\s*/\1/g;' index.htmlНепонятно, почему регулярка в третьей замене матчит строки, где есть только табуляция и комментарий, ведь сказано же — \S, непробельный символ, с квантификатором «один или больше». Но если выполнять её последней — сойдёт, иначе после неё остаётся только зияющая пустотой строка.
Пишу. По необходимости, иногда от нечего делать — интересно же.Даже прямо сейчас:
sed -E '/\s*<!--\s*$/,/\s*-->\s*$/d;/^\s*<!--.*?-->\s*$/d;s/(^\s*\S+)*\s*<!--.*?-->\s*/\1/g;' index.html
Непонятно, почему регулярка в третьей замене матчит строки, где есть только табуляция и комментарий, ведь сказано же — \S, непробельный символ, с квантификатором «один или больше». Но если выполнять её последней — сойдёт, иначе после неё остаётся только зияющая пустотой строка.
>>159569Для sed квантификатор один или больше это \+ а + просто матчит +.
>>159569Дежурное напоминание: https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags
s/(^\s*\S+)*\s*<!--.*?-->\s*/\1/g;Всё было из-за звёздочки после группы и циркумфлекса в начале.>>159570> Для sed квантификатор один или больше это \+ а + просто матчит +.Нет, в расширенных регулярках, включаемых флагом «-E» — наоборот, метасимволы экранировать не нужно. По крайней мере, в ГНУтом седе так.https://www.gnu.org/software/sed/manual/html_node/Extended-regexps.html> The only difference between basic and extended regular expressions is in the behavior of a few characters: ‘?’, ‘+’, … when using extended regular expressions you must escape them if you want them to match a literal character.>>159572Да ладно тебе, всего́ лишь удаление ком̧̗м̰͍ентариев. Ничего стрaͨl̘̝̙̃ͤ͂̾̆шного н̧̯̺̠̰̟̟̝̠̣̥̩͖̲̻̙͢͡ͅе̟͚̯͈̱̳͍̳̞̟̠̪̘̱̭̯̣̠͞ͅ случ͞͏̰͙͖̗̪͔͙̩̩̭͓̥̣̺̭̝ͅитс͏̸̛̤͕̖͚̲̖ͅя̨͕͔̫̺̫̙̜̰͈͜͡͝ͅͅ
s/(^\s*\S+)*\s*<!--.*?-->\s*/\1/g;
Всё было из-за звёздочки после группы и циркумфлекса в начале.
>>159570
> Для sed квантификатор один или больше это \+ а + просто матчит +.
Нет, в расширенных регулярках, включаемых флагом «-E» — наоборот, метасимволы экранировать не нужно. По крайней мере, в ГНУтом седе так.https://www.gnu.org/software/sed/manual/html_node/Extended-regexps.html
> The only difference between basic and extended regular expressions is in the behavior of a few characters: ‘?’, ‘+’, … when using extended regular expressions you must escape them if you want them to match a literal character.
>>159572Да ладно тебе, всего́ лишь удаление ком̧̗м̰͍ентариев. Ничего стрaͨl̘̝̙̃ͤ͂̾̆шного н̧̯̺̠̰̟̟̝̠̣̥̩͖̲̻̙͢͡ͅе̟͚̯͈̱̳͍̳̞̟̠̪̘̱̭̯̣̠͞ͅ случ͞͏̰͙͖̗̪͔͙̩̩̭͓̥̣̺̭̝ͅитс͏̸̛̤͕̖͚̲̖ͅя̨͕͔̫̺̫̙̜̰͈͜͡͝ͅͅ
>>159453Давай без дур аналогий вообще. Пользоваться компьютером, не программируя его - это использовать его крайне неэффективно.
>>159584>Пользоваться компьютером, не программируя его - это использовать его крайне неэффективно.А кому эта эффективность нужна, кроме как для пользователей, чья профессиональная деятельность связана непосредственно с программированием? Для Раисы Михайловны из пятого отдела, которая вбивает циферки? Ну посидит она вечерок, другой, третий пару раз в году. Позовёт мальчика-сисадмина, если что-то поломается. Обучение программированию займёт куда больше времени, чем подготовка отчёта, который хитро считается раз в квартал.Для Семёна, который смотрит аниму и читает картинкодоски? Ну так ему делать нечего, известное дело.Так что говорить о неэффективности для дела, которое и эффективности не требует, не приходится.
>>159584
>Пользоваться компьютером, не программируя его - это использовать его крайне неэффективно.
А кому эта эффективность нужна, кроме как для пользователей, чья профессиональная деятельность связана непосредственно с программированием? Для Раисы Михайловны из пятого отдела, которая вбивает циферки? Ну посидит она вечерок, другой, третий пару раз в году. Позовёт мальчика-сисадмина, если что-то поломается. Обучение программированию займёт куда больше времени, чем подготовка отчёта, который хитро считается раз в квартал.Для Семёна, который смотрит аниму и читает картинкодоски? Ну так ему делать нечего, известное дело.Так что говорить о неэффективности для дела, которое и эффективности не требует, не приходится.
Я написал скрипт, чтобы смотреть порнхаб без авторизации через вконтактик. Это единственный скрипт, который я написал для своих нужд. Чувствую себя слегка неловко...
>>159594Чувствуешь себя неловко? Подрочи — пройдёт!
>>159293Нет, за меня давно уже всё написали.
>>159598Клёво тебе. А я вот заебался уже софт под себя пилить.
>>159597Подрочишь - пропадает концентрация, упадок сил, желание что-то делать гаснет. Особенно когда ты фаппер-профессионал, и тебе нужно удовлетворить чувство вкуса, когда на первое попавшееся говно дёргать не получится - перелопатить 100 додзей и 100 страниц картинкопомоек, найти самое лучшее, потом понять что можно найти еще лучше и перелопатить еще 100 страниц помоек и додзей и обдрочиться до потери пульса. В потом с чувством выполненного долга опустошения заняться ничем...Целая наука это. Так что не советую.
>>1592931) Скрипт для настройки iptables из клиентского конфига openvpn. Исключает утечку ip и dns при обрыве соединения, закрывает ненужные порты и обновляет dns в resolv.conf.Подобное есть на гитхабе, но оказалось написать проще, чем разбираться с чужим говном. 2) Небольшая программа на си для запуска команд от рута без ввода пароля. В системе всегда есть набор часто выполняемых действий, которые не представляют угрозу безопасности при выполнении от пользователя, но при этом требуют рут права. Например, те же скрипты из пункта 1 или ручное монтирование флешки. Наверное это можно сделать по-человечески через sudo, но как именно, если команд относительно много и они разнородые я не знаю.Программа запускается от рута и раз в секунду пытается прочесть строку не более 50 символов из пайпа, доступного для пользователя. Дальше, если прочитанное слово найдено в конфиге, то выполняется соответствующая ему команда через nohup, результат отправляется в другой пайп. 3) Скрипт для сборки iso debian через debootstrap. Скрипт установки. Все взято из внешних источников, собрано вместе и подогнанно под себя. Нужно допиливать, хотя уже работает.4) Обертка для wget, автоматически проверяющая статус сети и выдающая ошибки в нужном мне формате. Так же она умеет косить под браузер для обхода блокировки на некоторых сайтах (порнхаб блокирует ботов по отсутствию подстроки в хедере). 5) Бот для скачивания картинок из галерей. Задача слишком примитивна, чтобы заморачиваться изучением сложного ПО для автоматизации.6) Мелкие скрипты для работы с файлами и тому подобное. Есть несколько серьезных проектов тоже в области повседневной работы, но не уверен, что когда-нибудь их закончу.
> 2) Небольшая программа на си для запуска команд от рута без ввода пароля. В системе всегда есть набор часто выполняемых действий, которые не представляют угрозу безопасности при выполнении от пользователя, но при этом требуют рут права. Например, те же скрипты из пункта 1 или ручное монтирование флешки. Наверное это можно сделать по-человечески через sudo, но как именно, если команд относительно много и они разнородые я не знаю.Программа запускается от рута и раз в секунду пытается прочесть строку не более 50 символов из пайпа, доступного для пользователя. Дальше, если прочитанное слово найдено в конфиге, то выполняется соответствующая ему команда через nohup, результат отправляется в другой пайп.Обязательно переделай через sudo. Судя по "раз в секунду" вместо блокировки, код у тебя плохой. Монтирование пользователю вообще возможно стоит разрешить через fstab.Как минимум можно разрешить через sudo запускать именно эту твою команду-обёртку и снять с нее suid-бит.
> 2) Небольшая программа на си для запуска команд от рута без ввода пароля. В системе всегда есть набор часто выполняемых действий, которые не представляют угрозу безопасности при выполнении от пользователя, но при этом требуют рут права. Например, те же скрипты из пункта 1 или ручное монтирование флешки. Наверное это можно сделать по-человечески через sudo, но как именно, если команд относительно много и они разнородые я не знаю.
Программа запускается от рута и раз в секунду пытается прочесть строку не более 50 символов из пайпа, доступного для пользователя. Дальше, если прочитанное слово найдено в конфиге, то выполняется соответствующая ему команда через nohup, результат отправляется в другой пайп.
Обязательно переделай через sudo. Судя по "раз в секунду" вместо блокировки, код у тебя плохой. Монтирование пользователю вообще возможно стоит разрешить через fstab.
Как минимум можно разрешить через sudo запускать именно эту твою команду-обёртку и снять с нее suid-бит.
>>159642Для этого придумали кнопку "фаворите". Но да, рано или поздно одно и тоже надоедает, даже если его сотни, и приходится лопатить.
>>159586А нахрена тогда компьютеры покупать? Да еще и такие дорогие.
>>159653Оно сильно от настроения фаворите, к тому же, всё время нужно новое
>>159293На работе да, дома только всякие одноразовые одностросники, в стиле "распаковать 100500 зип-архивов с торрента", или "найти и пофиксить все жипеги которые на самом деле пнг".
Постоянно дополняю свои макросы и конфиги для имакса, алиасы для командной оболочки. Потихоньку пилю полнотекстовый поиск по дампу нескольких цифровых библиотек.
Стараюсь не писать никаких скриптов и ничего не настраивать. Считаю, что если что-то нужно настраивать после установки, то это баг. Поддерживаю концепцию zeroconf: https://sqlite.org/zeroconf.html
>>159671Смотреть котиков, читать рецепты котиков, изредка пописывать квартальный отчёт.Ну и траекторию баллистических ракет считать, но этих пользователей ничтожно мало.
> если что-то нужно настраивать после установкиАга, пусть там будут дефолтные пароли от админа, ноль безопасности из-за ненастроенных привилегий и неизвестно какие базы данных. Зато ничего не настраиваешь.
> если что-то нужно настраивать после установки
Ага, пусть там будут дефолтные пароли от админа, ноль безопасности из-за ненастроенных привилегий и неизвестно какие базы данных. Зато ничего не настраиваешь.
>>159744Он айпадная потреблядь, успокойся.Таким действительно лучше никуда не лезть.
>>159744 Хотя в целом - замечательная идея, только не для этого мира.
>>159645> 3) Скрипт для сборки iso debian через debootstrap. Скрипт установки. Все взято из внешних источников, собрано вместе и подогнанно под себя. Нужно допиливать, хотя уже работает.Покажешь?
>>159645
> 3) Скрипт для сборки iso debian через debootstrap. Скрипт установки. Все взято из внешних источников, собрано вместе и подогнанно под себя. Нужно допиливать, хотя уже работает.
Покажешь?
Нет, я скрипт-кидди и использую уже готовые чужие скрипты. Кто-нибудь здесь пишет прикладные программы без образования программиста или не обучаясь на оного?
>>160313> Кто-нибудь здесь пишет прикладные программы без образования программиста или не обучаясь на оного?Если считать скрипт прикладной программой, то да, пишу.
>>160313
> Кто-нибудь здесь пишет прикладные программы без образования программиста или не обучаясь на оного?
Если считать скрипт прикладной программой, то да, пишу.
>>160313Образование программиста переоценено
>>160313Скрипты, программы, подпрограммы, надпрограммы...Зачем я это делаю — не знаю. Но искренне надеюсь, что изо всего этого не вырастет очередной TempleOS
>>160313А я на работе задаюсь другим вопросом: кто-нибудь здесь пишет прикладные программы, имея образование программиста или обучаясь на оного?
>>159293Нет задач. И вообще жизнь меня затупила до крайности, даже под страхом смерти вряд ли напишу чтото сложнее автохоткея. c:sad
>>159293Я не понимаю, как можно не писать скрипты под свои нужды. Под каждую нужду софт искать? Ну вот мне надо скачивать обновления манги, причем с разных сайтов. Мне что, под каждый сайт какое-то ПРИЛОЖЕНИЕ искать? Или вот у вуза было ебанутое расписание, нужно специальный будильник, который умеет работать по двум неделям. Где я его найду? Я даже кейворды не знаю какие вводить, чтобы такое найти. А переименовать файлы в проекте, параллельно поправив инклюды, как? Скачивать какой-нибудь плагин для Total Commander из недр Wayback Machine? Или вот я работал с индусом, который обожал гробить базу клиента. Бывало, по несколько раз на дню. Сначала я честно разбирался, что он там накосячил, и сам отвечал на его письма, но меня это быстро заебало, и я решил поставить автоответчик, который тупо откатывал базу и слал ему стандартный ответ. Вот где такой автоответчик скачивать?И таких вот мелких задач - сотни. И с каждым днем появляется все больше, потому что все девелоперы уходят в веб и облака. Что мне делать, кроме как не писать скрипты самому?
>>159293Я не понимаю, как можно не писать скрипты под свои нужды. Под каждую нужду софт искать? Ну вот мне надо скачивать обновления манги, причем с разных сайтов. Мне что, под каждый сайт какое-то ПРИЛОЖЕНИЕ искать? Или вот у вуза было ебанутое расписание, нужно специальный будильник, который умеет работать по двум неделям. Где я его найду? Я даже кейворды не знаю какие вводить, чтобы такое найти. А переименовать файлы в проекте, параллельно поправив инклюды, как? Скачивать какой-нибудь плагин для Total Commander из недр Wayback Machine? Или вот я работал с индусом, который обожал гробить базу клиента. Бывало, по несколько раз на дню. Сначала я честно разбирался, что он там накосячил, и сам отвечал на его письма, но меня это быстро заебало, и я решил поставить автоответчик, который тупо откатывал базу и слал ему стандартный ответ. Вот где такой автоответчик скачивать?
И таких вот мелких задач - сотни. И с каждым днем появляется все больше, потому что все девелоперы уходят в веб и облака. Что мне делать, кроме как не писать скрипты самому?
>>160741> Или вот я работал с индусом, который обожал гробить базу клиента. Бывало, по несколько раз на дню. Сначала я честно разбирался, что он там накосячил, и сам отвечал на его письма, но меня это быстро заебало, и я решил поставить автоответчик, который тупо откатывал базу и слал ему стандартный ответ.Это не про тебя случайно? https://bash.im/quote/436725
>>160741
> Или вот я работал с индусом, который обожал гробить базу клиента. Бывало, по несколько раз на дню. Сначала я честно разбирался, что он там накосячил, и сам отвечал на его письма, но меня это быстро заебало, и я решил поставить автоответчик, который тупо откатывал базу и слал ему стандартный ответ.
Это не про тебя случайно? https://bash.im/quote/436725
bashrc — тоже скрипт.Поэтому, дорогой Новерь, смотри, какую хуиту я нагородил.Для удобства обезжучивания, перед командой присвоил переменную PS4:$ PS4='\e[35m${LINENO}\e[m ' bash -x script.shЧтобы выводила фиолетовые номера строк выполняемого скрипта.А выводится вот, что:[35m14 echo 'Test?'Здесь 14-я строка. Вот, без ANSI-кода единица появляется дважды:114 echo 'Test?'И если сделать так:$ PS4='Line ${LINENO} ' bash -x script.shПолучается вот так:LLine 14 echo 'Test?'Первый символ повторяется и всё портит.PS1 вроде не запортачил.TTY=$(tty)PS1='\[\e[1;30m\] ${TTY:5}\[\e[m\] ${debian_chroot:+($debian_chroot)}\[\e[1;34m\]\W\[\e[m\] $ '
bashrc — тоже скрипт.Поэтому, дорогой Новерь, смотри, какую хуиту я нагородил.
Для удобства обезжучивания, перед командой присвоил переменную PS4:
$ PS4='\e[35m${LINENO}\e[m ' bash -x script.sh
Чтобы выводила фиолетовые номера строк выполняемого скрипта.А выводится вот, что:
[35m14 echo 'Test?'
Здесь 14-я строка. Вот, без ANSI-кода единица появляется дважды:
114 echo 'Test?'
И если сделать так:
$ PS4='Line ${LINENO} ' bash -x script.sh
Получается вот так:
LLine 14 echo 'Test?'
Первый символ повторяется и всё портит.
PS1 вроде не запортачил.
TTY=$(tty)PS1='\[\e[1;30m\] ${TTY:5}\[\e[m\] ${debian_chroot:+($debian_chroot)}\[\e[1;34m\]\W\[\e[m\] $ '
>>160764Посмотри на PS1 внимательно. Там ANSI escape sequence обёрнуты в "\[...\]".
>>160765Пробовал, без разницы. Час промаялся, читал и гуглил, и так и этак.И присваивал PS1 обычный '$ ', когда грешил на промпт, но дело не в нём.Глаза сломал уже.$ PS4='\[\033[0;35m\] ${LINENO} \[\033[0m\] ' bash -x script.sh [0;35m 14 echo 'Test?'
>>160765Пробовал, без разницы. Час промаялся, читал и гуглил, и так и этак.И присваивал PS1 обычный '$ ', когда грешил на промпт, но дело не в нём.Глаза сломал уже.
$ PS4='\[\033[0;35m\] ${LINENO} \[\033[0m\] ' bash -x script.sh [0;35m 14 echo 'Test?'
>>160766У меня твоя строка выводит фиолетовый цвет. Может дело в терминале или версии bash?
>>160766export PS1='\[\033[0;35m\] ${LINENO} \[\033[0m\] 'Теперь у меня есть фиолетовые номера строк. Очень ня.
>>160777Ня. С нулями тоже кавайи, дес.PS1='\[\e[0;35m\] $(printf "%03d" $LINENO) \[\e[0m\] '>>160767rxvt-unicode:amd64 9.22-1+b1sakura:amd64 3.4.0-3bash:amd64 4.4.18-2bash:amd64 4.4-5Проверял в разных комбинациях — везде одинаково.В одном и том же месте, в одном и том же скрипте; с другими первый символ не повторяется.Стесняться некого, так что спрошу прямо: где у этой строки не так?
>>160777Ня. С нулями тоже кавайи, дес.
PS1='\[\e[0;35m\] $(printf "%03d" $LINENO) \[\e[0m\] '
>>160767rxvt-unicode:amd64 9.22-1+b1sakura:amd64 3.4.0-3bash:amd64 4.4.18-2bash:amd64 4.4-5Проверял в разных комбинациях — везде одинаково.В одном и том же месте, в одном и том же скрипте; с другими первый символ не повторяется.
Стесняться некого, так что спрошу прямо: где у этой строки не так?
Или без нуля, с заполнением пробелами.$(printf "%3d" $LINENO)
Или без нуля, с заполнением пробелами.
$(printf "%3d" $LINENO)
>>160778Судя по твоему скрину у тебя еще может быть проблема в PS1, попробуй там что-нибудь совсем простое поставить. Вот мой скрин для сравнения.
PS1='$ 'Злополучная конструкция:if ! [ -x "$(command -v ffmpeg)" ];then echo 'FFmpeg is not installed.' 1>&2 exit 1fiВынесенная в отдельный файл, эта проверка делает то же самое. Можешь опробовать. Спасибо за участие, кстати.Даже цвета можно убрать, оставив толькоPS4='$LINENO ', первый символ всё равно повторяется.Если бы не плохой английский (и сильное желание спать), уже написал бы в Debian mailing list или на форум.
PS1='$ '
Злополучная конструкция:
if ! [ -x "$(command -v ffmpeg)" ];then echo 'FFmpeg is not installed.' 1>&2 exit 1
fi
Вынесенная в отдельный файл, эта проверка делает то же самое. Можешь опробовать. Спасибо за участие, кстати.Даже цвета можно убрать, оставив только
PS4='$LINENO '
, первый символ всё равно повторяется.
Если бы не плохой английский (и сильное желание спать), уже написал бы в Debian mailing list или на форум.
>>160781Похоже на баг в bash. Мне удалось сократить тестовый скрипт до $(true). Обойти же этот баг можно, воткнув первым символом в PS4 что-нибудь непечатное, например https://en.wikipedia.org/wiki/Word_joiner
- wakaba 3.0.7 + futaba + futallaby -