1

Здравствуйте.
Есть такая задача, в которой надо найти фалы с атрибутом исполняемых, используя пути указанные в переменной PATH.

через find у меня не получается ни то не другое.
например, если find /  -perm  ххх  то число определяющее что файл исполняемый может быть любым: от 777
до 100 в конце концов.
Какие ещё есть варианты, кто подскажет?

2

какие тут могут быть варианты?

find `echo $PATH | sed 's/:/ /g'` -executable -type f -ls
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

3

igor17 пишет:

до 100 в конце концов.

не, 100 не исполняемый. Вы ищете в $PATH, а там файлы только рута. Но вы-же не рут! Потому 100 - НЕ исполняемый.
да. писать надо так: -perm +x, и не забудьте - у каталогов флаг x имеет иной смысл.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

4 (23.12.2010 23:53:51 отредактировано igor17)

спасибо, только на команду
find `echo $PATH | sed 's/:/ /g'` -executable -type f -ls
выдаёт сообщение об ошибке:
find: invalid predicate `-executable'

счас попробую через -perm +x

5

igor17 пишет:

find: invalid predicate `-executable'

обновите find до версии 4.3.0

find `echo $PATH | sed 's/:/ /g'` +perm +x -type f -ls

но это немного не то: надо проверить чей файл, и если наш проверять u+x, если нашей группы g+x, и если чужой o+g. Впрочем, и так пойдёт наверное.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

6

спасибо большое вроде заработало.
Скажите а как обновить find . 
Я в Лине новичёк ещё недели нет.
Стоит Kubuntu.

7

igor17 пишет:

Я в Лине новичёк ещё недели нет.
Стоит Kubuntu.

вот это не ко мне.  ac
а что пишет find --version ?
и наверное uname -a

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

8

GNU find version 4.2.31
Linux Lin 2.6.22-14

9

igor17, это очень старая ОС, проще всего её заново поставить...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

10

drBatty,  спасибо, установка новейшей версии многое изменила
(к лучшему ab)

11 (27.12.2010 14:11:30 отредактировано igor17)

drBatty, вы могли бы мне объяснить, что значит эта часть программы :

sed 's/:/ /g'`

12 (27.12.2010 14:40:16 отредактировано igor17)

видимо она каким-то образом заменяет двоеточия на пробелы.... ?

13

igor17 пишет:

sed 's/:/ /g'`

я об этом целую книгу напейсал

Но тут просто: в $PATH пути записаны через двоеточие, а для find они задаются через пробелы. Вот я и поменял двоеточия на пробелы.
попробуйте

 Консоль:
$ echo "A:B:C" | sed 's/:/ /g'

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

14

igor17 пишет:

видимо она каким-то образом заменяет двоеточия на пробелы.... ?

глобальным  smile

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

15 (28.12.2010 12:44:17 отредактировано igor17)

спасибо уже читаю ab

16

drBatty,
скажите пожалуйста а штрих ` после модификатора /g'`служит для
передачи данных дальше для обработки и  продолжение выполнения скрипта?

17 (30.12.2010 13:31:09 отредактировано igor17)

при запуске скрипта сообщений об ошибках нет, но и на мою почту (естественно не эту ab)
ничего не приходит.
Видно где-то нахомутал.  Вопрос в том, где?

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

18

Попробывал у меня всё норм правда на gmail отправлял.

19

tmp13,  и число посчитанное пришло?

20 (30.12.2010 16:07:08 отредактировано tmp13)

 Консоль:
find `echo $PATH | sed 's/:/ /g'`  -type f -perm -o+rx | xargs grep for|wc -l
9262

аа
да всё пришло.

21

igor17 пишет:

скажите пожалуйста а штрих ` после модификатора /g'`служит для
передачи данных дальше для обработки и  продолжение выполнения скрипта?

Это башизм.

 Консоль:
doc@dt:/$ echo ls
ls
doc@dt:/$ echo `ls`
bin/ boot/ dev/ etc/ home/ lib/ lost+found/ media/ mnt/ opt/ proc/ root/ sbin/ srv/ sys/ tmp/ usr/ var/

без штрихов просто выводится строка, а с штрихами, сначала выполняется, а потом то, что получилось, выводится (в данном примере).
Есть аналог:
 Консоль:
doc@dt:/$ echo $(ls)
bin/ boot/ dev/ etc/ home/ lib/ lost+found/ media/ mnt/ opt/ proc/ root/ sbin/ srv/ sys/ tmp/ usr/ var/

Он допускает вложенность.

Да, это не `штрих`, а открывающая одиночная кавычка. Есть ещё 'закрывающая'.

igor17 пишет:

Видно где-то нахомутал.  Вопрос в том, где?

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

без "mail ...."  работает?
просто echo "test" | mail -s "test" aaa@example.org
работает?
Что такое mail (наверняка ведь псевдоним какой-то!)
Вот как у меня:

 Консоль:
doc@dt:/$ which mail
/usr/bin/mail
doc@dt:/$ file /usr/bin/mail
/usr/bin/mail: symbolic link to `mailx'
doc@dt:/$ which mailx
/usr/bin/mailx
doc@dt:/$ file /usr/bin/mailx
/usr/bin/mailx: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped

Читать ман полезно, но сдаётся, что вы читаете НЕ ТОТ ман. А если вы ищете в Сети информацию - то вообще гибло.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

22

просто echo "test" | mail -s "test" aaa@example.org

не работает, я не получаю никаких сообщений ни на один ящик.

23

igor17 пишет:

не работает, я не получаю никаких сообщений ни на один ящик.

что в логах? настроили утилиту mail? вы её хотя-бы НАШЛИ???  oO

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

24

Вставлю своё слово
2igor17 в спаме смотрели?=)))

25

igor17 пишет:

просто echo "test" | mail -s "test" aaa@example.org

не работает, я не получаю никаких сообщений ни на один ящик.

у вас MTA установлен какой нибудь?

26 (30.12.2010 20:08:46 отредактировано igor17)

конечно установлен.  в спаме конечно смотрел.

Возможно всё из-за того, что моя Кубунту - виртуальная машина.

Но инет на ней есть, и МТА устанавливалась - я сам видел.


кажется понимаю: внутренняя служба почты не настроена:

mail delivery Syst  30.12  37/1170 Mail delivery failed: returning mess - 9 сообщений о неудачной отправке

и возврате сообщений, Но зато дело не в программе!  smile

27

на что у вас ссылается команда mail?

28

лезу смотреть ab

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>
From: valiko <valiko@kub>
Date: Wed, 29 Dec 2010 20:43:05 +0200

29

odin пишет:

у вас MTA установлен какой нибудь?

был-бы не установлен, было-бы command not found. Не?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

30

да, было время когда так и было: command not found.


Но это давно исправлено ab

сейчас выглядит так:


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
N  2 Mailer-Daemon@kub  Wed Dec 29 20:44   37/1178  Mail delivery failed: returning message to sender
N  3 Mailer-Daemon@kub  Wed Dec 29 20:46 1285/107787 Mail delivery failed: returning message to sender
N  4 Mailer-Daemon@kub  Wed Dec 29 20:51   42/1215  Mail delivery failed: returning message to sender
N  5 Mailer-Daemon@kub  Thu Dec 30 14:40   38/1195  Mail delivery failed: returning message to sender