The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Скрипт для очистки корзины"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Языки программирования)
Изначальное сообщение [ Отслеживать ]

"Скрипт для очистки корзины"  +/
Сообщение от aleks2 (ok) on 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
--------------------------------------------------------------

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Скрипт для очистки корзины"  +/
Сообщение от Pahanivo (ok) on 03-Авг-12, 13:16 
> Подскажите пожалуйста на чем написан этот скрипт?
> Хочу разобраться что он делает. Если не сложно то объясните плиз что
> именно делает этот скрипт.
> Скрипт 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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Скрипт для очистки корзины"  +/
Сообщение от aleks2 (ok) on 07-Авг-12, 17:12 
range - создает какой то список?
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Скрипт для очистки корзины"  +/
Сообщение от Af. on 07-Авг-12, 21:32 
> 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.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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