Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Помогите найти решение проблемы в скрипте.  (Прочитано 1389 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mation

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
У меня проблема следующего плана:

хочу использовать в скрипте следующую команду для предотвращения случайных удалений файлов
alias rm='rm -i'

Проблема в том, что когда я эту команду запускаю в командной строке, она работает корректно, а именно, при попытке удаления файла запрашивает подтверждение на удаление. В тоже время в скрипте не работает.

Скрипт следующего вида:

#! /bin/sh

`alias rm='rm -i'`

`rm -r /home/mation/test.txt`

После выполнения скрипта файл test.txt удалается без выдачи запроса на подтверждение удаления.

Может кто-нибудь сталкивался с такой проблемой?

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #1 : 21 Октября 2010, 20:40:52 »
Оформите код нормально:
#!/bin/bash

alias rm='rm -i'
rm -r /home/mation/test.txt
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн mation

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #2 : 21 Октября 2010, 20:51:38 »
Оформите код нормально:
#!/bin/bash

alias rm='rm -i'
rm -r /home/mation/test.txt

я так с самого начала пробовал
выдает следующее:

mation@mation-laptop:~$ bash /home/mation/test.sh
: команда не найдена: строка 2:
rm: невозможно удалить «/home/mation/test.txt\r»: Нет такого файла или каталога
: команда не найдена: строка 5:
: команда не найдена: строка 6:
: команда не найдена: строка 7:
: команда не найдена: строка 8:
mation@mation-laptop:~$


Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #3 : 21 Октября 2010, 20:55:27 »
сконвертируй концы строк из виндовых \r\n в никсовые \n. утилитой fromdos

Оффлайн mation

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #4 : 22 Октября 2010, 10:37:29 »
сконвертируй концы строк из виндовых \r\n в никсовые \n. утилитой fromdos

Спасибо, помогло.
Но проблема осталась нерешенной - файл удаляется без запроса на подтверждение удаления.

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #5 : 22 Октября 2010, 13:14:12 »
#!/bin/bash -i
Я конечно далек от мысли...(с)

Оффлайн mation

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #6 : 22 Октября 2010, 13:34:29 »
#!/bin/bash -i

Не могли бы Вы оставить комментарии, что имелось ввиду?

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #7 : 22 Октября 2010, 13:38:45 »
man bash
...
-i        If the -i option is present, the shell is interactive.
...
Извините, я все еще учусь

Оффлайн mation

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #8 : 22 Октября 2010, 15:23:48 »
man bash
...
-i        If the -i option is present, the shell is interactive.
...

Попробовал, все равно не помогает.

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
Re: Помогите найти решение проблемы в скрипте.
« Ответ #9 : 22 Октября 2010, 15:58:12 »
а зачем в скрипте использовать alias? что-то не могу понять где бы это было удобно и полезно.
чтоб добавить интерактивности добавь ключ -i непосредственно в твою команду удаления:
rm -ir /home/mation/test.txt

хотя, подозреваю что test.txt это у тебя файл а не каталог. зачем его удалять рекурсивно?..
Ubuntu, Gentoo, RHEL, AIX

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипт&
« Ответ #10 : 22 Октября 2010, 16:02:16 »
mation - что не помогает и что попробовал ?

#!/bin/bash -i

alias rm="rm -i"
[ -z "$RANDOM" ] && RANDOM=`dd if=/dev/urandom count=1 bs=4 2> /dev/null | hexdump -v -e '/1 "%02u" '`
files=$HOME/$RANDOM
: > $files

rm $files
« Последнее редактирование: 22 Октября 2010, 16:04:03 от smaharbA »
Я конечно далек от мысли...(с)

Оффлайн mation

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #11 : 22 Октября 2010, 16:59:02 »
а зачем в скрипте использовать alias? что-то не могу понять где бы это было удобно и полезно.
чтоб добавить интерактивности добавь ключ -i непосредственно в твою команду удаления:
rm -ir /home/mation/test.txt

хотя, подозреваю что test.txt это у тебя файл а не каталог. зачем его удалять рекурсивно?..

Смысл в следующем:
- я в Unix-ах новичок;
- надо написать скрипт, который выполняется под аккаунтом root
- прочитал, что новичкам советуют перед началом работы с правами root использовать alias (чтобы случайно что-нибудь не удалить)
- подумал, что было бы не лишним (исключительно для меня) перед начал отработки моего скрипта ставить что-либо подобное, чтобы скриптом чего лишнего не наделать.

P.S. Прошу строго не судить за мои дилетанские подходы, но ведь все мы когда-нибудь с чего-нибудь начинаем )))
« Последнее редактирование: 22 Октября 2010, 17:06:13 от mation »

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #12 : 22 Октября 2010, 17:09:04 »
Для отладки лучше и удобней не интерактивный режим использовать, а просто выводить то, что ты собираешься удалить. Я когда делаю нетривиальный поиск с последующим удалением или модификацией файлов сначала пишу так:
echo "rm -f ${file_to_del}"
и когда убеждаюсь, что удалятся будут только нужные файлы, вот тогда и убираю echo

Через alias можно сделать и проще alias rm="echo 'rm '"

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #13 : 22 Октября 2010, 17:26:34 »
#!/bin/bash

RM=rm -i

$RM files

На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн mation

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: Помогите найти решение проблемы в скрипте.
« Ответ #14 : 22 Октября 2010, 17:29:20 »
спасибо

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.