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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 154

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

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
      Шпаргалка по частым синтаксическим оборотам.

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

 

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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ndch
Ну, если Гавк, как я показал, подходит, то Перл тем паче.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:11 29-03-2012
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, если из баша невозможно дёргать нативные lib*.so, то я могу несколько отложить мероприятие, его не отменяя вовсе.
 
Из жабы вроде бы можно так делать, если я правильно понял шароварщиков.  Что бы такое самое легковесное завести для этой цели - после того, как я башем отлажу бекап-модификацию-рестор со своими текстовыми конфигами? Чисто в исследовательских целях на одной машине: переносимый конфигуратор я ни на чём кроме баша городить не собираюсь.
 
Бэкенд нексентовского управляльного движка сделан из файлов *.pyc. Помогите оценить трудоёмкость затеи воспользоваться установленным питоновским рантаймом. Заодно - прошу прощения за то, что всё больше уклоняюсь в офтопик - совершенно отговорите от мысли поковырять те самые pyc или, напротив, присоветуйте направление изысканий в этом направлении.
 
 
Добавлено:
 
Есть вот такой цикл (внутренности я уже немного отрефакторил, и буду рефакторить дальше: не о них вопрос)
 
for $guid in `stmfadm list-lu | cut -d" " -f3`; do
   #echo $guid
  echo $(sbdadm list-lu | grep FRONT)
 
   stmfadm list-view -l $guid
 
   get_host_group $guid
   get_client_iqns $host_group
 
   echo Client IQNs $client_iqns
 
   echo
done
 
Я продолжаю путаться в раскрытии переменных. Выделенная строка находит единственную строчку из многострочного вывода (почти то, что нужно получить). Но если я пытаюсь следующим шагом заменить отладочную константу FRONT на $guid, у меня не выводится здесь ничего.
 
Опять прошу подсказки.

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 21:38 29-03-2012 | Исправлено: LevT, 23:12 29-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Цитата:
for $guid in `stmfadm list-lu | cut -d" " -f3`; do  
эм... надеюсь $guid это очепятка и там написано просто guid. Продолжим тем, что я рекомендовал Вам использовать конструкцию $(), вместо ``.
Если у Вас реально там написано $guid то я не понимаю как скрипт вообще запускается.
 
К чему echo? Строка должна быть просто sbdadm list-lu | grep "$guid"
Отладочная строка #echo $guid выводила то, что Вам надо?
Помните, что grep регистрозависим.

----------
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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 01:42 30-03-2012
LevT



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

Всё верно, очепятка, опять большое спасибо за помощь. Скрипт я постепенно модифицирую взятый откуда-то из инета: оттого там сохранялся `` вместо $()
 

Код:
 
echo --- List View and Associated Host Groups IQNs ---
for guid in $(stmfadm list-lu | cut -d" " -f3); do
   echo $guid
set -x
   sbdadm list-lu | grep "$guid"
   stmfadm list-view -l "$guid"
 

 
Предпоследняя строчка не работает (ничего не выводится)
интерактивно с тем же guid выводится
 
Влияние bhork исключено: без него то же самое. Вот подробнее отладочная выдача:
 

Цитата:
 
root@nex3:/zones/dsu/nfs/bhork/input/storcfg# /zones/dsu/nfs/rootfiles/config.view  
--- List View and Associated Host Groups IQNs ---
600144F099D1040000004F6B40A50001
+ sbdadm list-lu
+ grep 600144F099D1040000004F6B40A50001
+ stmfadm list-view -l 600144F099D1040000004F6B40A50001
stmfadm: 600144f099d1040000004f6b40a50001: no views found
+ exit
 

 
И следующий вопрос: как правильно перехватить ошибку stmfadm в последней строчке? Это важная инфа: она означает неконсистентность базы, получившуюся в результате ручного применения утилит.

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 10:15 30-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
В смысле перехватить? try{}catch(Exception e){} здесь нету
Следующей строкой после команды можно вставить проверку кода возврата - if [ $? -ne 0 ]; then echo "Caution! Have a trouble"; fi.
Цитата:
Предпоследняя строчка не работает (ничего не выводится)  
так и предыдущая ни чего Вам не вывела, так и должно быть?
Когда Вы проверяли команду интерактивно в терминале, Вы пробовали скопировать именно отладочную строку из скрипта и именно она дала результат?

----------
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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 12:16 30-03-2012
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Блин, допёрло, как до жирафа!  
Разглядел, наконец, что регистр букв в выдаче sbdadm и stmfadm различаются
 
Как лучше закрыть проблему регистрозависимости?
 
 
Добавлено:
 
