|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/2080ab693112.html, оценка из 5, голосов 10
|