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

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



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

Цитата:
А вы не заметили что изменили ' на "???  

заметил, потому как без кавычек переменные работать не будут:

Код:
 
sed "s/$pattern//g"
# or
sed 's/'"$pattern"'//g'
 

а зачем 3-ий \ ?

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 16:32 23-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
slech
содержимое заключенное в двойных кавычках подлежит раскрытию еще в shell, так что приходится с этим считаться.
 
Добавлено:
Хм, вот только я не очень понял почему на остальные \n это так сильно не влияет как на первый, и почему они работают и с одни м и двумя слешами... Надо покурить доку на sed.

Похоже, что \n внутри строки так и уходит в sed как символ новой строки...

----------
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:34 23-03-2012 | Исправлено: Alukardd, 16:45 23-03-2012
LevT



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

Как из скрипта (если точнее - то из файла, который сорсится исполняемым скриптом) добавить алиасы к интерактивному шеллу, из которого запускается тот самый исполняемый скрипт?
 
 

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Сделать что-либо из дочернего шелла в родительском? Никак.
А для исполнения перечня команд из скрипта без запуска нового интерпретатора, напомню, есть команда source, она же .:
$ . myscript

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

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну да, я про sourcing упомянул в своём вопросе
 
хорошо, скажу как я вышел на такую именно задачу - а Вы подскажете мне правильный путь ее постановки (раз уж решение невозможно)
 
Я всё-таки завел у себя bhork  
Там есть файл ~\.bhork, содержащий в частности
 

Код:
# shortcuts
alias cde="cd ${BHORK_HOME}/errors"
alias cdi="cd ${BHORK_HOME}/input"
alias cdl="cd ${BHORK_HOME}/logs"
alias cdo="cd ${BHORK_HOME}/output"
alias cdp="cd ${BHORK_HOME}/profiles"
alias cds="cd ${BHORK_HOME}/scripts"
alias cdt="cd ${BHORK_HOME}/tmp"
alias cdu="cd ${BHORK_HOME}/util"

 
Итак, я сделал cds и вручную отлаживаю скрипт myapp/test
 
Логи попадают в определённый файл в директории ../logs/myapp/,
ошибки в определённый файл в директории ../errors/myapp/
имена этих файлов экспортируются в дочерний шелл из стандартной библиотеки фреймворка - файла ../profiles/bhork_profile (они там генерятся заново при каждом её включении)  
 
После запуска ${BHORK_HOME}/scripts/myapp/test (который благодаря включению стандартной библиотеки всегда завершается успешно с точки зрения интерактивного шелла), мне надо быстро заглянуть в эти файлы.  
 
Как в интерактивном шелле узнать, куда именно заглядывать?
 
 
Добавлено:
 
Если сохранять куда-то список сгенерённых в стандартной биб-ке значений - то я похерю всю динамику, о которой автор фреймворка позаботился с явным умыслом (мне пока неведомым, но заранее уважаемым).

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
> Как в интерактивном шелле узнать, куда именно заглядывать?
Не трогая bhork_profile — только опираясь на содержимое logs/myapp/ и errors/myapp/ — взяв последний по дате файл, например, если их имена для этого непригодны.
А, собственно, что автор этого вашего bhork’а предлагает делать?
 
> подскажете мне правильный путь
Выкинуть bhork. ;-)

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

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



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
 
Мне кажется, что bhork это именно основа для IDE: остаётся открыть сгенерённые файлы в отдельных терминалах/окошках и переключаться между ними.
 
 
Добавлено:
 
Но мне пожалуй слабО эту IDE дописать: есть собственные дела поактуальней.
 
 
Добавлено:

Цитата:
Не трогая bhork_profile  

 
В bhork_profile заложено локальное расширение:

Код:
 
if [ -e ${BASH_SOURCE}_local ]; then
        . ${BASH_SOURCE}_local
fi
 


Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 00:21 25-03-2012
LevT



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

Цитата:
 
root@nex3:/zones/dsu/nfs/bhork/scripts/storcfg# find ../../errors/storcfg/ -type f | sort | tail -n 1
../../errors/storcfg/get_digested_20120324190551.err
root@nex3:/zones/dsu/nfs/bhork/scripts/storcfg# nano  ${find ../../errors/storcfg/ -type f | sort | tail -n 1}
bash: ${find ../../errors/storcfg/ -type f | sort | tail -n 1}: bad substitution
 

 
Вручную файл открывается. В чём грабли?
 
Добавлено:
 
Определил временно переменные путей в ~/.bhork_local
как правильно открыть файл? Обе строчки работают неверно
 
nano $_CDE$("ls -ctr1 ../../errors/storcfg/ | sort | tail -n 1")
nano $_CDE"ls -ctr1 ../../errors/storcfg/ | sort | tail -n 1"

Всего записей: 17745 | Зарегистр. 14-10-2001 | Отправлено: 11:06 25-03-2012 | Исправлено: LevT, 11:41 25-03-2012
LevT



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

Ответы по-прежнему интересны, а вопрос с логами решил: в bhork_profile есть для этого  

Код:
 
if [ -e ${BASH_SOURCE}_logging ]; then
        . ${BASH_SOURCE}_logging
else
        export MYPROJ_LOG=${MYPROJ_LOG_DIR}/${MYPROJ_SCRIPT_NAME}.log
        export MYPROJ_ERROR=${MYPROJ_ERROR_DIR}/${MYPROJ_SCRIPT_NAME}_${MYPROJ_DATESTAMP}.err
