LINUX.ORG.RU

Помогите написать скрипт.В линуксе я полный ноль

 , ,


1

2

Вот что нужно сделать

Разработать скрипт, который:

  • выводит имя текущего каталога;
  • запрашивает имя файла;
  • если файл не существует, выводит сообщение об ошибке и снова спрашивает имя файла;
  • спрашивает дату;
  • определяет, осуществлялся доступ к файлу после указанной даты, и выводит сообщение об этом;
  • если доступ к файлу не осуществлялся, завершается с кодом 120.


Последнее исправление: beastie (всего исправлений: 1)

Ответ на: комментарий от DELIRIUM

Выложи на гитхаб свое творение, а мы поругаем!

Выложит или не выложит «Вот в чем вопрос»?

anonymous
()
Ответ на: комментарий от DELIRIUM

Вопрос риторический?)

Философский.

anonymous
()
Ответ на: комментарий от futurama

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

torvn77 ★★★★★
()
Ответ на: комментарий от turtle_bazon

Вот что получилось #!/bin/bash echo «Имя текущего каталога» pwd echo -e «Введите имя файла» read word [-f $word ] || echo «Ошибка»

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

karpo
() автор топика
Ответ на: комментарий от karpo

Тебе рано осваивать bash, начни с markdown, или lorcode.

По поводу возврата: читай про цикл while.

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 2)
Ответ на: комментарий от karpo

Погуглите «bash как сделать что бы после того как выдает ошибку,оно возвращалось к вводу имени файла.»

anonymous
()
Ответ на: комментарий от karpo

Выход с ошибкой - команда exit. Какой номер укажешь, с таким и выйдет.

turtle_bazon ★★★★★
()
Ответ на: комментарий от karpo

Вот что получилось

[ -f $word ] || echo «Ошибка»

как сделать что бы … оно возвращалось к вводу имени файла.

[ -f $word ] || exec $0

futurama ★★★★★
()
Ответ на: комментарий от karpo

Кем я работаю это уже совсем другой вопрос.

Раз работаешь, то можешь подкинуть немного бабла помощникам. А то, получается, тебе незаслуженный диплом, а помощникам вообще ничего?

anonymous
()

karpo если бы вы хоть какой-то текст скрипта с самого начала
выложили, то скорее всего сарказма было бы на порядок меньше.

anonymous
()

Та все норм, сделайте ему задачу.

Ваш ценник на рінке только вірастет от таких специалистов :)

PunkoIvan ★★★★
()
Ответ на: комментарий от karpo

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

Используй цикл while

torvn77 ★★★★★
()
Ответ на: комментарий от PunkoIvan

Ваш ценник на рінке только вірастет от таких специалистов :)

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

torvn77 ★★★★★
()

спрашивает дату;

определяет, осуществлялся доступ к файлу после указанной даты, и выводит сообщение об этом;

с этим будет непросто

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от DELIRIUM

Я разочарован, думал в шлюхи.

anonymous
()
Ответ на: комментарий от targitaj

А stat умеет сразу в unix time дату показывать? И, кстати, вопрос, как обрабатывать ситуацию с монтированием с noatime?

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от targitaj

Надо ман смотреть. Ну и да, в таких случаях в начале скрипта ставить локаль в C, чтобы без сюрпризов. Ещё вопрос, что делать, если fs не поддерживает atime. В vfat, вроде нет.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

В gnu/linux вообще есть инструмент для ввода с консоли времени-даты? Я с таким не сталкивался вообще. Мне кажется, там будет гигантских размеров жопа.

targitaj ★★★★★
()
Ответ на: комментарий от targitaj

Есть, называется date)

Там можно строкой дату задавать, навскидку сходу не помню, но примерно так:

date --date="$string" "%s"

Выведет введенную дату (в штатовском формате) в юникс тайстампе.

То есть читаем строку в переменную, валидируем, скармливаем date, читаем atime, конвертируем, сравниваем.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

То есть читаем строку в переменную, валидируем, скармливаем date, читаем atime, конвертируем, сравниваем.

ммммда, 500$ явно мало

Хоспади, какой придурок придумал это задание? Это тело вообще консоль в глаза видело в реале?

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от targitaj

Ну сразу хотел написать, что ты демпингуешь, но я человек стеснительный, ты же знаешь…

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от targitaj

Кстати, можно попробовать извратиться через find, то есть задать сразу туда -name и access time

Конкурс на самый удобный способ удаления гланд объявляю открытым!

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)
Ответ на: комментарий от DELIRIUM

Тебе надо в манагеры идти. Которые при «звёздах». Которые продают время своих клиентов.

targitaj ★★★★★
()
#!/bin/sh

# Проверка места преступления
echo 'Оставайся на месте'
pwd

# Опрос подозреваемого
proverka () {
    echo 'Ты кто такой?'
    read POGONIALO

    # Проверка в базе данных
    echo 'Ща проверю...'
    sleep 5
    if ! [ -f "$POGONIALO" ]
    then
        echo 'Да ты гонишь!'
        proverka
    fi
}

proverka

echo "Слушай сюда, $POGONIALO"

# Опрос о событиях
echo 'На какое число у тебя алиби? YYYY-MM-DD HH:MM'
read DATE

# Проверка алиби
CRIME_DATE=$(stat -c '%X' $POGONIALO)
ALIBI_DATE=$(date -d "$DATE" +%s)

echo "$POGONIALO_POT_DATE $POGONIALO_TRUE_DATE"
if [ $CRIME_DATE -gt $ALIBI_DATE ]
then
    # Это он, вали его
    echo 'Ну ты попал!'
else
    # Это не он, придется отпустить
    echo 'Ладно, вали'
    exit 120
fi
anonymous
()
Ответ на: комментарий от anonymous

Еп забыл строчку убрать

echo "$POGONIALO_POT_DATE $POGONIALO_TRUE_DATE"

anonymous
()
Ответ на: комментарий от anonymous

Я не знаю, как шелл это обработает, но рекурсия может сожрать весь стек. Надо бы проверить)

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)
Ответ на: комментарий от targitaj

Присылай патч, мне лень писать.

anonymous
()
zsh# while true; do read "f?File: "; [[ -f $f && $( stat -c "%X" $f ) -ge $( read "d?Date: "; date --date=$d +"%s" ) ]] && { print "bingo"; break }; print "жопа"; done;
File: Makefile
Date: today
жопа
File: Makefile
Date: 1 year ago
bingo

на bash пусть доброволец перетолмачит

arto ★★
()
Ответ на: комментарий от DELIRIUM

Когда я такое писал?
Я говорил, что 10 лет назад делал лабы за денежку. Все.

Zhbert ★★★★★
()

Маслаков В.Г. Linux на 100%. – СПб.: Питер, 2009. – 336 с.: ил. – (Серия «На 100%»).

Глава 5. Основы Shell-программирования. 35 страниц чтения с каким-никаким пониманием – и напишешь, если полный ноль лишь в Linux.

LasarusLong
()
Ответ на: комментарий от DELIRIUM

Ну начинают отчислять, в основном, после окончания основной сессии. Числа так с 25 января. Так что время еще есть :) Хотя и, правда, вероятнее всего, заплатил.

LasarusLong
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.