Главная страница


ru.unix

 
 - RU.UNIX ----------------------------------------------------------------------
 From : Vladimir Sharun                      2:5020/400     19 May 2000  13:15:53
 To : All
 Subject : Re: HeLP!!!!!!!!!!!
 -------------------------------------------------------------------------------- 
 
 Sevostianov wrote in message "HeLP!!!!!!!!!!!":
 
 >Я недалекий юзер ОС Unix, а меня напрягают написать Shell процедуру.
 >Для опытного человека я думаю написать цикл и пару команд в нем,
 >элементарная задача, так помогите же мне!!!!!!!
 >
 >Задача
 >В текущем каталоге найти все файлы с правом чтения и записи и вывести все
 >это на экран, если нет сообщить о их отсутствии!!!!
 
 С правом чтения и записи кем ? Owner, Group или Others ?
 Что выводить ? Hазвания файлов или их содержимое (нижепреведенный скрипт
 делает и то и то)
 
 >Если не трудно помогите, надо очень срочно!!
 >Зарание спасибо!!!
 
 Тут четкое правило нужно вроде...
 Если пофиг кем, но важно именно rw сразу хоть кем-то , то самое топорное
 решение:
 
 =============================>>>>>>>>>>>
 #!/bin/szsh
 case $ARGC in
     0) DIRNAME=$PWD ;;
     1) DIRNAME=$1 ;;
     *)  echo ' Too many parameters in command line (>1)'
   echo Usage: command [dir]. 
   echo WARNING! if dir specified, it must NOT end with '/' !!!
   exit 1 ;;
 esac
 test -d ${DIRNAME}
 case $?   in
     0)     
 NO_MATCHES=0
 ls -l $DIRNAME | while read LS_LINE
 #^^^^^^^ здеся надо править на find, если нужны пермишены rw для u,g или о.
 # man find
   do
       FD_PERM=`echo $LS_LINE | awk '{print $1}'`
   echo $FD_PERM | grep 'rw' > /dev/null
        case $? in
   1)  ;;
   0) 
   echo $FD_PERM | grep 'd' > /dev/null
    case $? in
    1)NO_MATCHES=1
       FILENAME=`echo $LS_LINE | awk '{print $9}'`
                  echo === Listing of $DIRNAME/$FILENAME ===
              cat $DIRNAME/$FILENAME
 # Если не нужен вывод содержимого, то строчку выше закомментировать.
       echo === End of $DIRNAME/$FILENAME ===
             ;;
    0)
      ;;
    esac
   ;;   
        esac
  done
  case $NO_MATCHES in
   0)  echo No RW matches found
   ;;
   esac
 ;;
 1) echo No such dir: $1
  exit 1
  ;;
 esac
 
 >>>>>>>>>>>>>=============================
 
 Кажися так.
 Вроде все возможные ошибки и коммандная строчка учтены.
 Если надо именно кого-то чекать (т.е. user, group, others) , тады надо не
 через ls, а через find
 man find
 
 PS: исполняющий шелл тут static zsh, хотя нужен любой шелл с поддержкой $ARGC
 Т.е. bash, tcsh, zsh - надо править заголовок (#!/bin/szsh) на продвинутый
 шелл в твоей системе.
 Скрипт возвращает 0 в случае успешного выполнения, 1 в противном случае.
 
 А если не сектрет: это че, зачет в школе такой ? 
 
 --
 WBR Vladimir Sharun
 mailto:sharun@univest-group.com
 --- ifmail v.2.15dev5
  * Origin: Univest Group (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 HeLP!!!!!!!!!!!   Sevostianov   19 May 2000 09:54:34 
 Re: HeLP!!!!!!!!!!!   Vladimir Sharun   19 May 2000 13:15:53 
 HeLP!!!!!!!!!!!   Sanyo Titaev   19 May 2000 19:29:48 
 Re: HeLP!!!!!!!!!!!   Eugene Crosser   20 May 2000 17:12:42 
Архивное /ru.unix/2080ab693112.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional