The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Скрипт для очистки корзины, !*! aleks2, 03-Авг-12, 09:41  [смотреть все]
Подскажите пожалуйста на чем написан этот скрипт?
Хочу разобраться что он делает. Если не сложно то объясните плиз что именно делает этот скрипт.


Скрипт recycle.clear:
--------------------------------------------------------------
#!/bin/bash

range=`find -L /data3/ -type d -mindepth 1 -maxdepth 1 -noleaf`
for dir in $range;
do
     if [ -d $dir/.recycle ]; then
     find -L $dir/.recycle -mindepth 1 -type f -atime +7 -noleaf -exec rm -f {} \;
     find -L $dir/.recycle -mindepth 1 -type d -depth -empty -noleaf -exec rmdir --ignore-fail-on-non-empty {} \;
     fi
done
--------------------------------------------------------------

  • Скрипт для очистки корзины, !*! Pahanivo, 13:16 , 03-Авг-12 (1)
    > Подскажите пожалуйста на чем написан этот скрипт?
    > Хочу разобраться что он делает. Если не сложно то объясните плиз что
    > именно делает этот скрипт.
    > Скрипт recycle.clear:
    > --------------------------------------------------------------
    > #!/bin/bash
    > range=`find -L /data3/ -type d -mindepth 1 -maxdepth 1 -noleaf`

    ищет диры, `man find` ответит на вопрос какие именно
    > for dir in $range;

    цикл по списку найденый диров
    > do
    >      if [ -d $dir/.recycle ]; then
    >      find -L $dir/.recycle -mindepth 1 -type f
    > -atime +7 -noleaf -exec rm -f {} \;

    ищет и грохает внутри дира
    >      find -L $dir/.recycle -mindepth 1 -type d
    > -depth -empty -noleaf -exec rmdir --ignore-fail-on-non-empty {} \;

    аналогично
    >      fi
    > done

    конец цикла
    > --------------------------------------------------------------

    • Скрипт для очистки корзины, !*! XoRe, 13:47 , 03-Авг-12 (2)
      Скрипт написан на sh/bash - тоже самое, что *.bat/*.cmd в windows.

      Используется команда find.
      Вот русская документация по ней:
      http://citforum.ru/operating_systems/manpages/FIND.1.shtml

      • Скрипт для очистки корзины, !*! aleks2, 17:12 , 07-Авг-12 (3)
        range - создает какой то список?
        • Скрипт для очистки корзины, !*! Af., 21:32 , 07-Авг-12 (4)
          > range - создает какой то список?

          Это переменная. В неё записывается вывод команды
          find -L /data3/ -type d -mindepth 1 -maxdepth 1 -noleaf

          Два символа ` (там, где буква ё на клавиатуре, это важно) означают вызов команды заключённой между них.  Синоним этого варианта апострофов (есть ещё другой, с другим смыслом, там где буква э) будет конструкция $(команда). Сам скрипт выполняется в оболочке Bash (#!/bin/bash прямо на это указывает), что не мешает ему быть написанным на языке оболочки Sh.

          Про конструции типа [ -d имя ] и подобные см. man test. Одинарные квадр. скобки это синоним вызова test.

          Cтрока "for dir in $range" разворачивается так: значение range разворачивается в набор "слов" разделённых Internal Field Separator, переменной dir по очереди присваивается каждое из полученных слов, для каждого очередного значения dir выполняется тело цикла. Кстати, в той форме, как строка написана, скрывается засада - см. что есть Internal Field Separator, как Bash интерпретирует концы строк в случае оператора for, и как это соотносится с содержимым range.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру