LINUX.ORG.RU

Новая версия Advanced Bash Scripting


0

0

Вышла новая - 5.0 - версия ABS Guide, исчерпывающего руководства по написанию скриптов на Bash. Интересно, что судя по Changelog, релиз выйдет только послезавтра.

Changelog

http://personal.riverusers.com/~thegr...

>>> Подробности

+1 :)

Книга отличная :)

PS. Исправьте "Интерсно"

dimozg
()

Замечательно! Лучший учебник/справочник по bash.

vimmer
()

Отлично!! Книга просто офигенная!!

boombick ★★★★★
()
Ответ на: комментарий от vdm

Давно не встречал такой идиллии на ЛОРе. Всё всем нравиться. Ради интереса пошел посмотрел - действительно ценная вешь, не часто встретишь такие подробности.

akira_ag
()
Ответ на: комментарий от V0ID

>Ну а реально даже там охвачено ~ 30-40% возможностей/тонкостей bash-скриптинга 8)

Да и вообще фтопку ее!

anonymous
()

классно, когда-то начинал с него, да и сейчас бегло пролистал и нашел много интересного. Респект Менделю Куперу!

qWen71n ★★★
()
Ответ на: комментарий от qWen71n

На том же сайте нашел: HOW-2 Meet Women: The Shy Man's Guide to Relationships,а так же Especially for Women: Nerds and Geeks. Цытата:

"A common complaint of women is that there are so few available "good" men out there, that all the desirable men have already been taken. Overlooked as potential lovers and husbands are the "nerds" and "geeks", the clumsy and socially inept males."

ЛОЛ!

qWen71n ★★★
()

bash не нужен.

Скрипты нужно писать либо портабельно (для POSIX sh), либо использовать возможности лучшего в мире shell - zsh. :)

execve
()

книга классная.
let i++ и i=${j/.JPG/.jpg} вычитал именно там и использую в командной строке.
В остальном многое позабыл за ненадобностью в связи с освоением perl.

szh ★★★★
()
Ответ на: комментарий от execve

> либо использовать возможности лучшего в мире shell - zsh. :)

А в чём преимущество zsh над bash? Спрашиваю по той причине, что действительно не знаю.

Evgueni ★★★★★
()

повелитель времени ;-)

record ★★★★★
()

Книжка мощная, хоть не читал, как истинный обитатель ЛОР, но поддерживаю.

Gharik
()
Ответ на: комментарий от BigBiker

Аффтар умничка! Насколько я помню - он первый кто рекомендует:
"Be sure to put the #!/bin/bash at the beginning of the first line of he script, preceding any comment headers."
Молодца! А то юнные дятлы наставят #!/bin/sh, а потом, вместо того чтобы долбить - СОСУД :)

anonymous
()

как-то читал. это даже лучше манов.

mic ★★★★★
()
Ответ на: комментарий от Evgueni

> А в чём преимущество zsh над bash? Спрашиваю по той причине, что действительно не знаю.

$ scp 1<Tab>
---- remote host name
10.8.0.10       192.168.0.1     192.168.0.111   192.168.0.112   192.168.0.117   192.168.0.139
$ scp 1*39<Tab>
$ scp 192.168.0.139:
$ scp 192.168.0.139:/tmp/<Tab>
---- remote file
hsperfdata_user/  sarg/                 ssh-tcLAMPM111/       ssh-zANAzb2222/       ttt/

$ vi d/u/s/pl2<Tab>
$ vi drivers/usb/serial/pl2303.
---- file
pl2303.c  pl2303.h

Ещё радует возможность иметь одну history на все запущенные в системе shell'ы.

execve
()
Ответ на: комментарий от execve

ыыы маладой человек(не вабиду) но вы просто bash-completetion не видели :) и не пробовали из него сделать то же самое ... там особых траблов нету просто нужен моск, а у zsh есть оч большой недостаток - он мало распространен, поэтому вы "универсальные" скрипты будете писать всеравно на bash'e ;)

так что холивар zsh vs bash считаю открытым :)

fura13 ★★★
()
Ответ на: комментарий от execve

