Как начать писать на этом говне?Почему оно такое неприветливое?Каковая сейчас обстановка в написании сценариев linux? Нормальные люди используют perl/python?
http://www.howtogeek.com/267858/how-to-install-microsoft-powershell-on-linux-or-os-x/
Просто практикуйся. Мне вот его синтаксис не нравица, но если привыкнуть, то норм. Perl/Pizdon нинужны, баша хватает, более чем, для всего, ваще.
>>848209 (OP)Так же как и с любым другим говном. Ставь себе конкретные задачи, для предметной области которых требуется умение в баш. И решай эти задачи.Самым эффективным будет если ты полностью удалишь винду и будешь пользоваться исключительно линуксом. >>848214>баша хватает, более чем, для всего, ваще.Are you serious?А ну ка, запили мне на баше трёхмерный массив. После того, как справишься с этой простой задачей, подкину тебе другую простую задачу.
>Каковая сейчас обстановка в написании сценариев linux? На работе люди все чаще используют сценарии ansible, chef, puppet и salt. Баш-скрипты чаще закидывают в релиз, тоже самое касается make. Макосовский консольный софт часто скриптуется на ruby, так как он там есть изкаропки. А так - ничего не мешает использовать что угодно, любой скриптовый язык подходит для таких задач. Хоть на нодежс скриптуй свое админство. А так, конечно, лучше на пистоне или рубях, если уж делать свой велосипед. Перл говно, недалеко от баша ушел, и то, и то трудно читать.
>>848259> на баше трёхмерный массивДля решения каких задач на баше тебе потребовался трехмерный массив?
>>848209 (OP)Используй IPython, он кроссплатформенный, весь Python с его либами уже входит + поддерживает команты shell'a. Использую одни и те же скрипты под Debian и Windows 7, полёт нормальный.(Он ещё и ООП!)
>>848307>Используй IPythonУже, но достаточно зайти на hh и вот тебе BASH BASH perl? NOPE BASH!
>>848297Для сложения двух трёхмерных массивов.
>>848500Ок, вопросов больше не имею.
>>848500А зачем тебе что-то хранить в трехмерном массиве?
>>848822Мне так удобнее.Вот представь, есть N серверов. Некоторая часть из них промышленные Np. Некоторые тестовые Nt. Тестовых несколько групп Nt1, Nt2, Nt3... Некоторые из них подготавливаемые к пуску Npp. Все они в одной подсети. Взаимоотношеня между серверами построены по принципу frontend - backend, при том у одного фронтенда может быть несколько бекендов и у одного бекенда может быть несколько фронтендов. И ещё есть различные категории пользователей, которым надо обеспечивать или перекрывать доступы к разным группам. Элементарная задача для сисадмина. Надо всего лишь выстроить трёх мерный массив, где по осям x,y будет двумерная таблица серверов, а по оси z будет всё множество пользователей.Но на голом баше такую хуйню заебёшься реализовывать.
>>848209 (OP)[code lang=sh]URL_PREFIX=http://poprzednia.univ.gda.pl/slang/haslaNTHREADS=10curl ${URL_PREFIX}/litery.html \ | grep -oE '[a-z][.]html' | xargs -n1 -I{} curl ${URL_PREFIX}/{} \ | grep 'target="znaczenie"' | grep -oP '(?<=href=").*?(?=")' \ | xargs -n1 -P${NTHREADS} -I{} curl ${URL_PREFIX}/{} \ | sed '/^</!ba;/<dt>/!d;:a'[/code]Ну попробуй это переписать на своем любимом питухоне. Мало того, что коду будет в разы объемнее, так ещё и времени ты на это потратишь поболее, хотя бы потому, что ты не сможешь писать/тестировать звенья конвейера поотдельности.
>>848826>Элементарная задача для сисадмина.А где задача-то? Массив построить? Ты уверен, что именно это конечная цель?Какой тебе программировать, если ты даже в нормальную постановку задачи не можешь? Хоть бы сначала какой-нибудь курс вроде SICP'а прошел.
>>848209 (OP)http://samrowe.com/wordpress/advancing-in-the-bash-shell/Несколько трюков, не имеющих отношения к скриптованию, но уменьшающий боль работы в bash.
>>848209 (OP)http://guide.bash.academy/Правда, там пока мало что есть. Но зато объяснено норм.
>>848888Переписал на своём любимом груви http://pastebin.com/rMaj8aY1Не понял почему нельзя тестировать звенья конвейера по отдельности.По-моему наоборот, невозможность сохранить составную структуру данных в переменную замедляет отладку, и заставляет писать подобных многоэтажных монстров вместо простого и ясного кода.В голой консольке такое многострочное выражение набирать в любом случае неудобно. Сложно перемещаться между строками (лучше не нажимать ВВЕРХ лишний раз), и нет подсветки синтаксиса, без которой не поймёшь правильную ли ты кавычку поставил и всё ли заэкранировал в регекспе.Алсо у твоего скрипта проблемы с кодировкой текста.
>>848949>>848949>Переписал на своём любимом грувиНеплохо, особенно для jvm-монстра, но с шеллом всё равно не сравнится.>составную структуру данныхТебе ещё только предстоит познать юникс-вей, юный падаван.>В голой консольке такое многострочное выражение набирать в любом случае неудобно.Именно в ней код и писался. Сделал запрос, оценил вывод, добавил следующий элемент конвейера и так далее. Если повторное выполнение какой-то части конвейера занимает многовато времени, то просто ебанул её вывод во временный файл.>Сложно перемещаться между строками А зачем между ними перемещаться?>Алсо у твоего скрипта проблемы с кодировкой текста.Мне не критично, скрипт был одноразовый. Но при желании можно было флажок у curl поискать или просто ебануть iconv.
>>848209 (OP)Не начинай, не выходи за пределы sh.
Мне кажется, фанаты баша это самые отмороженные фанаты из всего программирования.
>>848910Чая тебе.
>>849097Не отмороженнее фанатов питона или другого языка, который они пытаются впихнуть в самые неподходящие области применения вроде сисадминства
>>848209 (OP)>Нормальные люди используют perl/python?Админы - Perl, активно. Более того, зачастую без него тупо неудобно, ведь это Practical Extraction and Report Language, т.е. язык, созданный для сложного парсинга логов и составления отчётов.Пайтон - реже, но никто не запрещает.Зависит от задач. Смотри примеры немножко ебанутые, придумываю на ходу, прошу не цепляться к тому, что обычно так не делают или делают, но только конченые пидорасы, они призваны только показать, что у разных инструментов есть разные специфики применения, а я слишком сонный, чтобы выдавать идеальные варианты. Допустим, ты админишь линуксы. У тебя возникла задача, например, отследить, что произошло с письмом на транзитном сервере с Sendmail и SpamAss, который, например, стоит между интернетами и чангой/зимброй/етц. Ты делаешь cat, грепаешь отправителя, выделяешь (awk'ом) ID и грепаешь лог уже по ID в одну строку, и получаешь всю историю письма. Очень грубо. Можно залезть в несколько логов разных систем, смотря по ситуации. Это типовая задача для sh.Допустим, ты получаешь текстовый CDR или даже лог событий FreeSwitch, нужно выловить историю вызова. Тут простым грепом не факт, что отделаешься, наверняка придётся лезть в Perl.Что там ещё?.. Допустим, надо сделать бекапы. Ну тут чем нативнее и проще, тем лучше. Даже не интересно.А вот если нужно собирать информацию по крону и в зависимости от полученных данных дёргать разные системы или делать что-то ещё... Скажем, ты ленивое хуйло (а с точки зрения начальника это наверняка так) или твой начальник жадный мудак (а вот это обычное дело с точки зрения инженера) и ваше коллективное раздолбайство мешает вам замутить Zabbix/Nagios или ещё какую систему мониторинга, в которой всё есть искаропки. А тут владелец здания задумал ремонты делать и в серверной стало регулярно пропадать питание на больший срок, чем тянут упсы, после чего половина серваков от неожиданного выключения не поднимаются сами и просят помочь им, ты берёшь и пишешь скрипт для крона, который проверяет состояние и заряд упса, если обнаруживает, что пролпало питание на входе, то шлёт тебе письмо с уведомлением, а если видит, что заряд снизился ниже критической отметки - посылает серваки в корректный даун. Такое ты на sh писать замучаешься и наверняка возьмёшь что-то более юзерфрендли с готовыми модулями для работы с почтой, SNMP и всем остальным. Тут как раз я подозреваю, что зарулит что-то Python'оподобное, но не факт, что именно Пайтон.Но на самом деле во всех примерах я умышленно опустил один момент. Первым делом ты лезешь в интернет и ищешь, кто и как это уже сделал за тебя, раскуриваешь найденный код на любом языке и адаптируешь под свою ситуацию. У хорошего админа хватит на это скилла даже если язык он знает очень примерно, иногда даже если вообще впервые видит.>>849119>неподходящие области применения вроде сисадминстваСисадминство это очень широкая тема и есть задачи, когда Python действительно может оказаться удобнее. И уже задача админа определиться, в данном случае ему проще использовать более подходящий для задачи инструмент или тот, который ему более привычен и субъективно больше нравится. По большому счёту мало задач, которые нельзя решить на первом, что подвернётся под руку, останется только вопрос удобства.
>>849132Ничё так накатал, аж офигел. Кстати, проёбанная разметка -- из-за звёздочек перед sh, коими я хотел показать,что это относится ко всем выросшим из sh шеллам.
Решил немного поучится писать на этом говне и, от нехуй делать решил сделать скрипт, который не дает коммитить тебе в гит (если его прописать как алиас git).http://pastebin.com/9piFjC35вроде все просто, но чего-то не хочет хавать, например, ключ -а и тому подобное.так или иначе, как правильно передавать параметры в скрипт? особенно стринги (типа git commit -m 'le string')
>>849143Ебать ты аутист. Методом питонячьего тыка пытаешься разобраться что ли?Не хочешь маны читать, так хотя бы с базовыми конструкциями баша ознакомился бы.
>>849143http://tldp.org/LDP/abs/html/
>>849158Кто аутист, ты аутист ептэ. > будь мной> хурп-дюрп, неплохо бы уметь в примитивный BS для утилитарных целей> придумай (тупую) идею для примитивного скрипта> полчаса гугления и стаковерфлоу >> почти работает> спрашиваешь двачей об особенностях передачи параметров в скрипт. > АААААА!!!!!1 ЧИТАЙ ЕБУЧИЙ, НАПИСАННЫЙ ЖОПОЙ, КРАСНОГЛАЗЫЙ МАНУАЛЬ НА ТРИ МИЛЛИАРДА СТРАНИЦ. > нихуя ответа по сутиЧувак, мне сейчас а) не уперся скрипт на таком уровне б) не то чтобы у меня сейчас было дохуя времени, чтобы читать целые мануали к языкам, к которым у меня нет профессианального интереса. Меня сейчас вполне устраивает уровень скрит кидди в этом говне. Я вообще макоеб, если уж на то пошло.
google ansible, niggerorchef puphet
>>849185man 1 getopt>чтобы читать целые мануали к языкамЮрист что ли? Как ты вообще в IT оказался, если даже не умеешь добывать нужную информацию из документации?>к которым у меня нет профессианального интересаЗачем себя мучать?
Потому что баш это специализированный язык управления процессами, потоками данных и параллелизацией. Это не для написания обычных прикладных программ. На баше лучше не писать калькуляторы фибоначчи, хотя никто не запрещает, но это будет сложнее и хуже, чем на любом general purpose языке. Но вот зато отспавнить процесс, направить его stderr выхлоп в другой процесс - лучше баша это не сделает никто (ну разве что какой-то другой шелл).
Кто сказал Фибоначчи? Специальную олимпиадку объявляю открытойhttp://ideone.com/3hHXQGcat - $FIFO <<EOF | sed -nu 'h;:a;n;x;G;s;\n;+;;p;ba' | bc | tee $FIFO01EOF
>>849294>Как ты вообще в IT оказался, если даже не умеешь добывать нужную информацию из документации?Блядь. Один из путей добывания информации это, блядь, спросить у того кто под рукой и опытнее, совсем чтоли охуели вы тут все? Сука, я потратил 30 минут на скрипт, не зная о языке почти нихуя, и он, сука, почти работает, но вот с проблемой передачи параметров с наскоку не справился. Спросил в чем, блядь, особенность. Нет, блядь, развели рассуждение о том какой это нахуй специализированный язык для илитки. Ну, то есть я могу потрать ее 30, 60 минут, два часа, чтобы понять в чем проблема, а могу СУКА СПРОСИТЬ СОВЕТ НАХУЙ. Не, ну серьезно, по сути вопроса ответа вообще нихуя. только ссылка на оглавление (!) мануаля, который, естественно, мне выпадал в гугле миллиард раз.>>849294>Зачем себя мучать?Во-первых, интересно, во-вторых, простенькие скрипты, с проверкой существования файлов, манипуляцией аутпутом и т.д. это полезно чисто в утилитарных целях, там повесить в крон и дергать какие-нибудь логи за анус, например.>>849358>Это не для написания обычных прикладных программ.Кхм, я сюда пришел со скриптом (ладно, окей, "скриптом"), который пытается перехватить управление у гита и игнорировать коммиты делая вид что нихуя необычного не происходит. Какие нахуй прикладные программы?
>>849464>не зная о языке почти нихуяТак надо было узнать. Хули тебе, документацию пересказывать что ли?>СУКА СПРОСИТЬ СОВЕТ НАХУЙВот тебе и дали совет: ЧИТАЙ СУКА ЧИТАЙ БЛЯДЬ, чтобы не заебывать потом людей тупыми вопросами и кусками кода, которые с легкостью бы продавались в цирке как результат деятельности слона Джимбо.>оглавлениеНе умеешь таким пользоваться? Тебе надо было странички перечислить? Или, может быть, прямые ссылочки на все главы, с которыми бы тебе стоило ознакомиться?>который, естественно, мне выпадал в гугле миллиард раз.Даже безмозглая машина лучше знает, что тебе нужно.
>>849480>которые с легкостью бы продавались в цирке как результат деятельности слона Джимбо.Я прекрасно понимаю, что это скрипт уровня "кот на клавиатуру насрал". Но мне нахуй и в пизду не сдалось это говно на более высоком уровне. А на таком - БЫВАЕТ ПОЛЕЗНО. Если бы была более простая, хоть и кастрированная альтернатива - да неебатся, я не гордый. Я в детсве .bat-файлы писал, не умер (разве что немного внутри). Но тут документация пиздец жопой писана. Мне нахуй не нужно лезть в глубину этого дремучего ада. Мне просто нужно перехватить параметры и передать их обратно как было.
>>849521>Но тут документация пиздец жопой писана.А ты её читать собрался что ли? Там всё равно ничего нового не написано. Просто полистай выборчно интересующие главы, погляди примерчики, ознакомишься как раз с основными конструкциями, средствами языка, основными командами — делов-то на вечерок. Хотя бы будешь уже представлять, что как и чем тут делается, а нюансы уточнишь по мере необходимости.
>>848209 (OP)>Почему оно такое неприветливое?
>>849446cat - /tmp/fifo << EOF | dc -e '?[?dsa+plalxx]sxlxx' | tee /tmp/fifoКакая охуенная штука этот dc
Как написать скрипт, запускающий cl.class (java cl) без указания полного пути до cl.class при условии, что скрипт и .класс файл в одной папке? Что бы он не сломался, если папку переместить.
>>849570java -cp `dirname $0` clКак-то так
>>849358>баш это специализированный язык управления процессами, потоками данных и параллелизациейНу не совсем так. Шеллы, включая bash, даже проще - они просто объединяют по определённым правилам (по весьма небольшому списку правил) выполнение некоторых программ, а значит фундаментально возможности языка ограничены лишь возможностями программ, оперирующих текстовыми строками, используемыми в качестве интерфейсов в классических шеллах.>>849554Это работает НАМНОГО медленнее.
>>849577>НАМНОГО медленнееСтоп. А оно вообще работает?
>>849579http://ideone.com/93DhKSКонеш
>>848209 (OP)Нормальные люди используют Microsoft Powers Hell.>>848250Ассемблера тоже хватает для всего -> все прочие языки нинужны
>>849583Бля, у них dc нет
>>849586>>849586>Microsoft Powers Hell.Приглашаю поучаствовать >>849446
>>849588Но ПоверШелла нет на ideone.com.
>>849583Просто у меня он выводил все числа подряд, а не только числа из ряда. Запускаю в чистой убунте на виртуалке.
>>849616Ну вот, поверс хелл соснул даже не успев начать
>>849621https://bpaste.net/show/c3e0b235f174
>>849635Ну хуй знает. Может, не подряд, но неправильно. Слева - >>849446, справа - >>849583.
>>849692Проверь скрипт у себя. Не может же один и тот же код давать разные результаты
>>849731Ещё раз: хуй его знает.Впрочем, хуй он такой - он всё знает, он, SUKA, всеведущий, но молчаливый.
>>849738Блин. Пофиксил скрин на всякий случай. Если не веришь или думаешь, что я правлю скрипт в другом окне ради троллинга, то могу записать вебм-ку.
сап, антоны. Пишу костыль, который нужен для администрирования oracle (для учебы). Суть в том, чтобы написать баш-скрипт, в котором будут выполняться команды из sqlplus и lsnrctl. Но естественно они не выполняются, если написать их прямо в баше. По сути выполнение заканчивается на запуске этих самых утилит. Как передать им управление из баша? Пока писал, придумал просто выполнять из из другого скрипта. Что скажете?
>>849616http://www.tutorialspoint.com/codingground.htm
>>849741Искать лень. Опиши, как обычно эти>sqlplus и lsnrctlвыполняют команды.
>>849743sqlplus программа-интерпретатор командной строки для работы с системой управления базами данных Oracle Database. Т.е. просто запускается эта программа и через терминал ты выполняешь уже команды этой программы.
а мне нужен баш для калькуляторинга, потомучто калькулятор найти в ебунте тот ещё квест, особенно с ебунтой установленной на флешке - может найти а может и нет
>>849745Правильный путь - проверить в манах, нет ли у ней ключей, которыми можно передать команду.Простой путь - направить в неё команду имитацией ввода через "<<".Имей в виду, что если команда задаёт несколько вопросов, например, ты вводишь "sqlplus", а он тебя начинает "Какой там адрес сервера", "Логин свой назови", "ПАРОЛЬ!", то их надо передавать одним пучком.
>>849738>>849739Ну вон же, ёпта, у тебя там /tmp/fifo (который нихуя не пайп) вместо $FIFO
>>849749спасибо, сейчас попробую
>>849750Реально, видимо, я отсюда строку взял, а не скрипт целиком: >>849554Теперь работает.
>>849749как ни странно сработал обычный EOF, спасибо
>>849747F12, Esc
>>848209 (OP)Немного оффтоп. Если ты считаешь это говном, с какой целью тебе нужно на нём начинать писать? Тебе кто-то запрещает использовать perl/python?
>>848250>Perl/Pizdon нинужны, баша хватает, более чем, для всего, ваще.Всего - это чего? Если тебе нужно не просто автоматизировать какие-то действия, а сформировать какой-то отчёт, то тут без языка, в котором есть хэши/словари, очень туго. Можно извращаться и использовать баш, но это геморрой полный.
>>848264>Перл говно, недалеко от баша ушел, и то, и то трудно читать.если ты не владеешь языком, то само собой, его трудно читать
>>848826>Взаимоотношеня между серверами построены по принципу frontend - backend, при том у одного фронтенда может быть несколько бекендов и у одного бекенда может быть несколько фронтендов.вот это вообще пушка
>>849143>git $1 $2 "$@"ох лол
>>849190хватит форсить своё говно, мань
>>849119Конечно же отмороженнее. Фанбоев развивающегося языка можно понять. Но баш это замороженное говно мамонта без будущего, хаотичное нагромождение фич вокруг программы работы с терминалом, которое решили дотянуть до языка. Легаси в худшем проявлении."Using ;;& in place of ;; causes the shell to test the next pattern list in the statement, if any, and execute any associated list on a successful match.""&>>word is semantically equivalent to >>word 2>&1"Фу, бля. Выжечь напалмом.
>>849786>замороженное говно мамонта без будущего>существует и развивается 26 летТы, наверно, из тех людей, которые говорят о том, что perl умер.Алсо, у большинства людей итт явно неверное восприятие баша. Это не ЯП в первую очередь. Баш это интерфейс для взаимодействия с ОС.
>>849787Да, Перл умер.
>>849787Вот ченджлог 4й версии с 2009 http://tldp.org/LDP/abs/html/bashver4.htmlПо-моему это агония.>Баш это интерфейс для взаимодействия с ОС.И это хуёвый интерфейс взаимодействия с ОС. Как раз на то, как происходит редактирование командлайна особых ограничений обратной совместимости нет. Но ни удобных хоткеев, ни возможностей копипаста даже на уровне notepad.exe там нет. А хотелось бы множественные буферы обмена, и чтобы был шорткат для их быстрого просмотра и выбора по номеру. history не то. И возможность выделить кусок текста и автоматически экранировать/разэкранировать его.Когда я пишу длинную команду и вдруг вижу повторяющуюся ошибку я не хочу дописывать в начале команды history -a, жать энтер, а потом !!:s/wrong/correct/. Я хочу нажать хоткей, ввести wrong, энтер, correct, энтер. И чтобы в этих полях ввода поддерживался копипаст.Блядь, интерактивности хочется. Чтобы когда я пишу команду с вайлдкардами мне рядом показывалась её распакованная версия.Да посмотрите хотя какие крутые экспанды путей делает zsh. Почему баш вместо этого в носу ковыряется?
>>849983Большая часть из того, что ты описал, относится к терминалу, а не интерпретатору. Ничто не мешает тебе запилить свой эмулятор терминала с блекджеком и интерактивностью.
>>849983Поправка, не history -a, history -s и не !!:s/wrong/correct/, а !!:gs/wrong/correct/
>>849995>у большинства людей итт явно неверное восприятие баша. Это не ЯП в первую очередь. Баш это интерфейс для взаимодействия с ОС.>Большая часть из того, что ты описал, относится к терминалу, а не интерпретатору.Ясно.>Ничто не мешаетМешает тот факт, что баш де-факто стандарт. Я могу сделать себе удобное окружение. Но когда я захожу на удалённую машину у меня обычно есть только голый уродливый баш.
>>849999> Я могу себе установить удобную IDE для Java. Но когда я захожу на удаленную машину у меня есть только голый уродливый /usr/java/javacПонимаешь к чему я веду?
>>849999Да нихуя тебе не ясно тбх.То, что ты описал это пользовательский интерфейс с терминалом.Чуешь разницу? Или тебе опять всё нужно пережевывать да переваривать?
>>849786>хаотичное нагромождение фичВ 95% случаев этими фичами никто не пользуются, потому что они не нужны. Конечно, изредка при написании однострочника бывает удобно воспользоваться перделкой баша вместо вызова, например, sed'а, и сократив тем самым код на 10-15 символов, но полезным или необходимым это не назовешь.Как уже сказал товарищ выше, ты неправильно воспринимаешь баш. Это не изолированный язык, как какой-нибудь питон, и на нем не пишется основная логика. Это просто клей между отдельными гхм... командами, у каждой из которых свой предметно-ориентированный язык. Поэтому от самого языка много и не требуется: массивы, словари, структуры, объекты - всё это для языка, задача которого соединить выход одной программы со входом другой, излишне.
>>850003>Понимаешь к чему я веду?К тому, что скомпилировать джава-код на удалённой клиентской юникс машине бывает нужно так же часто, как что-то там поадминить, например погрепать логи, сконфигурить и поднять сервис и т.д. Мой опыт говорит об обратном. Мне по работе приходилось заходить на aws-овские серваки и AIX серваки с ksh на борту, но вот компилировать джава-код там не потребовалось ни разу.>>850004>То, что ты описал это пользовательский интерфейс с терминалом.Как терминал может заэскейпить/разэскейпить выделенный текст в командной строке?Как он может сделать подстановку по хоткею?Как он может на лету делать экспандинг строк?Мне это нихуя не ясно, разжуй плиз.Насчёт копирования - в секции Killing and Yanking мана баша упоминаются некоторые возможности. И kill-buffer там есть (типа буфер обмена с историей). Но даже для такой операции как kill-region (аналог cut) по дефолту не назначен хоткей. Да кому может понадобиться вырезать текст?>>850009Я не понимаю людей, которые с энтузиазмом копаются в этой куче. Моя реакция - колотить в дверь, звать начальника и требовать хотя бы zsh.
>>850173В какой куче? Зачем тебе zsh? Если тебе не хватает sh, значит, что-то ты делаешь неправильно.
>>850173Справедливости ради, zsh - то еще нагромождение действительно хуевой тучи фич на любой вкус, цвет и извращение. Но даже не копаясь в этой куче с энтузиазмом, можно ощутить эту разницу в интерактивном использовании между zsh и bash. >>850180Зачем тебе бензопила? Если тебе не хватает топора, чтобы расчистить гектар джунглей, значит,что-то ты делаешь неправильно.
>>850204Аналогия не верна, видимо, ты прошлый пост жопой читал>Зачем тебе этот клей с блестками? Если тебе не хватает суперклея, чтобы собрать топор для расчистки джунглей, значит, что-то ты делаешь неправильно. Вот так было бы правильнее
>>850173> К тому, что скомпилировать джава-код ...Нихуя я ты не понял. Я солидарен с вышеотписавшимся аноном о том, что ты путаешь поятия: терминал/эмулятор терминала и интерпретатор.sh, bash, zh, пидораш - это все языки с интерпретаторами. Интерпретатор по определению не может быть интерактивным. Интерактивным может быть софт, в котором ты набиваешь команды и шлешь их бинарнику интерпретатора.> когда я захожу на удалённую машину у меня обычно есть только голый уродливый башОпять же, на удаленной машине только интерпретатор (к тому и была аналогия с javac), команды ты набиваешь в локальном терминале, который под капотом просто их шлет по ssh на удаленную машину.
>>849747Питон лучше по всем параметрам. Удобнее (собственно, как и язык в целом), числа могут быть сколь угодно большими (хошь - вычисли 2*100).
>>850247Да мне и шелла хватает: dc -e '2 100000 ^ p'Питухон, кстати, медленнее считает
>>850237>sh, bash, zh, пидораш - это все языки с интерпретаторами.Когда я набираю часть имени файла и жму таб - кто предлагает мне варианты продолжения, терминал или "бинарник интерпретатора"?Когда я жму бекспейс, кто определяет, надо ли удалить символ $, стоящий перед курсором?Когда я ввожу латинскую "a", кто определяет как отреагировать?Подсказка: я только что выполнил команду bind '"a":"SOSI"'В общем если ты ещё не понял, то шелл берётся за дело не в тот момент, когда ты жмёшь энтер. Он проделывает кучу грязной работы по обработке нажатий клавиш ещё до этого.
>>850227В zsh навигация по ФС и набор команд быстрее происходит за счёт более интеллектуального автокомплита.Например вместо "cd /home/Anon/porn/loli/" можно писать "/h/a/p/l". Меньше нужно печатать и работа идёт быстрее.
>>848209 (OP)Если тебе так хочется писать на ГНУтом, тормозном и дырявом говне, то так уж и быть, не стану метать бисер перед свиньями, в конце концов, свобода бытия говноедом это тоже свобода, которую нарушать нельзя. Только, будь няшей, и приучи себя писать в шебанге "#!/usr/bin/env bash" вместо пикрелейта. Спасибо.
>>849787>Баш это интерфейс для взаимодействия с ОС.Ну, всё-таки больше, чем просто интерфейс. Это и способ автоматизации взаимодействий с системой, а это уже ЯП. Хотя нужно понимать, что в отличие от того же Пайтона он вызывает не функции из своих либ, а полноценные самостоятельные программы.
>>850263>он вызывает не функции из своих либ, а полноценные самостоятельные программыА вот и эксперты подтянулись.
>>849983>Вот ченджлогПрикрепи сюда ченджлоги всех утилит, использующихся в скриптах, начиная с coreutils и заканчивая всем, что используется в скриптах на самом деле, вплоть до imagemagick и прочих ffmpeg.
>>850273Прикреплю, когда мы будем говорить о развитии этих утилит. Сейчас мы говорим о баше.
Адепты Баша можете пояснить, почему ваш основой набор плагинов имеет в 8 раз меньше звездочек чем аналогичный репозиторий для zsh?-> https://github.com/Bash-it/bash-itи-> https://github.com/robbyrussell/oh-my-zshЯ не спорю, можно виртуозно пользоваться и тем, и тем, только вот в 2016 смысла уже нет учить баш, кроме как легаси на работе.
>>850261Причем тут автодополнение? Мы про различия языков говорили
>>850277Я говорил >>849786 про то, что не понимаю людей, которые добровольно используют баш в 2016. Ущербен как язык так и возможности оболочки.
Пока есть 80% софта под майком - баш будет оставаться.На баш заточено все, даже сраные пре- и пост- установочные скрипты в пакетах на нем. Альтернатив нет, так как нет более унифицированного средства.
>>850278Я выше и пояснял, что от баша, как от языка, много и не требуется, потому что вся логика распределяется по предметно-ориентированным языкам "команд", а его задача просто их соединить.>Ущербен как язык так и возможности оболочки.zsh практически ничем не лучше, а жертвовать совместимостью с де-факто стандартной оболочкой - башем - ради радуги и информации о погоде в строке приветствия как минимум глупо
>>850262Это ещё зачем?
>>850263>Ну, всё-таки больше, чем просто интерфейс.бля, я имел в виду, в первую очередь это интерфейс для взаимодействия с ОС и только во вторую - это ЯП. Очевидно, блядь, что это не только интерфейс.
>>850275Никто не использует голый баш в процессе работы с системой. Попутно юзается куча программ из coreutils. Про ffmpeg это перебор, конечно.
>>850279>Пока есть 80% софта под майкомпод чем блядь?
>>850276>в 8 раз меньше звездочекОх, лол. Давай допивай свой смузи, сучка, и пиздуй отсюда.
>>850173>Но даже для такой операции как kill-region (аналог cut) по дефолту не назначен хоткей.Да ты что, мань? С-k не пробовал? А ведь есть ещё C-w и C-y, прикинь?
>>850261>Например вместо "cd /home/Anon/porn/loli/" можно писать "/h/a/p/l". Меньше нужно печатать и работа идёт быстрее.ln -s /home/Anon/porn/loli loliне благодари
>>849143www.tutorialspoint.com/unix/case-esac-statement.htm$ ./test.sh -f index.htmFile name is index.htm$ ./test.sh -d unixDir name is unix
>>850358#!/bin/shoption="${1}" case ${option} in -f) FILE="${2}" echo "File name is $FILE" ;; -d) DIR="${2}" echo "Dir name is $DIR" ;; *) echo "`basename ${0}`:usage: [-f file] | [-d directory]" exit 1 # Command to come out of the program with status 1 ;; esac
>>850359о ${0} и прочаяwww.tutorialspoint.com/unix/unix-special-variables.htm
>>850314>Про ffmpeg это перебор, конечно.Если ты, например, хочешь написать "программу" (ну то есть что-угодно, лишь бы выполняло задачи), которая будет, скажем, на домашнем сервере проверять папку, в которую качаются торренты (ты для этого просто посылаешь ему, например, по почте .torrent-файл) на предмет новых видео, а потом, если находит видео, которое, например, содержит дорожку не того формата, который понимает твой ТВ, то перекодирует его в нужный формат и положит в отдельную папку, то тут самое простое будет именно какой-нибудь sh с ffmpeg. Это как модуль/либа/компонент/етц для работы с видео в других ЯП, только круче.
>>850359О, велосипедисты подтянулись.getopt жи есть
>>850280>Я выше и пояснял, что от баша, как от языка, много и не требуетсяВ нём нет даже сущности, соответствующей процессу или элементу пайпа.Мы не можем запустить в фоне несколько процессов, сохранить их "хендлы" в переменные, а потом сделать waitForAll, и чекнуть коды возврата. Для кодов возврата есть $? и $PIPESTATUS, где хранятся результаты только последнего пайпа (а их в команде может быть несколько). Есть wait, но он работает с PID, которые не уникальны для инстанса процесса, и могут переиспользоваться после его смерти. Именованных групп фоновых процессов, чтобы логически их объединять тоже не завезли. Но говноедам и так ок.>zsh практически ничем не лучшеИдеологически не лучше, но эргономичнее.>>850320Пояснить разницу между регионом и строкой?>>850369Задолбаешься. Проще использовать обёртку вокруг ffmpeg для какого-нибудь скриптового языка.
Баш отлично подходит для написания всякой простой юниксоспецифичной хуиты (например, инит-скрипты) или в ситуациях, где надо написать скрипт для платформ, в которых кроме баша нихуя нет и быть не может, т.к. места для бидона/перла слишком мало (например, на роутерах). Написание мало-мальськи сложной логики на баше там, где можно заюзать что-то более человеческое, - садомазохизм и пустая трата времени.>>849544UNIX сложен и неприветлив только для виндузятников, т.к. они привыкли к тупорылым принципам своей венды.
>>850400>В нём нет даже сущности, соответствующей процессу>но он работает с PIDА другой сущности для идентификации процесса в POSIX и нет.>или элементу пайпаЧего-чего?>Именованных групп фоновых процессовА зачем они в баше? Это не ты тот хуй, которому многомерных массивов не хватало?
Отвечу в тред, пожалуй. Пока уебы одногруппники задротили всякую хуйню, я и братишка прочитали камелбук, маны по шеллу и нашли работу админами. Вот куда мамкиным вкатывальщикам надо смотреть.
>>850448Ты опоздал где-то на 5 лет. Админская зарплата уже начала проседать где-то начиная с конца нулевых. А после обвала национальной бумажки сисадмин получает меньше самого обоссаного манагера, ибо последнему таки иногда поднимают зарплату
>>850572Хуйню несешь. Норм админ - это стабильность, востребованность и низкий порог вхождения. Ну а если ты думаешь получать жабомакакой как господа в США, то боюсь тебя ждет разочарование.По поводу зп, не знаю как в пердях, но в ДС стабильно от 50к бублей и выше. Недавно видел вакансию где рукастому админу предлагают 120-160к в зависимосте от прямоты рук.
>>850579И такие вакансии кстати, не редкость.
>>850440>А другой сущности для идентификации процесса в POSIX и нет.И очень плохо. Баш, как процесс запускающий другие процессы, мог бы трекать момент их завершения с помощью обработчика сигнала SIGCHLD, и предоставлять пользователю действительно уникальный идентификатор запущенного процесса, состоящий внутри из пида и булевского флага завершён/не завершён.>Чего-чего?Один из процессов, объединённых в пайп.>А зачем они в баше?Чтобы можно было делать wait для выбранного подмножества фоновых процессов.
>>850590>И очень плохо.Нет, не плохо. Просто ты не умеешь в юникс-вей.>мог бы трекать момент их завершения с помощью обработчика сигнала SIGCHLDА он его и отлавливает. Читай маны.>и предоставлять пользователю действительно уникальный идентификатор запущенного процессаА он какой предоставляет? ID как бы намекает на однозначную идентификацию>булевского флага завершён/не завершён.Зачем? Это ты и по PID'у узнать можешь.>Один из процессов, объединённых в пайп.Это звеном конвейера называется, а пайп - средство IPC, если что.Получить PID такого процесса тоже можно, но только зачем?>Чтобы можно было делать wait для выбранного подмножества фоновых процессов.wait $MY_NAMED_PROCESS_GROUP
>>850598>А он какой предоставляет? ID как бы намекает на однозначную идентификациюТы запускаешь процесс, запоминаешь его пид, он умирает, проходит какое-то время и другому процессу система назначает такой же пид. Ты проверяешь по пиду запущен ли твой процесс, видешь, что запущен и убиваешь его. Суть проблемы ясна?>Просто ты не умеешь в юникс-вей.Юникс-вей это молиться чтобы пид не был переиспользован? Парсить html грепом? Дампить объекты в плейнтекст, только для того чтобы сразу распарсить?>Получить PID такого процесса тоже можно, но только зачем?Я писал не про PID, а про код возврата. Мне кажется естественным, чтобы при асинхронном запуске процесса тебе возвращался future, с помощью которого можно проверить, запущен ли процесс, дождаться его завершения, и получить код возврата даже когда он давно завершён. PID не позволяет сделать последнего, и имеет описанную выше проблему.$? и PIPESTATUS это костыли, работающие только в тривиальных случаях. Вот простейший пример структуры пайпов с ветвлением: paste <(ls a) <(ls b). Как получить коды возврата ls a и ls b?
>>850598>wait $MY_NAMED_PROCESS_GROUPwait же только пиды принимает?
>>850227Ящитаю, неверна твоя аналогия. Клей с блестками абсолютно ничем не пижже суперклея, и отличается от него исключительно внешним видом, но не функциональными возможностями. В случае с шеллами - это не так.Мнение "zsh - это тот же баш с цветными хипсторотемами", обосновано единственно популярностью oh-my-zh. В то время как в zsh, как я уже писал, хуева туча разных фич. Например, тот же рекурсивный глоббинг. Модификаторы для глоббинга. zmv. autopushd. Про автодополнение молчу. Да, эти вещи не относятся к "прожиточному минимуму" пользования шеллом. Но они действительно делают интерактивную работу в консоли немного приятнее. Различия языков тут ни при чем Ебал я эти различия, не имеет никакого смысла писать скрипты на чем-то, кроме sh, он МОЖЕТ делать все, что нужно, и этого достаточно. Но это не значит, что zsh - бесполезная хуйня.
>>850400>Пояснить разницу между регионом и строкой?Поясни.
>>8503912 с половиной опции можно и вручную обработать
>>850630>Вот простейший пример структуры пайпов с ветвлением: paste <(ls a) <(ls b). Как получить коды возврата ls a и ls b?http://pastebin.com/Z5DUVLYq
>>850598>Это звеном конвейера называется, а пайп - средство IPC, если что.Чтобы расставить все точки на 'и'. Речь идёт о пайлайнах в баше, где stdout одной команды направлен на stdin следующей через пайп, который средство IPC.
>>850630>Суть проблемы ясна?Да. Ты пытаешься проецировать свой опыт применения win32 на unix.>он умираетИ тут ты получаешь SIGCHLD???ПРОФИТ>Парсить html грепом?Почему бы и нет? Мне, например, лень из-за какого-то однострочника заморачиваться со специализированной утилиткой для разбора хтмл, проще задействовать подручный греп.>Дампить объекты в плейнтекст, только для того чтобы сразу распарсить?Текст - самый удобный для человека способ представления информации, к тому же, им легко манипулировать, потому что все утилиты 1) ориентированы на обработку текста 2) давно отточены временем.Ну и манипулировать объектами в шелле - нихуя не удобно, это порождает постоянную проблему преобразования объектов из одного типа в другой. Powershell тому доказательство.>Вот простейший пример структуры пайпов с ветвлением: paste <(ls a) <(ls b). Как получить коды возврата ls a и ls b?Хз, честно говоря, не представляю, когда это действительно может понадобиться. Обычно коды возвратов используются только в конструкциях вида a && c && d || b>>850639Да, а тебе ещё что-то нужно?>>850695>Например, тот же рекурсивный глоббинг. Модификаторы для глоббинга.Мне и обычного хватает, а для поиска есть find>zmvНи о чем не говорит>autopushdalias cd=pushd?>Про автодополнение молчуЧестно говоря, не вижу смысла этого дроча, чтобы запилить автодополнение абсолютно для всего.>Но это не значит, что zsh - бесполезная хуйня.Ну ок>>850712С помощью пайпов (анонимных) они организуются в конвейер. Просто элемент пайпа - это скорее то, что через пайп посылается.
>>850715>С помощью пайпов (анонимных)Не надо уточнять, что он анонимный, если мы говорим о пайпе, что создаётся системным вызовом pipe(). Это и так подразумевается. Именнованные пайпы в юниксе вообще называются FIFO, не перепутаешь никак.>Просто элемент пайпа - это скорее то, что через пайп посылается.У тебя какая-то каша в голове. Пайп - это объект, который аллоцирует 2 файловых дескриптора. На один обычно пишут, а с другого читают.
>>850732Прочитал бы сначала на что отвечаешь. Тот товарищ назвал, как позже выяснилось, элементом пайпа звено конвейера, я его поправил.А как системный вызов pipe работает - я и сам знаю
>>850739>элементом пайпаПиши тогда уж пайплайн заместо пайпа. А то это очень сбивает с толку.
>>850741Процитировал как было
>>850706Почему не в переменные?>>850715Описать конкретную проблему, следующую из отсутствия гарантий на уникальность PID - значит "проецировать свой опыт применения win32 на unix"? Я так не думаю. К тому же в винде есть та же проблема с PID-ами.>И тут ты получаешь SIGCHLDИ как я узнаю от какого чайлда прилетел этот сигнал? Bash точно получает PID в обработчике сигнала, а получаю ли его я в обработчике, заданном trap-ом, хз. Может извернувшись и смогу, но не многовато ли мороки только для того чтобы надёжно узнать, завершился запущенный мною процесс или нет?>а тебе ещё что-то нужно?Предлагаешь идентифицировать группу процессов общим отцовским процессом? Можно, но костыльно имхо.
>>850702Регион - это последовательная область символов между установленной меткой и текущей позицией курсора. В блокноте регион подсвечивается синеньким.Строка - это вся строка.
>>850840А строка не является последовательной областью символов, которую можно выделить? В чём твоя проблема вообще? То выдумываешь, что хоткеев нет, то регион - это не строка.
>>850837>Почему не в переменные?Потому что ls вызываются в отдельных процессах, и всё окружение сдохнет после их завершения.http://pastebin.com/uUKexC8R
>>850837Ну, вообще-то, проблемы создаешь себе сам, пытаясь по привычки натянуть свитер через жопу.Ты лучше скажи, что (а не как) имеено ты хочешь сделать. Потому что чувствую, что ты делаешь это неправильно.
>>850850>по привычке
>>850846Да блядь, вот есть у меня строка "пиздахуйджигурда", я хочу сделать "хуйпиздаджигурда".Я ставлю курсор между хуем и пиздой, ставлю метку с помощью Ctrl+@, перемещаюсь к концу хуя, и жму хоткей, соответствующий kill-region, жму Ctrl+a чтобы попасть в начало строки и Ctrl+y чтобы вставить хуй. Отлично.Вот только для kill-region хоткей не назначен.
>>850856Бля, я думал, C-k - это убить регион. Сейчас смотрю в манах, действительно, это "Kill the text from point to the end of the line".
>>850901энивей добавить нужный хоткей 5 секунд:$ echo 'C-k: kill-region' > ~/.inputrc
>>850715>Текст - самый удобный для человека способ представления информацииЯ за то чтобы человек работал с текстом. Но использовать отформатированный для человека текст в IPC это идея идиотская даже для конца 60-х. XML и JSON тогда не было (и поэтому в юниксе есть целый зоопарк форматов конфигов), но вполне существовал CSV.Большая доля юниксовых утилит занимается тем, что выводит данные с табличной структурой: ps, ls, lsof, mount, df, ifconfig, route, nmap, ffprobe, ...Представь, насколько была бы проще жизнь, если бы у Томпсона и Ритчи хватило яиц сделать стандартом вывод табличных данных в csv/tsv. И чтобы всё было в каноничной форме - числа без округлений, даты в виде таймстампов (ну или YYYY.MM.dd.hh.mm.ss), строки как есть. Тогда можно было бы написать утилиту заточенную на фильтрацию записей в CSV по значениям полей в каноничной форме, понимающую этот формат, например что первая строка это заголовки.А для красивого вывода данных в соответствии с заданной строкой формата написать отдельную либу. То есть чтобы по межпроцессным трубам тёк CSV с каноничными данными, а форматировалось и локализировалось всё только при окончательном выводе человеку.Данные и представление должны быть разделены. Пользователь должен иметь возможность настраивать представление.Вон в ls, ps и lsof навелосипедили возможность выбора колонок и их формата. Я, анон с харкача, заявляю: такая возможность должна быть везде, и её отсутствие - проёб.Искать файлы фильтруя вывод ls -l должно быть так же удобно, как с помощью find-а. Но "Apr 16 00:18" не очень-то посравниваешь.Отфильтровать из вывода ifсonfig названия интерфейсов и их айпи должно быть просто. Но его автор разбил строки на несколько кусков чтоб красивее было. И соответствие 1 строка = 1 запись пиздой накрылось. Красота требует жертв.Даже простая команда touch " " ломает многие существующие скрипты.А всё потому что дампить объекты в плейнтекст только для того чтобы сразу распарсить это плохая идея.
>>851383>Но "Apr 16 00:18" не очень-то посравниваешь.ls -l --time-style=long-isoУ ls, как и любой другой команды, есть флажок для "машинообрабатываемого" вывода
>>851383>XML и JSON тогда не былоВ чём твоя проблема? Я регулярками могу нагрепать 99% того, что мне нужно. Для 1% я подключаю однострочники перла. Если бы блядь всё было в XML и JSON - это был бы полный ад и израиль. JSON ещё можно было бы пережить, но чтобы парсить XML на каждый чих - это просто издевательство.
>>851394>time-style=long-isoДистрозависимая хрень. Прикрутили только когда набили шишек.>как и любой другой командыНе пизди.>>851414У тебя просто мужика^W утилиты для работы с xpath/jsonpath нормальной не было. С ними и искать в структурированных данных было бы проще, и можно было бы одной командой запихнуть настройку в нужную секцию конфига. Не говоря уже про валидацию по схеме.
>>851414>Я регулярками могу нагрепать 99% того, что мне нужно.У меня прост случается баттхёрт когда html регулярками парсят.Почему до сих пор нет консольной утилиты для парсинга html? Ну или хотя бы для конвертации его в xml, чтобы дальше пустить в ход xpath.
>>851474рубисты, лениво попивая смузи, делают так:> curl -s https://en.wikipedia.org/wiki/Hui_people | nokogiri -e 'puts $_.css("img").each {|i| puts i.attributes["src"]}'http://pastebin.com/cjzCGKYL
>>851489К рубистам претензий нет.
>>851474>Почему до сих пор нет консольной утилиты для парсинга html? Да ты охуел? xmllint уже была ещё в те времена, когда ты под стол пешком ходил, не говоря уж о всяких не входящих в стандартную поставку утилитках.xmllint --html --xpath '//img/@src' <(curl -s https://en.wikipedia.org/wiki/Hui_people)Но мне, например, проще незадумываясь написать >curl -s https://en.wikipedia.org/wiki/Hui_people | grep -oE '<img.?>' | grep -oP '(?<=src=").?(?=")'чем вспоминать, как пользоваться этим ебаным xpath
>>851570О, не знал про --html. Я думал для xmllint надо конвертить html в xml. Пробовал делать это tidy, но оно слишком сырое. Ладно, допустим я чутка охуел.
>>851619Про jq-то, надеюсь, знаешь?
>>851619> Ладно, допустим я чутка охуел.допустили.
>>851474>У меня прост случается баттхёрт когда html регулярками парсят.Одно время писал парсеры для сайтов на перле с регулярками. Всё заебись было. Строить целое дерево, чтобы вытащить несколько полей - это абсолютно бессмысленная трата ресурсов и усложнение задачи, когда парой регулярных выражений ты можешь вытащить всё, что тебе нужно, какой бы кривой и поехавшей не была разметка.>>851489http://pastebin.com/Hwq657Dg
>>848888Это делается в одну строку
>>851999>$ xidel>bash: xidel: команда не найдена>$ eix xidel>Совпадений не найдено.Нет, так не делается.
>>852084>eixНаписано же, xidel.exe, куда ты со своей свинной рожей лезешь?
>>852084а в аюре есть:https://aur.archlinux.org/packages/xidel/:p
>>852110На пике очевидный цигвин, wаня.
Groovy валит в качестве языка для шелл скриптов? Прост, я джава макака, дрочится с питоном пока не хочу, а баш полное говно
>>852127Нет, груви - говно
>>852127А что тебе нужно делать? Перекладывать файлы наверное не очень удобно будет, а ковыряться в содержимом - вполне норм.
https://habrahabr.ru/company/mailru/blog/311762/
>>850579>стабильно от 50к бублей и вышеНедавно знакомый искал себе помощника, рассказывал про резюме, в котором типичный не сверх-прокачанный, но знающий админ с запросом в 50к, комментировал, что "подозрительно мало хочет, его навыки это 80+".>>850630>Юникс-вей это молиться чтобы пид не был переиспользован?Зная PID ты можешь получить PPID и командную строку, если боишься. Хотя обычно таких проблем не возникает при правильной организации скрипта. Ещё раз повторю, что уже не раз сказано: шелл это не си, не руби, не питон и не перл, шелл это даже не бач/вбс для линуксов, шелл это шелл. И писать на нём как на си не надо.>>850903Только не ">", а ">>". Хотя, смотря, что тебе надо.
>>852261> Только не ">", а ">>"Это не было руководством для дебилов, которые копируют команды в консоль, не понимая, что они делают. Если ты так переживаешь, что какой-то долбоёб, используя мою команду, затрёт свой исходный ~/.inputrc, то могу тебя заверить, что, скорее всего, у него этого файла вообще не было изначально.
>>852261>PPID и командную строкуДа уж лучше в качестве ID использовать пару PID+время запуска. Не подскажешь, как в ps время старта процесса в виде таймстампа вывести?>шелл это шелл. И писать на нём как на си не надо.Забавно, в rc использовали c-подобный синтаксис, и получилось намного аккуратнее bash.Но тоже хуйня. Шелл в виде комбинации неполноценного языка и неполноценного текстового редактора нинужен.Shell done right это текстовый редактор с реплом для скриптового языка. Адекватные люди со временем переселяются в vim/emacs и т.п. И это правильно, потому что всякий ввод текста должен происходить через текстовый редактор, а программирование на языке программирования.
>>852407>в rcгде?
>>852419https://en.wikipedia.org/wiki/Rc
>>852407Прекрати натягивать свитер на жопу, мне на это больно смотреть. Лучше объясни, что имеено ты пытаешься сделать.
Похоже вин https://www.youtube.com/watch?v=uaje5I22kgE
>>852407>неполноценного языка и неполноценного текстового редактора нинужен.Потому, что, блядь, это не язык программирования и не текстовый редактор, маня!Текстовые редакторы это vim, emacs, на худой конец - nano, если ты совсем чайник. Язык программирования для никсов это в первую очередь pure C (можно C++), а sh - инструмент управления системой, организации работы программ. Не понимаешь? Ну, если не понимаешь, то не трогай линукс, а значит ВОН ИЗ ПРОФЕССИИ. Умение пользования шеллом - обязательное требование для админа и если ты не способен его осилить, то ты не сможешь работать админом. Зато сможешь дальшн заправлять картриджи для тёток из бухгалтерии.
>>848209 (OP)>Почему оно такое неприветливое?Ты, петушок, еще скажи что vim не используешь (а какое-нить Nano).
>>852658Крутая конфа. Продуманная. Мне особо понравился живой дебаггинг презенташки с подгоном разрешения в прямом эфире.По сути.Знаешь, сколько этих шеллов существует? И один круче другого. Но правильные админы по-прежнему пишут под sh, не очень правильные - под bash (благо они очень похожи). Почему есть zsh и даже шеллы с более серьёзными ЯП: csh, Python shell, irb, а используется sh. Потому, что они есть везде, а другие, насколько бы фичастыми не были могут оказаться бесполезными.Ты знаешь, например, куда делся dash? Был неплохой фирменный дебиановский шелл, но сейчас на моём дебиане по-умолчанию работает bash, хотя специально я его не ставил и не выбирал. Потому, что bash есть почти везде, под него ты найдёшь кучу скриптов на все случаи жизни. В том же, что за пределами твоих пары серваков чего-то менее стандартного типа бельчачьего шелла ( http://squirrelsh.sourceforge.net/ ) есть люди, которых достаточно, чтобы они начали делиться приёмами, ты не можешь быть уверен от слова СОВСЕМ. И не важно ,что он умеет на самом деле. Важно, что в 2016-м перед тем, как написать свой скрипт принято искать готовые решения, а не изобретать велосипеды.Кого-то это устраивает, кого-то не очень, но в наши дни скорость разработки важнее скорости работы и многого другого, а максимальная скорость разработки - это взять готовое.
>>852880По своей сути шелл это репл к одноимённому языку. Тьюринг-полному языку программирования с переменными, условными выражениями и циклами, специализирующемуся на управление процессами. Не понимаю как это можно отрицать.Как репл он конечно же включает текстовый редактор для ввода и редактирования команд. Да, это неполноценный текстовый редактор, но такие функции как навигация по тексту и базовое редактирование в нём есть.Точно так же ide, почтовые клиенты и чатики содержат текстовые редакторы. Поле, в котором я это набираю это тоже текстовый редактор. Если эта идея слишком абстрактна для тебя - так и скажи, не буду больше мучать.Мой тезис в том, что для "управления системой, организации работы программ" надо было не писать велосипед, а доверить это полноценному редактору и языку программирования, в соответствии с принципами юникса. В текущем виде шелл это прога, которая выполняет много функций и делает это плохо.В баше есть даже vi mode и emacs mode для включения хоткеев как в них. Разработчики поняли желание пользователей редактировать текст в привычной среде, но не сделали следующий логичный шаг.>ВОН ИЗ ПРОФЕССИИУговорил, не буду админом.
>>848209 (OP)> perl> Нормальные люди
>>852904>более серьёзными ЯП: cshв csh даже функций нет, как ЯП, он ещё хуже баша, ты чё
>>853048Сам не пользовал, но, судя по описаниям это шелл с множественными включениями pure C.
>>853053Он вообще не удобен для программирования, я гарантирую это. Я честно пытался на нём писать какие-то скрипты, т.к. на фряхе он был по дефолту, но это абсолютно бессмысленное занятие. На той же фряхе csh юзался вот именно что только для интерактивной работы, все init скрипты написаны на sh.
>>848500Блять, как же я проиграл
echo BUMP
>>859529Нахуя?
>>859670прост)))