Linux.by https://forum.linux.by/ |
|
не могу доделать скрипт https://forum.linux.by/viewtopic.php?f=6&t=11195 |
Страница 1 из 1 |
Автор: | svgu [ 27 дек 2010, 22:53 ] |
Заголовок сообщения: | не могу доделать скрипт |
Здравствуйте. Есть такая задача: написать скрипт, в котором надо сперва найти фалы с атрибутом исполняемых, используя пути указанные в переменной PATH. Затем в этих файлах надо посчитать количество команд "for" и отправить преподавателю сообщение с результатами. Первая часть работоспособна. Конец скрипта вроде нормальный, середина тормозит... точнее у меня уже голова тормозит ![]() пока получился такой полуфабрикат ![]() find `echo $PATH | sed 's/:/ /g'` -executable -type f | egrep -for .......не знаю как....... | write prepod /dev/ttyXX (где XX ? номер терминала.) может ли кто-то подсказать что должно быть в средине? |
Автор: | leave [ 27 дек 2010, 23:31 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
Вам поможет man wc |
Автор: | svgu [ 28 дек 2010, 00:01 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
leave, спасибо. |
Автор: | leikind [ 28 дек 2010, 00:21 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
У меня получилось вот так: Код: find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx | xargs grep for | wc -l Работает под OS X и Debian. А вот флаг -executable find'ы на вышеуказанных OS не понимают. Правда, вот загвоздка - а что если for встречается 2 раза в строке... Надо подумать |
Автор: | leikind [ 28 дек 2010, 00:42 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
Вот: Код: find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx | xargs grep for | sed -n "s/for/\\`echo -e '\nfor'`/gp" | grep for | wc -l sed разделит "for for" на "for\n for\n" |
Автор: | svgu [ 28 дек 2010, 12:51 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
leikind, спасибо вам большое, работает и под Kuвunто ![]() интересно что при поиске в последнем варианте выдаёт число найденных for меньшее чем в первом на несколько сотен ![]() видимо дублируемые for в этом случае не считаются. |
Автор: | leikind [ 28 дек 2010, 19:57 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
Странно, у меня во втором случае их больше : Код: leikind:~$ find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx 2> /dev/null | xargs grep for | wc -l 31409 leikind:~$ find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx 2> /dev/null | xargs grep for | sed -n "s/for/\\`echo -e '\nfor'`/gp" | grep for | wc -l 34070 Неплохо бы ешё не искать в бинарных файлах ![]() |
Автор: | svgu [ 28 дек 2010, 23:38 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
leikind, скажите, а что за опция "-o" в -perm -o+rx ? для исполнения вроде должны быть права на чтение и запуск только? +rx и что за поток отправляется в ничто???? |
Автор: | leikind [ 29 дек 2010, 00:56 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
У -perm есть несколько форматов, например, Код: -perm /mode Код: -perm -mode или Код: -perm mode то есть Код: -perm -o+rx нужно рассматривать какКод: -perm -(o+rx) Ну а o+rx, это как в chmod u (user), g (group), и o (others), то есть o - это все. R и W для всех.http://unixhelp.ed.ac.uk/CGI/man-cgi?find , искать пример find . -perm -g+w,u+w 2> это перенаправление потока STDERR Код: some_command > stdout.txt 2> stderr.txt Можно кстати перенаправить STDERR в STDOUT: Код: ls i-dont-exist 2>&1 или наоборот Код: echo hello baby 1>&2
|
Автор: | svgu [ 29 дек 2010, 18:02 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
кто может подсказать что здесь сделано неправильно и почему при отправке на собственный почтовый ящик я ничего не получаю, хотя и сообщения об ошибке консоль не выдаёт? find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx | xargs grep for | wc –l | mail -s "Вывод команды" pupkin@mail.ru |
Автор: | Berserker [ 31 дек 2010, 00:24 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
неправильно настроен почтовый сервер (не думаю, что настройка MTA это часть твой лабораторной работы). Смотри ошибки в /var/log/mail* /var/log/exim*/main* |
Автор: | svgu [ 31 дек 2010, 10:42 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
прямое попадание ![]() Mail version 8.1.2 01/15/2001. Type ? for help. "/var/mail/valiko": 15 messages 15 new >N 1 Mailer-Daemon@kub Wed Dec 29 20:43 37/1194 Mail delivery failed: returning message to sender я уже смотрел пишет: var/mail/valiko Mail delivery failed: returning message to sender From: Mail Delivery System <Mailer-Daemon@kub> To: valiko@kub Date: Yesterday 20:43:05 This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: svgu@ukr.net Mailing to remote domains not supported ------ This is a copy of the message, including all the headers. ------ Return-path: <valiko@kub> Received: from valiko by Kub with local (Exim 4.69) (envelope-from <valiko@kub>) id 1PY0zJ-0002lh-5s for svgu@ukr.net; Wed, 29 Dec 2010 20:43:05 +0200 To: svgu@ukr.net Subject: Вывод команды Message-Id: <E1PY0zJ-0002lh-5s@Kub> Mailing to remote domains not supported вытекает логический вопрос: раз отправка на удалённые домены не поддерживается, то как её запустить чтобы она поддерживалась? |
Автор: | Berserker [ 31 дек 2010, 16:03 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
ага, Mailing to remote domains not supported dpkg-reconfigure exim4-config в первом экране выбери internet station или типа того (1й пункт) |
Автор: | svgu [ 31 дек 2010, 19:00 ] |
Заголовок сообщения: | Re: не могу доделать скрипт |
уже конфигурирую ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |