Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#15| Dragon God
Demon's Souls |#14| Flamelurker
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Сэйдж Рас Весь текст 822.4 Kb

Приемы профессиональной работы в Unix

Предыдущая страница Следующая страница
1 ... 13 14 15 16 17 18 19  20 21 22 23 24 25 26 ... 71
            Еще одна область,  где могут быть произведены изменения - это  уп-
       равление  правами доступа к файлам.  Как объяснялось ранее,  значение 0
       для umask делает все права такими,  что они разрешают запись.  Если это
       вам не подходит, оператор find может быть изменен так, что будет произ-
       водиться выборочное копирование (и изменение прав доступа).
            Предположим, например, вы имеете каталог с двумя файлами. Если вы-
       полнился оператор "find /dir -print", список файлов будет таким:
        /dir
        /dir/file1
        /dir/file2
            Обратите внимание,  что имя каталога появляется  первым.  Проблема
       возникает,  если имя каталога не принадлежит вам или вы не имеете права
       записи.  Происходит следующее: имя каталога копируется первым, устанав-
       ливаются  права  доступа  (блокируя вас) и после этого file1 и file2 не
       могут быть скопированы в каталог dir. В cptdir мы применяем решение из-
       менить umask так,  чтобы вы всегда имели права записи.  Это своего рода
       клудж, но он работает.
            Другой путь  -  это  изменить оператор find.  Выполнение оператора
       "find /dir -depth -print" сгенерирует такой список файлов:
        /dir/file1
        /dir/file2
        /dir
            Обратите внимание,  что имя каталога стоит ПОСЛЕДНИМ! Это правиль-
       но.  Ключ -depth переворачивает список файлов так, что имя каталога пе-
       чатается последним.
            Что это дает? Фокус в том, что сначала копируются file1 и file2, а
       затем устанавливаются права доступа данного  каталога.  Вы  можете  за-
       писать файлы в каталог,  для которого вы не имеете права записи. Благо-
       даря тому,  что файлы копируются первыми,  вы можете не беспокоиться  о
       том,  какого рода права доступа имеет этот каталог.  К сожалению,  ключ
       -depth команды find поддерживается не всеми версиями системы UNIX.

            3.2.2. can - удаление файлов в "мусорную корзину"

---------------------------------------------------------------------------

        Имя: can
______________________________________________________________________
        can        Управление "мусорной корзиной" файлов

     НАЗНАЧЕНИЕ

            Перемещает файлы в "мусорную корзину",  симулируя их удаление. Это
       допускает восстановление файлов после их кажущегося удаления.
        Формат вызова
        can [-l] [-r] file [file ...]
        Пример вызова
        can junk       Посылает файл junk в "мусорную корзину"
        Исходный код для can
1  :
2  # @(#) can v1.0  Maintain file trash can  Author: Russ Sage

4  CAN=$HOME/.trashcan

6  if [ ! -d $CAN ]
7    then mkdir $CAN
8  fi