еще кстати забыл kill показать, я им часто пользуюсь : 

bash-completion/zsh(pofigu)$ kill -HUP <TAB>
--- process list with pid/name
<bla-bla>

та же басня с killall тока ессно там уже подставляются имена 

ну и так далее вплоть до man и 
отдельных утил вплане подстановки опций через таб

fura13 ★★★
()
Ответ на: комментарий от fura13

zsh не употреблял, но осуждаю. Нечего плодить сущности - это не ТРУЪ, а синдром Вавилонской башни, только усугубляет всё.

kozebuk
()
Ответ на: комментарий от kozebuk

так это дело выбора, вроде такая концепция GNU чем больше выбор тем лучше ... так вот это дело выбора каждого юзать этот комплетейшон или нет а юзать его можно например если хочешь как в zsh но "привык" к башу

fura13 ★★★
()
Ответ на: комментарий от fura13

> ыыы маладой человек

Сказал 90-то летний старик 70-ти летнему.

> но вы просто bash-completetion не видели

После того, как давным-давно пересел на zsh - да, не видел.

Удиви нас, покажи особо выдающиеся преимущества bash completion перед zsh.

> поэтому вы "универсальные" скрипты будете писать всеравно на bash'e ;)

Универсальные скрипты я пишу на том самом POSIX sh. Чего и Вам советую.

execve
()
Ответ на: комментарий от fura13

Ну и раз уж пошла такая пьянка.

Одной из существенных причин переезда на zsh для меня была невозможность в bash сделать одну ~/.history на все shell'ы. За прошедшие ~10 лет у bash что-то изменилось?

execve
()
Ответ на: комментарий от execve

> выдающиеся преимущества bash completion перед zsh.

их нет - все то же самое

> на том самом POSIX sh. Чего и Вам советую.

хм ниразу не натыкался на людей с POSIX sh .. серверов же с sh мало а те которые есть обычно дырявые до ужаса :)

а zsh чуть больше у людей и так же мало на серваках

ессно все это мое имхо

fura13 ★★★
()
Ответ на: комментарий от fura13

> хм ниразу не натыкался на людей с POSIX sh .. серверов же с sh мало а те которые есть обычно дырявые до ужаса :)

1. Малыш, универсальные скрипты потому и называются универсальными, что работают почти у всех, а не только у кучки риальных пасанов с самым крутым shell'ом последней версии.

2. shell един в двух ипостасях: интерактивная оболочка и неинтерактивный командный интерпретатор. Когда идёт речь о написании скриптов, имеют ввиду именно #2 - командный интерпретатор. И совсем не обязательно, чтобы первое равнялось второму (у меня, например, 1 - /usr/local/bin/zsh, а 2 - /bin/sh).

Это не говоря уже о том, что _только_ Linux идёт с bash в качестве /bin/sh. Ты кроме Linux-то что-нибудь видел? ;)

execve
()
Ответ на: комментарий от execve

>1. Малыш, универсальные скрипты потому и называются универсальными, что работают почти у всех, а не только у кучки риальных пасанов с самым крутым shell'ом последней версии.

это точно. только отчего в амплуа "риальных пасанов" на лоре постоянно выступают zsh-шники? шило пардон, в заду, покоя не дает?

ты чувствуешь себя нереально крутым и лучше всех от того что у тебя zsh? значит твои родители не смогли научить тебя адекватной самооценке

>Это не говоря уже о том, что _только_ Linux идёт с bash в качестве /bin/sh

угу. первое что делают бсд-шники это ставят баш =)

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

anonymous
()
Ответ на: комментарий от anonymous

> ты чувствуешь себя нереально крутым и лучше всех от того что у тебя zsh? значит твои родители не смогли научить тебя адекватной самооценке

Доктор, за вами санитары пришли.

> угу. первое что делают бсд-шники это ставят баш =)

В качестве /bin/sh ? Ню-ню.

> зы: расслабься, сходи пивка попей, сделай автокомплишн воблой и не флуди больше на лоре

Разрешите исполнять? Разрешите бегом?

execve
()
Ответ на: комментарий от execve

