[Comm] test -d on directory with space in name

Vitaly Ostanin =?iso-8859-1?q?vyt_=CE=C1_vzljot=2Eru?=
Ср Дек 13 13:36:24 MSK 2006


Dmitry V. Levin пишет:
> Hi,
> 
> On Wed, Dec 06, 2006 at 03:40:04PM +0300, Vitaly Ostanin wrote:
>> Здравствуйте.
>>
>> Скажите, где я тупой, а?
> 
> Не все пробельные символы одинаковые.
> 
>> В этом скрипте не выполняется проверка [ -d "$FILE" ], если в
>> имени $FILE есть пробелы.
> 
> Табуляция там, а не пробелы.

На экране да, но почему тогда работает "cut -d ' '" ?

Вывод "du" не может меняться в зависимости от того, куда он
направлен? Такая мысль пришла в голову по аналогии с разницей
вывода "ls" (в несколько столбцов) и "ls | less" (в один столбец)

>> #!/bin/sh
>>
>> do_du()
>> {
>>     du -sbx * | sort -rn | while read f;
>       du -sbx * | sort -rn | while read size FILE;

Спасибо, про несколько name у read не знал. Можно адаптировать и так:
du -sbx0 * | sort -rnz | while read -d '\0' size FILE;

А затык был именно в "cd -", спасибо ещё раз.

>>     do
>>       echo $f
> 	echo "$size $FILE"
>>       FILE=`echo $f | cut -d ' ' -f2-`
> 	это не нужно
>>       if [ -d "$FILE" ]; then
>>         echo "^^^dir^^^"
>>         cd "$FILE"
>>         do_du
> 	  cd -
>>       fi
>>     done
>> }
>>
>> do_du
> 
> Имейте в виду, этот скрипт нельзя запускать в недоверенных каталогах,
> он там может заблудиться.

Даже realpath не поможет?

<skipped/>

-- 
Regards, Vyt
mailto:  vyt на vzljot.ru
JID:     vyt на vzljot.ru

----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 252 байтов
Описание: OpenPGP digital signature
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20061213/2a855282/attachment-0003.bin>


Подробная информация о списке рассылки community