10 if [ "`echo \"$1\"|cut -c1`" = "-" ]
11   then case $1 in
12        -l)    echo "$CAN:"
13               ls -al $CAN
14               exit 0;;
15        -r)    echo "removing $CAN/*:"
16               rm -rf $CAN/*
17               exit 0;;
18        -z|-?) echo "usage can [-l] [-r] file [file ...]" >&2
19               exit 0;;
20        esac
21 fi

23 mv $@ $CAN

            Переменные среды выполнения

        CAN       Положение каталога "мусорной корзины"
        HOME      Положение вашего регистрационного каталога

        Описание
        Зачем нам нужен can?

            По большому счету система UNIX,  при всем ее великолепии, является
       просто структурой для накопления и манипулирования  данными  в  файлах.
       Как  мы отмечали раньше,  эта система включает сотни файлов.  Некоторые
       файлы вы желаете хранить неопределенно долго,  в то  время  как  другие
       отслужили свое и создают беспорядок на диске.  К несчастью,  легко выб-
       росить то,  что в действительности вы хотели сохранить.  Команду rm со-
       вершенно  не  украшает то,  что она является печью для сжигания мусора:
       бросьте что-нибудь в нее и оно пропадет (если только вы не  имеете  ко-
       пии,  а  восстановление  копии - это трудоемкая работа).  Вот несколько
       классических примеров неверного применения команды rm:
            rm * /tmp <-- Удалить все файлы в каталоге /tmp
            Мы хотели сказать rm /tmp/*,  а на самом  деле  произошло  сначала
       удаление всех файлов в текущем каталоге,  а затем попытка удалить /tmp.
       Последнее будет безуспешным,  поскольку tmp - это каталог. В результате
       мы удалили все,  что хотели сохранить, и сохранили все, что хотели уда-
       лить!  Этот синтаксис похож на другие операторы  UNIX,  вроде  "grep  *
       file": противная ошибка.
        rm -rf / tmp  <-- Удалить каталог tmp со всеми файлами
            Мы хотели  сказать rm -rf /tmp,  но нечаянно вставили пробел в ко-
       манду.  На самом деле удалятся ВСЕ файлы во всей системе (если мы дадим
       команде выполняться достаточно долго),  потому что мы сказали UNIX уда-
       лить корневой каталог и всех его потомков! Вы должны быть внимательны с
       командой rm.  Если покажется,  что что-то не так,  удалите эту команду.
       Она может погубить вас.
            Одна такая ошибка может испортить вам целый день.  После того, как
       это случится,  вы станете осторожным на некоторое время, потом внимание
       ослабнет.  Если вы не будете бдительным, ошибки вернутся, чтобы пресле-
       довать вас.
            Для нас "мусорная корзина" более желательна, чем печь для сжигания
       "мусора".  Используя этот путь,  вы можете вернуться и восстановить то,
       что  вы выбросили по ошибке.  Вы также хотели бы контролировать,  когда
       появится мусоросборщик,  захватит и окончательно удалит "мусор". Вы мо-
       жете периодически просматривать содержимое "мусорной корзины",  а затем
       очищать корзину, когда вы уверены, что вы не хотите ничего в ней сохра-
       нять.  Нельзя допускать,  чтобы корзина была слишком заполнена,  потому
       что она занимает дисковое пространство.

            Что делает can?

            Командный файл can предназначен для управления "мусорной корзиной"
       ваших файлов.  Используя утилиту, вы можете свести к минимуму случайные
       потери во время работы и даже впоследствии  восстанавливать  файлы  при
       необходимости.
            Can не только помещает ваши файлы в "мусорную корзину", но и пока-
       зывает вам,  что в ней в настоящее время находится и очищает ее,  когда
       вы этого хотите.
            Can распознает только ключи -l и -r. Ключ -l показывает, что нахо-
       дится в "мусорной корзине",  а -r удаляет все ее содержимое. Запомните,
       что  если  вы  что-то удалили из "мусорной корзины",  вы не сможете его
       восстановить.
            Процесс помещения файлов в "мусорную корзину" выполняется командой
       mv. Ключи, предназначенные для can, должны быть первым аргументам в ко-
       мандной строке.  Если вы желаете передать ключи команде mv, то их можно
       поместить в любом месте командной строки.  Единственные  ключи,  дающие
       синтаксическую подсказку,  - это -z и -?. Их предназначение - быть фла-
       гами только для обработки ошибок.  Благодаря наличию специальных флагов
       обработки ошибок,  выдающих справочную (help) информацию, ключи команды
       mv, как и ключи can, можно помещать первыми в командной строке, не ока-
       зывая влияния на can.  Если вы создаете ваши командные файлы так, чтобы
       эти ключи всегда выдавали информацию об использовании (т.е.  никогда не
       были "настоящими" ключами), то вы имеете хороший способ получения помо-
       щи по синтаксису. Многие (но, увы, не все) стандартные команды UNIX да-
       ют по ключам -z или -? подсказку об использовании и это полезно помнить
       всякий раз, когда вы попали в тупик.
            Если can не получает никаких ключей,  действие по умолчанию заклю-
       чается в пересылке всех указанных файлов в "мусорную  корзину",  разме-
       щенную  в  вашем  регистрационном  каталоге под именем $HOME/.trashcan.
       Если этот каталог отсутствует,  он автоматически создается  при  первом
       выполнении  командного файла can.  Это позволяет вам запускать команду,
       не указывая специального положения "корзины".  Если вы применяете  ключ
       -r, файлы в "мусорной корзине" будут удалены, а сама она нет.
            Примеры
        1.   $ can *.c
            Перемещает все файлы, которые оканчиваются на .c, в "мусорную кор-
       зину".
        2.   $ can -l
            Выдает список  всех файлов,  размещенных сейчас в "мусорной корзи-
       не".
        3.   $ can -r
            Удаляет все файлы из "мусорной корзины".
        4.   $ can -q *
            Передает ключ -q команде mv.  Поскольку это недопустимый ключ  ко-
       манды mv, она выдает сообщение об ошибке и завершается.
            Пояснения
            Строка 4  устанавливает  место  "мусорной корзины" так,  чтобы она
       размещалась в вашем регистрационном каталоге под именем .trashcan.  За-
       метьте,  что ее именование,  начиная с точки, делает ее нераспечатывае-
       мым,  или скрытым файлом.  Единственный способ увидеть  такие  файлы  -
       использовать ключ -a в команде ls.
            Строки 6-8 проверяют, определен ли сейчас каталог "мусорной корзи-
       ны".  Если нет, он создается. Обратите внимание, что поскольку его соз-
       даете вы,  он имеет такие права доступа на чтение и запись, как в вашем
       регистрационном каталоге.
            Строки 10-21 проверяют,  начинается ли первый позиционный параметр
       с черточки (-). Если такой параметр обнаружен, проверяется, является ли
       он ключом командного файла can (-l,  -r, -z или -?). Обратите внимание,
       что  для  того,  чтобы для использования двойных кавычек внутри двойных
       кавычек (строка 10),  вы должны экранировать кавычки.  Символ  обратной
       косой черты (\) использован именно для этой цели.
            Если указан  ключ  -l,  выдается  напоминание  об  имени  каталога
       "мусорной корзины", команда ls выводит список файлов в "мусорной корзи-
       не" и процедура can завершается,  поскольку требовалось только  вывести
       список.
            Если указан ключ -r,  выдается сообщение об имени каталога очищае-
       мой "мусорной корзины" и файлы в ней удаляются командой rm.  Это разру-
       шительная вещь и удаляет ваши файлы навсегда. После удаления can завер-
       шает работу.  Вы можете дополнить программу процедуры так, чтобы давать
       подтверждение перед выполнением команды, если это позволит вам чувство-
       вать себя более спокойно.
            Если указан ключ -z или -?,  выдается подсказка об использовании и
       can завершается. Это не совсем хорошо, но мы не можем использовать сим-
       вол *,  соответствующий любому другому ключу, поскольку ключ может быть
       предназначен для команды mv, а не для can. Благодаря использованию все-
       го двух аргументов для обработки ошибок,  мы можем  разрешить  передачу
       всех  остальных аргументов.  Если ключ не является одним из ключей can,
       или одним из указанных ключей обработки ошибок, то он передается коман-
       де  mv.  Если ключ недопустим для этой команды,  команда mv выдает свое
       сообщение об ошибке и завершает работу. Вы можете, естественно, модифи-
       цировать командный файл так,  чтобы он проверял допустимость ключей ко-
       манды mv на "внешнем" уровне. Тогда он может выдать сообщение об ошибке
       и  завершиться,  если указанный ключ недопустим ни для can,  ни для mv.
       Вопрос в том,  стоит ли платить за более полный контроль над обработкой
       ошибок ценой разбухания программы и временем исполнения.
            Строка 23 выполняет собственно перемещение файлов в "мусорную кор-
       зину".  Заметьте,  что  это  выполняется только если не указаны никакие
       ключи can,  поскольку это поведение can,  принятое по умолчанию.  Здесь
Предыдущая страница Следующая страница
1 ... 13 14 15 16 17 18 19  20 21 22 23 24 25 26 ... 71
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (52)

Реклама