> 1. Малыш, универсальные скрипты потому и называются универсальными, что работают почти у всех, а не только у кучки риальных пасанов с самым крутым shell'ом последней версии

>Ты кроме Linux-то что-нибудь видел? ;)

solaris bash стоит после установки ОС

freebsd с какой то версии помоему с 5-ой тоже стоит bash после установки ОС

ээ что я еще кроме линукса не видел?

можно впринципе продолжать писать на sh, но у bash как показывает $subj возможностей поболе

fura13 ★★★
()
Ответ на: комментарий от fura13

я не утверждаю что bash панацея, но мое ИМХО что он более распространен чем zsh и более функционален чем sh ... на zsh сидел какоето время - нареканий нет

а про хистори ... если я правильно понял нужно чтобы то что набранно в одном шеле было в другом ... может изврат но : history -a сбрасывает текущую сессию в .bash_history после этого он доступен в другом шеле сделав history -r - можно уже нажимать стрелку вверх и будет тот же хистори что вдругом

тут нужно подумать как это упростить и автоматизировать но лично мне никогда такое не нужно было и щас думать влом ... но помоему сделать что нить можно

fura13 ★★★
()
Ответ на: комментарий от fura13

> solaris bash стоит после установки ОС

Только после установки соответствующего пакета. Так же, как и zsh, кстати.

> freebsd с какой то версии помоему с 5-ой тоже стоит bash после установки ОС

Только после установки соответствующего пакета. Так же, как и zsh, кстати.

> я не утверждаю что bash панацея, но мое ИМХО что он более распространен чем zsh и более функционален чем sh ...

Более распространён чем zsh - да. Более функционален чем sh - да. Но эти расширения нестандартны (в отличии от sh), а сам bash менее фукнционален, чем zsh.

zsh тоже конечно не панацея, но желание перейти на него с bash у меня было, а желания слезть с него на другой shell у меня пока ещё не возникало. Хотел было хоть здесь узнать что-нить о сногсшибательных новинках в мире bash за последние 10 лет - и пока так и не дождался. ;)

> а про хистори ... если я правильно понял нужно чтобы то что набранно в одном шеле было в другом ... может изврат но : history -a сбрасывает текущую сессию в .bash_history после этого он доступен в другом шеле сделав history -r - можно уже нажимать стрелку вверх и будет тот же хистори что вдругом

Вооот. А в zsh это из коробки. И жутко удобно.

Сейчас мой ~/.zshhistory - под 3 мегабайта. Нажатием Ctrl-R в любом терминале вытаскивается любая команда, которая когда-либо набиралась мной за последние n лет (в том числе и набранная 5 минут назад в терминале на другой машине).

execve
()
Ответ на: комментарий от execve

Bourne Again Shell bash похож на ksh по возможностям, имеет легкий удобный интерфейс, простое интуитивно ясное редактирование введенных ранее команд, стандарт де-факто в Linux, в Solaris 9 устанавливается по умолчанию, но не является командным процессором по умолчанию(с) ???

fura13 ★★★
()
Ответ на: комментарий от execve

> о сногсшибательных новинках в мире bash за последние 10 лет - и пока так и не дождался. ;)

наверное их нету :(

fura13 ★★★
()
Ответ на: комментарий от fura13

> Bourne Again Shell bash похож на ksh по возможностям, имеет легкий
> удобный интерфейс, простое интуитивно ясное редактирование введенных
> ранее команд,

s/bash/zsh/g

Ещё раз: я с этим не спорю.
Я спорю с возможностью использовать bash в качестве универсального
неинтерактивного командного интерпретатора вместо sh.

> стандарт де-факто в Linux,

Это да.

> в Solaris 9 устанавливается по умолчанию, но не является командным процессором по умолчанию(с) ???

Solaris 9 под рукой нет, есть только 8 и 10.

Под 8 я bash ставил самолично, мамой клянусь. :) Потому, что zsh на SparcStation 20 тормозил.

Под 10:

