Официальный сайт студ.городка НГТУ
Software » cd - 

#1  20.08.06 12:24

asp
Профиль

cd -

Требуется перейти в папку "-". Как?
В баше обрабатываются папки и файлы, в рекурсии. Как только встречается папка, начинающаяся на "минус" или просто "-", так cd начинает ругаться. Попробовал с консоли перейти в эту папку по cd - тоже ругается :) (хорошо, хоть, не перешел, а то крышу б напрочь сорвало). Вопрос - как правильно записать команду cd в следующем коде:

Код: bash:

for i in `ls -1`;
do
    if [ -d $i ]; then
        echo Chmoding folder: $i
        chmod 775 $i
        echo ***Enter folder: $i***
        cd $i
        for j in `ls -1`;
        do
#           echo Chmoding: $j
            chmod 664 $j
        done
        /home/fixw
        cd ..
        echo ***Exit folder: $i***
    fi
done

Offline

#2  21.08.06 00:35

Re: cd -

таки стоит взять имя в кавычки, нэ? %)

Offline

#3  21.08.06 01:38

asp
Профиль

Re: cd -

Legioner, нэ... нэ канаэ... :(

Offline

#4  21.08.06 10:10

Re: cd -

asp, ты осуществляешь переход в папку из текущей директории...

вот мой маленький скрипт, который заходит спокойно в папки с именами, начинающихся с минуса:

Код: bash:

#!/bin/bash
 
 
func ()
{
    cd ./"$1"
 
    for i in *
    do
        [ -d "$i" -a -r "$i" ] && echo "-> $i" && func "$i"
    done
 
    for i in .*
    do
        [ -d "$i" -a -r "$i" ] && [ "$i" != "." -a "$i" != ".." ] && echo "-> $i" && func "$i"
    done
    cd ..
}
 
 
func "$1"


т.е. главное указать явно ./
ну, и в кавычки все же стоит взять, т.к. имена папок могут содержать и пробелы

P.S. добавил еще перебор "скрытых" папок
P.P.S. @Роман Петров: ниче, что я так нагло ответы к заданиям выкладываю? :)

Исправлено Jaguar (21.08.06 10:27)

Offline

#5  21.08.06 10:33

Re: cd -

asp написал(а):

chmod 664 $j

кстати, это ты для файлов выставляешь? если да, то ты делай проверку того, что это именно файл...

Код: bash:

[ -f "$j" ] && chmod 664 ./"$j"

Исправлено Jaguar (21.08.06 10:34)

Offline

#6  21.08.06 10:54

asp
Профиль

Re: cd -

Jaguar написал(а):

это ты для файлов выставляешь?

А если папка, то он

Код: bash:

chmod 775 $i

и в нее зайдет :)

Исправлено asp (21.08.06 10:56)

Offline

#7  21.08.06 13:48

Re: cd -

хм... ну, у тебя тут далеко не рекурсия...
логика ствоего скрипта следующая:
1. бирется список файлов и папок в текущей директории
2. в цикле ты проходишь этот список и заходишь только в папки (файлы текущей директории не обрабатываются)
3. выставляешь для папок текущей директории права 775 и заходишь в каждую по очереди
4. как только заходишь в папку (см. п.3) получаешь список файлов и папок в ней и выставляешь для всего (заметь, для ВСЕГО) права 664
5. выполняется /home/fixw (наверное какой-то скрипт или программа)
6. выходишь из папки (см. п.3)

как быть с теми папками, что в других папках? т.е. у тебя получается всего на два уровня скрипт работает... тот скрипт, что я дал, проходит по всему дереву каталогов... дописать туда действия и проверки дополнительные и все... и это настоящая рекурсия, а не двойной цикл, который ты назвал "рекурсией"

Исправлено Jaguar (21.08.06 13:51)

Offline

#8  21.08.06 19:07

asp
Профиль

Re: cd -

Согласен с тем, что лишнее действие 664 права на все, но они все равно фиксятся 775 для папок. Скриптик этот - он и есть. То естЬ, он вызывает сам себя. Рекурсивный вызов.

Offline

#9  21.08.06 23:02

asp
Профиль

Re: cd -

Jaguar написал(а):

P.P.S. @Роман Петров: ниче, что...

5 баллов! :)))))))))) Не сказал бы - половина бы и не догодалась ;)

Offline

Software » cd - 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.051 сек.
Выполнено 11 запросов.