Статьи Галерея Форум Чат Файлы HowTo Ссылки Поиск
Текущее время: 18 окт 2019, 15:55




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: не могу доделать скрипт
СообщениеДобавлено: 27 дек 2010, 22:53 
Заглянувший

У нас с: 27.12.2010
Сообщения: 8
Здравствуйте.
Есть такая задача: написать скрипт, в котором надо сперва найти фалы с атрибутом исполняемых, используя пути указанные в переменной PATH. Затем в этих файлах надо посчитать количество команд "for" и отправить преподавателю сообщение с результатами.
Первая часть работоспособна. Конец скрипта вроде нормальный, середина тормозит...
точнее у меня уже голова тормозит :(

пока получился такой полуфабрикат :)

find `echo $PATH | sed 's/:/ /g'` -executable -type f | egrep -for .......не знаю как....... | write prepod /dev/ttyXX
(где XX ? номер терминала.)

может ли кто-то подсказать что должно быть в средине?


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 27 дек 2010, 23:31 
Неотъемлемая часть форума

У нас с: 25.10.2006
Сообщения: 1055
Откуда: minsk
Вам поможет man wc


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 28 дек 2010, 00:01 
Заглянувший

У нас с: 27.12.2010
Сообщения: 8
leave, спасибо.


Последний раз редактировалось svgu 28 дек 2010, 13:56, всего редактировалось 1 раз.

Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 28 дек 2010, 00:21 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 20.06.2002
Сообщения: 827
Откуда: Брюссель
У меня получилось вот так:
Код:
   find `echo $PATH | sed 's/:/ /g'`  -type f -perm -o+rx | xargs grep for | wc -l


Работает под OS X и Debian. А вот флаг -executable find'ы на вышеуказанных OS не понимают.

Правда, вот загвоздка - а что если for встречается 2 раза в строке... Надо подумать

_________________
Изображение


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 28 дек 2010, 00:42 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 20.06.2002
Сообщения: 827
Откуда: Брюссель
Вот:

Код:
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"

_________________
Изображение


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 28 дек 2010, 12:51 
Заглянувший

У нас с: 27.12.2010
Сообщения: 8
leikind, спасибо вам большое, работает и под Kuвunто :)

интересно что при поиске в последнем варианте выдаёт число найденных for меньшее чем в первом на несколько сотен :?

видимо дублируемые for в этом случае не считаются.


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 28 дек 2010, 19:57 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 20.06.2002
Сообщения: 827
Откуда: Брюссель
Странно, у меня во втором случае их больше :

Код:
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


Неплохо бы ешё не искать в бинарных файлах :)

_________________
Изображение


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 28 дек 2010, 23:38 
Заглянувший

У нас с: 27.12.2010
Сообщения: 8
leikind, скажите, а что за опция "-o" в -perm -o+rx ?

для исполнения вроде должны быть права на чтение и запуск только? +rx

и что за поток отправляется в ничто????


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 29 дек 2010, 00:56 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 20.06.2002
Сообщения: 827
Откуда: Брюссель
У -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

_________________
Изображение


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 29 дек 2010, 18:02 
Заглянувший

У нас с: 27.12.2010
Сообщения: 8
кто может подсказать что здесь сделано неправильно и
почему при отправке на собственный почтовый ящик я ничего не получаю,
хотя и сообщения об ошибке консоль не выдаёт?


find `echo $PATH | sed 's/:/ /g'` -type f -perm -o+rx | xargs grep for | wc –l | mail -s "Вывод команды" pupkin@mail.ru


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 31 дек 2010, 00:24 
Неотъемлемая часть форума

У нас с: 23.04.2005
Сообщения: 279
Откуда: minsk
неправильно настроен почтовый сервер (не думаю, что настройка MTA это часть твой лабораторной работы). Смотри ошибки в /var/log/mail* /var/log/exim*/main*


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 31 дек 2010, 10:42 
Заглянувший

У нас с: 27.12.2010
Сообщения: 8
прямое попадание :)

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
вытекает логический вопрос: раз отправка на удалённые домены
не поддерживается, то как её запустить чтобы она поддерживалась?


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 31 дек 2010, 16:03 
Неотъемлемая часть форума

У нас с: 23.04.2005
Сообщения: 279
Откуда: minsk
ага, Mailing to remote domains not supported

dpkg-reconfigure exim4-config

в первом экране выбери internet station или типа того (1й пункт)


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: не могу доделать скрипт
СообщениеДобавлено: 31 дек 2010, 19:00 
Заглянувший

У нас с: 27.12.2010
Сообщения: 8
уже конфигурирую :)


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
[ All resources are available under GNU GPL ] [ Support ] [ Hosted by DataHata | MyCloud.by ] [ Powered by phpBB® Forum Software © phpBB Group ]

LVEE Winter LVEE Rambler's Top100