именно для грепа просто (ключ -i)
Есть ли более общий - но контролируемый - метод, вроде заключения переменных в кавычки?
типа нахрен отключить везде case sensitivity мне всё-таки не надо: это перебор.
 
А вот о [не]существовании для этой цели чего-то вроде флага вроде set -x я хочу знать.

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 13:48 30-03-2012 | Исправлено: LevT, 14:43 30-03-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
> if [ $? -ne 0 ]; then echo "Caution! Have a trouble"; fi
Зачем столько букв? И на STDOUT это вываливать все-таки не надо.
do-something || echo >&2 "E: Something has gone wrong."
 
> регистрозависимости
> для этой цели чего-то вроде флага
Флаг для Баша-то есть (о чем, кстати, легко узнать из мана, да).
$ [[ A == a ]]
$ echo $?
1 # ЛОЖЬ
$ shopt -s nocasematch
$ [[ A == a ]]
$ echo $?
0 # ИСТИНА

 
Только ни на что, кроме Баша, он влиять не будет, на Греп в т. ч.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:06 30-03-2012 | Исправлено: ASE_DAG, 17:07 30-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
Зачем столько букв?
зато, красиво) Я кстати редко когда пользуюсь ||, обычно всегда if описываю...
 
LevT
Если вы знаете в каком регистре вам нужна будет переменная, то есть вариант подать её в нужном виде, например так: ${guid,,*} - получить переменную $guid  в нижнем регистре.

----------
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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 18:31 30-03-2012
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
 
Дык вот зачем мне лишние знания, которые лягут мёртвым грузом, а в нужный момент как раз запросто и не вспомнятся (как это случилось только что с grep -i)?  
 
Мозги-то не резиновые, времени не вечность в запасе...
Я хотел узнать ровно то, что узнал, с Вашей любезной помощью.
 
И за напоминание о редиректе в stderr тоже спасибо.  
Но на самом деле я хотел бы ознакомиться с лучшей практикой организации средствами баша структурированного обработчика ошибок.
 
 
Добавлено:
 
И еще попутный вопрос. stderr в бхорке глобально перенаправлен в файл включением стандартной либы.
 
Есть ли более лаконичный способ перенаправлять текущие ошибки - что-нибудь вроде опять же флага, подменяющего stderr на том участке, где он включён?  
 
 
Добавлено:
 
Сдаётся мне, что я подкапываюсь сейчас под архитектуру юниксов.. Я не нарочно, деваться мне некуда: приму ответ такой, какой он есть.
 
 
Добавлено:
 
Вот пример:  
stmfadm list-view -l $guid
 
может возвращать два принципиально разных ответа: либо указанную ошибку "тра-ля-ля no views found", либо многострочный вывод, который надо разбирать для извлечения полезной инфы.
 
Как лучше закрыть подобную типичную проблему (вот этот пост именно закрывает проблему разбора многострочников, причём красивым образом)
 
 
Добавлено:
 
Можно ли в юниксах отличить по каким-то признакам "атомарную команду" - которая взаимоисключающим образом выдаёт что-то либо в stderr, либо stdout?
(если я понимаю дело правильно, сложные пайпы с большой вероятностью наваляют и туда, и сюда)

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 18:37 30-03-2012 | Исправлено: LevT, 19:57 30-03-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
> Дык вот зачем мне лишние знания, которые лягут мёртвым грузом
Решительно не понял, к чему это вы.
 
> Есть ли более лаконичный способ перенаправлять текущие ошибки  
> что-нибудь вроде опять же флага, подменяющего stderr на том участке, где он включён?
 
$ cat myexec
#!/bin/bash
exec 2> err.log
echo >&2 'Hello world!'
$ ./myexec
$ cat err.log
Hello world!

 
Кстати:
а) не думаю, что в том, что вы именуете «стандартной либой» это реализовано как-то иначе; неужели не нашли?
б) в «Advanced Bash-Scripting Guide» этому целая глава посвящена, можете почитать.
 
> я подкапываюсь сейчас под архитектуру юниксов
Чавой?
 
> может возвращать два принципиально разных ответа: либо указанную ошибку "тра-ля-ля no views found",  
> либо многострочный вывод, который надо разбирать для извлечения полезной инфы
На один и тот же дескриптор? О_о
 
> Как лучше закрыть подобную типичную проблему
Так какую проблему-то?
 
> Можно ли в юниксах отличить по каким-то признакам "атомарную команду" - которая взаимоисключающим образом выдаёт что-то либо в stderr, либо stdout?
Не понял.
 
> имхо, сложные пайпы с большой вероятностью наваляют и туда, и сюда
Не то, что не понял, а даже не распарсил.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:08 30-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Я согласен с непонятками ASE_DAG. Мб причины непонимания у нас и разные, но тем не менее не могли бы Вы излагать свои желания более приземлённым обывательским языком?..

Цитата:
два принципиально разных ответа
ну так как верно заметили
Цитата:
На один и тот же дескриптор?
посему || или && как я понимаю, решает вашу проблему...

----------
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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 20:34 30-03-2012
LevT



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

Цитата:
Решительно не понял, к чему это вы.

 
к Вашему намёку на всемогущие маны, в которых содержатся ответы на все заданные вопросы ))
и кардинальным образом больше ответов на вопросы пока ещё даже не возникшие: для моего психотипа погрузиться в них означает обречь себя на DOS мозга
 
С предсказуемо жалким результатом, чему свежий пример grep -i.  Или ABSG, нужную главу которого я теперь уже прицельно пошёл перечитывать по Вашему совету, на сей раз с надеждой усвоить.  
 
 

Цитата:
Чавой?  

 
stderr УЖЕ перенаправлен куда-то стандартной либой. Знать не знаю куда (может, стандартная либа занимается какой-то динамической магией)
 
Хочу выделить блок кода, внутри которого ошибки будут перенаправлены в указанное по месту выделения место.
 
Хочу-то хочу, но боюсь, что моя хотелка нереализуема именно из-за архитектуры юникса как рантайма.
 
 

Цитата:
Не то, что не понял, а даже не распарсил.

 
"сложный пайп" - это то, что корректно в юниксах называется не то job, не то task.
Последовательность команд, принимающих вывод друг друга по цепочке.
 
Я пытаюсь изобрести свой рантайм в баше, ограничившись необходимым для меня минимумом "строительных блоков" и в меру возможностей (которую я как раз проясняю расспросами) дополнив высокоуровневую семантику. До такого состояния, чтобы прогу можно было собрать из красивых кирпичиков, без колебаний обойдясь без эстетически неприятных или не с ходу понятных конструкций.
 
Для того, чтобы вернувшись к своему коду скажем через год, я бы смог его сразу править, без обращения к манам и ABSG.

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 20:50 30-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Думаю, что такое "сложный пайп" и так было понятно, а job и task это не сюда (ну не будем о них). Через pipeline уходит только stdout на stdin последующей команды, stderr стоит рядом и ждёт своего законного мусора.
Цитата:
Хочу выделить блок кода, внутри которого ошибки будут перенаправлены в указанное по месту выделения место.  
либо для каждой команды перенаправлять вывод, либо всё гораздо проще:
exec 5<&2    # сохранили текущие настройки в новый файловый дескриптор 5
exec 2>new_err.log   # запили новый вывод для ошибок
ls /qqq   # ошибка ушла в новый вывод
...   # еще с пяток команд с ошибками
exec 2<&5   # вернули настройки вывода ошибок в хз куда


----------
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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 21:32 30-03-2012
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Спасибо, именно этого мне и не хватало.
Упд. А можно ли сами файловые дескрипторы сохранить в переменные?
 
В ABSG не вижу главы о структурной обработке ошибок: нужная инфа разбросана по разным местам.
 
 
Попробую опять с другого бока
 
Есть вот такая строчка
host_group=$(stmfadm list-view -l $guid | grep "Host group" | cut -d: -f 2)
 
Exit status у неё 0, $host_group на выходе пустая строка.
 
Как узнать в проге о случившейся ошибке и получить максимум информации о ней? (например, хотелось бы узнать, что ошибку с таким-то текстом выплюнула именно первая команда пайпа)

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 09:02 31-03-2012 | Исправлено: LevT, 09:19 31-03-2012
LevT



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

Может быть для этого можно обернуть интересные команды в свои инструментованные скриптики, обладающие нужными свойствами (например, сейчас мне кажется, что мне помогла бы "атомарность")?

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 11:32 31-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Во первых ошибка и так будет выдана в Ваш лог файл, если же Вы хотите на основании её что-то делать в скрипте, то вы не поверите, но ответ опять есть в man'е (хотя признаюсь в инете найти его проще)...
ls /qqq | wc -l   # очевидно что первая команда вернёт ошибку, а вторая 0
echo ${PIPESTATUS[0]}   # о чудо - bash хранит exit code каждой части строки с pipeline'ами!!!

 
кстати, zsh считает элементы массива с 1 почему-то...

----------
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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 13:38 31-03-2012 | Исправлено: Alukardd, 14:08 31-03-2012
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Ну, сойдет. Спасибо!
 
я смотрю, PIPESTATUS определён всегда (пайпом считается даже единственная команда) - и это явно закрывающий проблему инструмент.
 