==={{{
$ uname -a
SunOS sunsite86 5.10 Generic_118855-33 i86pc i386 i86pc
$ which bash
no bash in /usr/xpg4/bin /usr/ccs/bin /usr/bin /opt/SUNWspro/bin /bin
$ ls /bin/*sh*
/bin/csh          /bin/ksh          /bin/pfsh         /bin/rsh          /bin/ssh-add      /bin/ssh-keyscan
/bin/hash         /bin/pfcsh        /bin/remsh        /bin/sh           /bin/ssh-agent    /bin/zsh
/bin/jsh          /bin/pfksh        /bin/rksh         /bin/ssh          /bin/ssh-keygen
$ ls /usr/bin/*sh*
/usr/bin/csh          /usr/bin/pfcsh        /usr/bin/rksh         /usr/bin/ssh-add      /usr/bin/zsh
/usr/bin/hash         /usr/bin/pfksh        /usr/bin/rsh          /usr/bin/ssh-agent
/usr/bin/jsh          /usr/bin/pfsh         /usr/bin/sh           /usr/bin/ssh-keygen
/usr/bin/ksh          /usr/bin/remsh        /usr/bin/ssh          /usr/bin/ssh-keyscan
$
===}}}

execve
()
Ответ на: комментарий от fura13

Где-то были измерения так автодополнение в bash тормознее чем в zsh(я имею в виду продвинутое а не просто имя команды)

anonymous
()
Ответ на: комментарий от anonymous

ip (да и имена тоже) у меня достаются из ~/.ssh/know_hosts.

И нужно не забыть для последней версии ssh выставить "HashKnownHosts no".

execve
()
Ответ на: комментарий от execve

Вышла новая - 5.0 - версия руководства по написанию непортируемых скриптов

anonymous
()
Ответ на: комментарий от execve

У меня он достает оттуда же, но только имена то есть ssh 1<TAB> он говорит фиг нема такого. А вот ssh m<TAB> дополняет до mail.<домен>. Хотя они все в known_hosts присутствуют. Строка которая делает дополнение из _ssh:
_ssh_hosts () {
if [[ "$IPREFIX" == *@ ]]; then
_combination -s '[:@]' my-accounts users-hosts "users=${IPREFIX/@}" known_hosts "$@"
else
_combination -s '[:@]' my-accounts users-hosts \
${opt_args[-l]:+"users=${opt_args[-l]:q}"} known_hosts "$@"
fi
}

anonymous
()
Ответ на: комментарий от execve

Кхм и где это писать? Я так понял use-ip где-то должен быть в /usr/share/zsh/UNIX/_ssh как переменая? Так у меня там её нема. МОжешь свой _ssh привести? Охота сравнить со своим дистрибутивным.

anonymous
()
Ответ на: комментарий от anonymous

> Кхм и где это писать?

В ~/.zshrc.

> Я так понял use-ip где-то должен быть в /usr/share/zsh/UNIX/_ssh как переменая? Так у меня там её нема. МОжешь свой _ssh привести? Охота сравнить со своим дистрибутивным.

У меня это лежит в usr/share/zsh/4.3.4/functions/Completion/Unix/_hosts .

execve
()
Ответ на: комментарий от execve

Кхм фиг получилось. А в _hosts у меня лежит что-то такое где я не вижу в упор использование use-ip:
#compdef ftp ping rwho rup xping traceroute host aaaa zone mx ns soa txt

local expl hosts tmp

if ! zstyle -a ":completion:${curcontext}:hosts" hosts hosts; then
(( $+_cache_hosts )) ||
if (( ${+commands[getent]} )); then
: ${(A)_cache_hosts:=${(s: :)${(ps:\t:)${(f)~~"$(_call_program hosts getent hosts 2>/dev/null)"}##
[:blank:]#[^[:blank:]]#}}}
else
: ${(A)_cache_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:] ]#}}
}
if (( ${+commands[ypcat]} )) &&
tmp=$(_call_program hosts ypcat hosts.byname 2>/dev/null); then
_cache_hosts+=( ${=${(f)tmp}##[:blank:]#[^[:blank:]]#} ) # If you use YP
fi
fi

hosts=( "$_cache_hosts[@]" )
fi

_wanted hosts expl host \
compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' -a "$@" - hosts

Вопрос что делать?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.