fi
 

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
А зачем у вас после ls -ctr еще и sort исполняется?
Что у вас в переменной _CDE?

----------
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 | Отправлено: 14:14 25-03-2012
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Спасибо, догадался уже: слэша последнего не было.  
 
Мне кажется, что-то такое вроде bhork может быть полезным для сокращения трудоёмкости вашей тут с ASE_DAG деятельности и роста её эффективности, за счёт уменьшения шума.
 
"Скачай вот это, запусти (устанавливается контролируемая среда для эксперимента...)
а потом воспроизведи свою проблему"
 
"Выполни probe18..." и т.д.
 
 
И вообще, имхо, подобные "фреймворки" хороши для обмена, не только опытом, но и готовыми скриптами.  А еще с их помощью можно заладить в своей кухне что-то вроде собственного RPC между допустим линуксом и нексентой, на скорую руку.

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Нет, от таких вещей как bhork боюсь нам тут только головной боли добавится (за т. ASE_DAG не скажу, но мне так точно)...
 
Лучше на чистом bash'е, с примесью системных утилит, те что есть в практически любом окружении (coreutils так сказать. ну и куда же без sed'а и awk).

----------
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:11 25-03-2012
LevT



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

Всё-таки, не всегда и не везде одно и то же. Вот у меня в нексенте дебиановский юзерленд, а в ошибках bhork всегда строчка

Цитата:
 
/usr/lib/sendmail: No such file or directory
 

 
Ничего я там не нашёл, что бы сендмейл дёргало. В одном месте есть запуск mailx при серьезной ошибке.
 
А мейлер в принципе хотелось бы настроить..
 
 
Добавлено:
 

Цитата:
А еще с их помощью можно заладить в своей кухне что-то вроде собственного RPC между допустим линуксом и нексентой, на скорую руку.  

 
У меня у самого на bhork бо-ольшие виды )
Я вот сейчас оберну своей конфигурялкой солярные настройки маппинга лунов в таргеты для своих инициаторов - а со временем попробую портировать конфигурялку на линукс и-или бздю.
 
Можно будет потестить таргеты разных операционок в контролируемой среде.

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
И что вам не нравится в строчке про sendmail? Sendmail является, практически, командой по умолчанию. В случае Debian что /usr/sbin/sendmail, что /usr/lib/sendmail являются симлинками на бинарник /usr/sbin/exim4.
 
Что вы имеете в виду под настроить мейлер? Что бы письма слать? Или полноценный почтовый сервер развернуть?

----------
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:41 25-03-2012
LevT



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

Непонятно, почему эта ошибка в лог каждый раз валится. Вроде ничто явным образом в изученных мною скриптах сендмейл не дёргает.

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Ну, что я Вам могу сказать - скрипты в студию...

----------
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:05 25-03-2012
LevT



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

нет в нексенте ни senmail, ни exim, ни postfix. Но mailx есть
И мейлер какой-то есть, настраивается из GUI и CLI
 
Дёргается через dbus родным API. Может, он самописный какой-нибудь у них?
 

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Так, например, можно отправлять письма через mailx, используя любой почтовый сервер.
env MAILRC=/dev/null from=alukardd@company.ru smtp=smtp.company.ru smtp-auth-user=alukardd@company.ru smtp-auth-password=87JQS8wZ smtp-auth=login mailx -n -s "ТУТ ЗАГЛОВОК" LevT@company.ru <<< "ТУТ ТЕЛО ПИСЬМА"
 
Как делать это "локально" я не помню.

----------
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:15 25-03-2012
LevT



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

Включил set -x
Связанная с мейлером ошибка в логе уже после завершения скрипта по exit 0
 
В /etc/mail/mailx.rc упоминаний о сервере и аутентификации нет (а должны они там быть?)
 
 
Добавлено:

Цитата:
Так, например, можно отправлять письма через mailx, используя любой почтовый сервер.  

 
Спасибо, попробую.  
И всё ж интересно, что у них с мейлером. В сервисах тоже нет ничего похожего.
Похоже, собственный какой-то, внутри демона dbus или под.
 
 
 
Добавлено:
 
 
Alukardd
Можно ли в баше поставить брякпойнт?
 
 
 
Добавлено:
 
 
Ещё вопрос.
Не врубаюсь в логику взаимодействия флага set -x и редиректа ошибок. Особенно при включениях .
 
Можно как-то пояснить в двух словах?
 
 
Добавлено:
 
Alukardd

Цитата:
Нет, от таких вещей как bhork боюсь нам тут только головной боли добавится (за т. ASE_DAG не скажу, но мне так точно)...  

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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Цитата:
Можно ли в баше поставить брякпойнт?  
В скриптах я использую свой любимый отладочный механизм, который часто применяю и для C (несмотря на бэбагер) - это несравненный echo (или printf).

Цитата:
set -x
данный флаг заставляет bash перед выполнением каждой команды вывести её на экран со всеми раскрытыми переменными и подставленными опциями по умолчанию.

Цитата:
заниматься саппортом  
не надо при мне этих слов) Я не люблю заниматься helpdesk'ом. А вот помочь накатать скрипт, да меня припирает, особенно если при этом я выкопаю для себя очередной интересный приём в дебрях man страниц.
Цитата:
выявить косяки
о каких косяках вы говорите? У 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 | Отправлено: 23:20 25-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