Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: [Lug-bg] нахранете ме отзад (feedback) моля


  • Subject: Re: [Lug-bg] нахранете ме отзад (feedback) моля
  • From: Delian Krustev <krustev@xxxxxxxxxxx>
  • Date: Tue, 16 Feb 2010 19:43:39 +0200

On Tue, 16 Feb 2010 11:32:37 +0200 Peter Pentchev wrote:
> Лично аз това бих го написал малко по-параноично - бих quote-нал "$1",
> като се възползвам от факта, че POSIX-съвместимите shell-ове нямат
> нужда от кавички около `...` - и на мен ми отне няколко години да
> си приуча ума, че това е безопасно :)
> 
> PAGES=`whereis -m "$1" | cut -d : -f 2-`

Не мисля че има нужда от quote-ване но все пак ще последвам съвета ти.
Ако има интервал в името на страницата долния греп няма да свърши
работа така или иначе.

Улеснението е, че скрипта е предназначен за интерактивна употреба
и бърза да делегира работата на оригиналната програма ако не е извикан
интерактивно.
Така че коректното по-скоро е да се валидира $1 . Но понеже едва ли има
някоя смислена страница с интервал в името, или каквото и да било
нуждаещо се от quote-ване го пропускам тоя момент за KISS.

> > echo $PAGES | grep ' ' > /dev/null || exec $MAN "$@"
> 
> Това не може ли да бъде заместено с [ -z "$PAGES" ] && exec $MAN "$@"

On Tue, 16 Feb 2010 12:18:26 +0200 Peter Pentchev wrote:
> Хм, не, извинявай - ако идеята му е направо да пуска man, когато
> има само една страница, тогава има смисъл да е точно така :)

Правилно. 0 или 1 страници.

> > for i in `for j in $PAGES ; do echo $j ; done | sort `; do
> 
> Вътрешният цикъл може да бъде заместен с:
> 
>   echo "$PAGES" | xargs -n1 | sort

По-неефективно е, защото старитраме допълнителен процес :-)

> 
> (първоначално мислех и за tr ' ' "\n" вместо xargs -n1, но тогава може
>  да получиш празен първи и/или последен ред, а няма смисъл и от "egrep .")
> 
> >   printf "%10s %s\n" \
> >     "[`echo $i | cut -d . --output-delimiter ' ' -f 1- | rev | cut -d ' ' -f 2 | rev`]" \
> >     $i
> 
> Такаааа... това наистина може да бъде опростено по няколко начина :)
> 
> Най-простият е:
> 
>   sect=`echo "$i" | sed -e 's/.*\.\([^.]\+\)\.[^.]\+$/\1/'`
>   printf '%10s %s\n' "[$sect]" "$i"
> 
> (да, спокойно можеш да сложиш форматния низ на printf(1) в апострофи
>  за всеки случай; самият printf(1) ще е достатъчно умен, за да разбере \n
>  като символ за нов ред)
> 
> Малко по-красиво, поне според мен:
> 
>   echo "$PAGES" | xargs -n1 | sort | \
>     awk -F. '{printf "%10s %s\n", "[" $(NF-1) "]", $0}'

Това ми харесва, макар че мислех да стоя далеч от awk . Добавям
само проверка дали е архивирана страницата.

> Но като цяло много ми харесва, ще взема и да го пробвам тия дни :)

Мотивацията смятам е ясна.
Писна ми да пиша 'whereis -m x' ... 'man X x'.

Прикачам актуалната версия на скрипта.


Благодаря ти за отговора.


Поздрави
--
Делян

Attachment: man
Description: application/shellscript

_______________________________________________
Lug-bg mailing list
Lug-bg@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg


 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.