Автор Гілка: Bash Скрипт  (Прочитано 3142 раз)

Відсутній Shellder

  • Новачок
  • *
  • дописів: 4
  • Карма: +0/-0
Bash Скрипт
« : 2010-01-25 04:13:58 »
Всім доброго дня!
Молодому студенту потрібна допомога!  :-[
Допоможіть написати скрипт який виконуватиме таку функцію:
Потрібно, щоб він відображав всі файли з вказаною маскою з вказаного каталогу, а також має відобразити власника файлу і його UID. Наприклад запит такий:

sh mask.sh /dir 000

Буду дуже вдячний!

Відсутній nickat

  • Письменник
  • *****
  • дописів: 587
  • Карма: +0/-0
  • Debian user
Re: Bash Скрипт
« Відповідей #1 : 2010-01-26 12:57:30 »
find знаходить файли з відповідною маскою у заданій директорії;
ls видає, поміж іншого, інформацію про власника;
cut відфільтровує непотрібні стовпці;
id видає UID.

Необхідні ключі знайдете у манах.

Для подальшого вивчення: info core utils, http://tldp.org/LDP/Bash-Beginners-Guide/html/
Best regards,
nickat

Відсутній Shellder

  • Новачок
  • *
  • дописів: 4
  • Карма: +0/-0
Re: Bash Скрипт
« Відповідей #2 : 2010-01-31 00:23:53 »
А можна якось конкретніше описати?Бо дуже потрібно, а я в тому "зелений".

r00t x

  • Гість
Re: Bash Скрипт
« Відповідей #3 : 2010-01-31 22:21:14 »
M.: Хоча я не ваш лікар, але за його відсутності змушений надати першу дозу.

Такі поради тут нікому не потрібні, чи Вас такого не вчили?
« Змінено: 2010-01-31 22:45:46 від Re. »

Відсутній nickat

  • Письменник
  • *****
  • дописів: 587
  • Карма: +0/-0
  • Debian user
Re: Bash Скрипт
« Відповідей #4 : 2010-02-01 03:48:51 »
А можна якось конкретніше описати?Бо дуже потрібно, а я в тому "зелений".

Ставте конкретні запитання, будуть конкретні відповіді.  Чи ви хочете, щоб хтось за вас цей скрипт написав?
Best regards,
nickat

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Bash Скрипт
« Відповідей #5 : 2010-02-02 16:50:50 »
А можна якось конкретніше описати?Бо дуже потрібно, а я в тому "зелений".

Ну як справжній невикладач першим ділом показую в який бік треба думати:
1) man find якщо не пощастило -- запасаємось англукраїнським словничком
2) визначаєм, що саме ми з нього хочем:
  а) знайти певні файли
  б) щось там про них надрукувати
3) формулюєм відповідну команду, набиваєм ґулі (без них - неможна, інакше то вже не навчання, а дідько зна що) і таки приходим до потрібного результату.
щоб знайти файли за маскою нам потрібно написати
find [dir] -name '<mask>'
директорію [dir] писати не обов'язково, адже якщо її ім'я не вказано -- find підставить "." (якщо запитаєте, що означає крапочка -- отримаєте по пальцях і вас брудно вилають  ;) )
далі дочитаєте до частини про -printf - знатимете, як описати потрібне.

У вашому випадку, якщо під ім'ям файл
у маєте на увазі шлях відносно данної директорії, команда буде така: find -nane '*' -printf "%p\t%u\t%U\n"
Якщо не зможете пояснити, чому зірочка взята в одинарні лапки --- кепські у вас справи  [smiley=evil.gif]
p.s. В команді умисне допустив помилку -- знайдіть і виправте, інакше -- кодером не станете :P
« Змінено: 2010-02-02 16:52:29 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній nickat

  • Письменник
  • *****
  • дописів: 587
  • Карма: +0/-0
  • Debian user
Re: Bash Скрипт
« Відповідей #6 : 2010-02-03 01:13:37 »
щоб знайти файли за маскою нам потрібно написати
find [dir] -name '<mask>'

Я думаю під маскою розуміється file mode mask (як в umask).  Але це теж до find.

P.S.: до -printf я ще ні разу не дочитував, засинав десь на 812 строчці :).  Виявляється все так просто...
« Змінено: 2010-02-03 01:14:35 від nickat »
Best regards,
nickat

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Bash Скрипт
« Відповідей #7 : 2010-02-03 15:41:34 »
Малася на увазі саме маска імені файлу
в оригіналі
Цитата
      -name pattern
              Base  of  file  name (the path with the leading directories removed) matches shell
              pattern pattern.  The metacharacters (‘*’, ‘?’, and ‘[]’) match a ‘.’ at the start
              of  the base name (this is a change in findutils-4.2.2; see section STANDARDS CON-
              FORMANCE below).  To ignore a directory and the files under it, use -prune; see an
              example in the description of -wholename.  Braces are not recognised as being spe-
              cial, despite the fact that some shells including Bash imbue braces with a special
              meaning in shell patterns.  The filename matching is performed with the use of the
              fnmatch(3) library function.   Don’t forget to enclose the pattern  in  quotes  in
              order to protect it from expansion by the shell.
« Змінено: 2010-02-03 15:42:23 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній nickat

  • Письменник
  • *****
  • дописів: 587
  • Карма: +0/-0
  • Debian user
Re: Bash Скрипт
« Відповідей #8 : 2010-02-03 15:52:06 »
Малася на увазі саме маска імені файлу в оригіналі

Тобто ті 000 у прикладі з першого посту -- маска файлу?  Мені ці нулі одразу file mode mask нагадали.
« Змінено: 2010-02-03 15:53:07 від nickat »
Best regards,
nickat

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Bash Скрипт
« Відповідей #9 : 2010-02-03 18:39:39 »
Біс його знає, якась дивна маска: всі права заборонено.
Треба молодого студента птати ;)
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній nickat

  • Письменник
  • *****
  • дописів: 587
  • Карма: +0/-0
  • Debian user
Re: Bash Скрипт
« Відповідей #10 : 2010-02-03 19:25:39 »
Біс його знає, якась дивна маска: всі права заборонено.
Це якщо по типу chmod, то все заборонено, а якщо по типу umask, то навпаки.  Але, здається, я ускладнюю.

Треба молодого студента птати ;)
Думаю, це завдання цікавить зараз лише нас двох.  Мабуть термін вийшов.  :)
Best regards,
nickat

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Bash Скрипт
« Відповідей #11 : 2010-02-04 14:04:51 »
Як термін вийшов?
В програмістів термін не виходить ніколи  :D

Треба студенту надавати по пальцях за непосидючість: пару раз бликнув перед шановним панством і сховався за "колоною" -- куди таке годиться?
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.