Проблему, которую создаёт несогласованная  реклама двух фич шелла (или юниксов как таковых?): пайпов и экзитстатусов.
 
 
А в манах имеет смысл что-то искать только при условии, что известно, чтО искать. Мне, кроме того, нужно и второе условие: известно, зачем нужно искать именно это (а не что-нибудь другое).
 
Маны описывают детали и не содержат архитектурного обзора, тем более его мотивационной части: почему сделано так, а не иначе? Какими предположениями об использовании инструмента руководствовались разработчики?
 
Я сперва спрашиваю себя, согласен ли я умерить свои хотелки до тех предположений, а затем изучаю (начиная с архитектуры) или адаптирую к себе инструмент, помаленьку пробуя его на прочность. И только по мере погружения в эту деятельность маны приобретают для меня значимость.
 
 
Иными словами, кроме манов и рекламы для чайников, есть третий род доков, с которыми, по-моему, не очень-то ладно в юниксах - архитектурно-мотивационные: не КАК делать что-то, а ЗАЧЕМ это делать, и ПОЧЕМУ предлагается делать это именно так, а не иначе.
 
(О существовании Робинсона и т.п. я в курсе: это не то, постольку, поскольку такого рода литература исходит из понимания юниксовой архитектуры как "божественной данности" - а не результата инженерного компромисса, достигнутого в определённых условиях)
 
 
Добавлено:
 
Оставшийся неясным на сегодня вопрос: существует ли способ придать динамику файловым дескрипторам в шелле? (насколько я понимаю, использовать вместо них переменные не прокатит)
 
Также вот этим индексам массива PIPESTATUS[0] я был бы не прочь придать значимости, динамически связав их с сопуствующей информацией. Готов ради этого изучить ещё какой-нибудь фреймворк, где такое реализовано.
 
Может, и сейчас в стандартном баше есть что-то для этой цели, помимо статического заглядывания в таблицу экзитстатусов, хранящуюся в голове скриптователя и-или грепанья предопределённых строк в логах?

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 14:46 31-03-2012 | Исправлено: LevT, 15:12 31-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
По поводу почему так, а не иначе есть замечательная мысль:
правильных способов столько, сколько вариантов решения

Цитата:
литература исходит из понимания юниксовой архитектуры как "божественной данности" - а не результата инженерного компромисса, достигнутого в определённых условиях
Вы явно лезете туда куда не стоит... По крайней мере в рамках проблем решаемых Вами и нами. Архитектура тут именно как данность!

Цитата:
индексам массива PIPESTATUS[0] я был бы не прочь придать значимости, динамически связав их с сопуствующей информацией.
чего вы хотите? Я кажется уже просил выражаться более приземлённым языком...
Разве что Вы сами будете создавать ассоциативный массив, правда толку в этом ноль, т.к. вы же сами и будете его делать...

----------
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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 15:38 31-03-2012
LevT



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

Цитата:
Разве что Вы сами будете создавать ассоциативный массив,

 
Я бы посмотрел фреймворк, который такое делает в фоне. Например, я согласен вызывать пайпы как-то так:
 

Код:
pipe "command1" "command2" ... "commandN"

с тем, чтобы после вызова мне была доступна расширенная инфа об ошибках.
 
Я согласен скармливать такому пайпу не всякую команду, а только обёрнутую в свой собственный скрипт, реализующий шаблонное расширение окружения.
Хорошо бы фреймворк во время исполнения сам чистил окружение или грамотно управлял субшеллами.
 
Наконец, рассмотрю варианты препроцессора (чтобы не шокировать подобным синтаксисом благонамеренных юниксоидов, привыкших к предопределённному виду пайпов).
 
 
Добавлено:
 

Цитата:
Вы явно лезете туда куда не стоит...

 
Дык покамест не лезу, а так, щупаю почву.
А вот стоит или не стоит - это вопрос личной мотивации, которая у всех разная.

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 16:04 31-03-2012 | Исправлено: LevT, 16:24 31-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Я реально не понимаю зачем Вам всё это надо. Результат ни как не оправдывает геморрой. Увидев такой код, человек знающий shell просто его перепишет, чем будет догонять как там вы что-то вызываете нелепыми способами. По крайней мере, у меня именно такое мнение было по поводу велосипеда, с которым пришлось общаться на прошлой работе.
Проще разбираться в shell'е и найти нужную команду, хотя бы на форуме, чем разгребать чужой энтузиазм по унификации не знама чего.
 
Ну да ладно, это лирика, Вам для размышлений.
 

Цитата:
вызывать пайпы как-то так
можно написать такую функцию, навскидку она, даже, не сложная, но...

----------
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.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 16:35 31-03-2012 | Исправлено: Alukardd, 16:37 31-03-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 154

Компьютерный форум 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