Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117

Разработка скрипта на языке SHELL ОС Unix

06.06.2015, 19:58. Показов 2291. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи в решении лабы по Операционным системам -
«Разработка скрипта на языке SHELL ОС Unix»
В зависимости от запроса в интерактивном режиме выбирается один из нескольких вариантов действий. Всю информацию, не заданную конкретными значениями, вводить в интерактивном режиме и/или передавать через параметры при вызове скрипта (сочетать тот и другой способы). Предусмотреть реакцию на ошибочные ситуации (отсутствие нужных файлов или присутствие вновь создаваемых).
В зависимости от запроса:
• удалить из заданного каталога все файлы, имеющие расширение на заданную букву;
• переименовать файлы текущего каталога с именами, начинающимися на заданную букву.

З.Ы. если кто реально ПРОСТО может помочь - буду благодарен)) Но,Возможна разумная благодарность на карточку СБ
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2015, 19:58
Ответы с готовыми решениями:

Программирование на языке SHELL в ОС Unix
Кто может разработать программу, отправляющую почту (содержимое файла) группе пользователей, выбираемых из общего списка (хранящегося в...

Программирование на языке SHELL в ОС Unix
Возможно не туда ,прошу переместить,но очень нужна помощь , с этим я никогда не имела дела, и понятия не имею даже как сделать и как...

Программирование на языке shell в ос unix
Разработать программу, выполняющую в зависимости от ключа один из 3–х вариантов работы: - с ключом /n дописывает в начало указанных...

17
6 / 6 / 1
Регистрация: 03.01.2015
Сообщений: 30
06.06.2015, 23:18
Ща приступаю) Завтра до вечера отвечу. Тебе обязательно 100% рабочая программа? Если например там что-то не будет работать? Что-то не реализую?
0
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117
07.06.2015, 05:49  [ТС]
Я вот фиг знает, у нас только один програмер сдавал из группы..у него вроде просто скрипт написанный в NotePad++ он его подгрузил в в терминал в опенСюзи и все, по заданию, у него в указанной папке чего то там удалялось и сортировалось....По коду у него комменты на каждой строке, он все по ним оттарабанил и препод ему зачла работу.
Вот то, что нам дали для выполнения - методичка и какие то библиотеки...
Вложения
Тип файла: rar По шеллу.rar (1.33 Мб, 15 просмотров)
0
6 / 6 / 1
Регистрация: 03.01.2015
Сообщений: 30
07.06.2015, 10:57
Это ж готовая прога. А раньше дать, не? Там просто исправить кое-что

Добавлено через 2 минуты
Хотя тут куча вещей, которые я вообще вижу раз в жизни. Ну, посмотрю еще.
1
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
07.06.2015, 12:58
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
#depends of choice:
#+ delete files with extention started with <letter>
#+ rename files with name started with <letter>
#USAGE: script.name [target_dir] [letter]
unset flagD flagL
while ! [ -d "${target_dir:=$1}" ]
do
    if [ -n "$flagD" -o -n "$1" ] 
    then
        echo "Папки с названием $target_dir не существует"
    fi
    read -rp "Введите папку назначения (место работы) >>> " target_dir
    flagD=1
done
while [ $(echo -n "${letter:=$2}" | wc -m) -ne 1 ]
do
    if [ -n "$flagL" -o -n "$2" ] 
    then
        echo "Поисковый параметр должен состоять из 1 буквы "
    fi
    read -n1 -p "Введите 1 букву для поиска >>> " letter
    flagL=1
done
echo
echo -n "Выберите операцию [DdУу]:удаление [RrПп]:переименование [other]:выход >>> "
read -n 1
echo
case $REPLY in
    [DdУу]) find "$target_dir" -name "*.${letter}*" -delete ;;
    [RrПп]) find "$target_dir" -name "${letter}*" -exec mv -f {} {}.bkup \; ;;
esac
1
6 / 6 / 1
Регистрация: 03.01.2015
Сообщений: 30
07.06.2015, 13:04
ну вот и все)
1
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117
07.06.2015, 17:29  [ТС]
Всем доброго дня)) Это и есть скрипт по двум условиям?)) Что то у меня не робит в линухе.... или я гоню....Парни, расскажите как правильно по шагам запустить ету хреновину в опнсюзи?((
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
07.06.2015, 18:20
Лучший ответ Сообщение было отмечено Dimer-23 как решение

Решение

Открываешь Терминал, выделяешь тут, скопировать, вставить в Терминал, <Enter>
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
echo '#!/bin/bash
#depends of choice:
#+ delete files with extention started with <letter>
#+ rename files with name started with <letter>
#USAGE: script.name [target_dir] [letter]
unset flagD flagL
while ! [ -d "${target_dir:=$1}" ]
do
    if [ -n "$flagD" -o -n "$1" ] 
    then
        echo "Папки с названием $target_dir не существует"
    fi
    read -rp "Введите папку назначения (место работы) >>> " target_dir
    flagD=1
done
while [ $(echo -n "${letter:=$2}" | wc -m) -ne 1 ]
do
    if [ -n "$flagL" -o -n "$2" ] 
    then
        echo "Поисковый параметр должен состоять из 1 буквы "
    fi
    read -n1 -p "Введите 1 букву для поиска >>> " letter
    flagL=1
done
echo
echo -n "Выберите операцию [DdУу]:удаление [RrПп]:переименование [other]:выход >>> "
read -n 1
echo
case $REPLY in
    [DdУу]) find "$target_dir" -name "*.${letter}*" -delete ;;
    [RrПп]) find "$target_dir" -name "${letter}*" -exec mv -f {} {}.bkup \; ;;
esac' > my_script.sh
chmod +x my_script.sh
./my_script.sh
1
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117
07.06.2015, 19:27  [ТС]
Так , спасибо, разобрался как подгрузить)) Теперь у меня затык по подтверждению в процессе выполнения скрипта, что надо нажать для выбора того или иного пункта? D - удалить R-переименовать? не не робит..((
Миниатюры
Разработка скрипта на языке SHELL ОС Unix  
0
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117
07.06.2015, 20:14  [ТС]
ну в общем, что бы ни выбрал, скрипт просто делает выход...
Миниатюры
Разработка скрипта на языке SHELL ОС Unix  
0
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117
07.06.2015, 20:49  [ТС]
Цитата Сообщение от Dimer-23 Посмотреть сообщение
ну в общем, что бы ни выбрал, скрипт просто делает выход...
нет, не так, удаляет нормально, а не переименовывает

Добавлено через 23 минуты
Цитата Сообщение от Dimer-23 Посмотреть сообщение
нет, не так, удаляет нормально, а не переименовывает
Все, разобрался)) была небольшая ошибочка, точнее просто опечатка - не хватало звездочки:

[DdУу]) find "$target_dir" -name "*.${letter}*" -delete ;;
[RrПп]) find "$target_dir" -name "*.${letter}*" -exec mv -f {} {}.POLITECH \; ;;


ну, и я поглумился над присваеваемым расширением)))

ОГРОМНОЕ ВАМ СПАСИБО, РЕБЯТА!!! Если что должен - в личку)) Отблагодарю хоть немножко))
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
07.06.2015, 21:08
Какая "опечатка"?
Цитата Сообщение от Dimer-23 Посмотреть сообщение
переименовать файлы текущего каталога с именами, начинающимися на заданную букву.
0
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117
08.06.2015, 14:35  [ТС]
Цитата Сообщение от Marinero Посмотреть сообщение
Какая "опечатка"?
упс...протупил

Добавлено через 15 часов 55 минут
Да, ребята, все оказалось не так просто Тетя забрила очень жестко(((( Начала с того что скрипт должен быть максимально интерактивным - иметь меню, выбор вариантов действий под цифрами 1, 2 , 3, 4.. тд. И закончила воплями о том, что реализован непонятный способ на каких то флагах, который и ей то не очень ясен, а уж мое мычание за объяснения вообще не принять...мол, отсутствуют комменты построчные, короче трешак был полный Шесть часов убила группа в ожидании, а сдали меньше десяти(((( Дала готовую работу,сданную на 5 по типу которой надо сделать свой варик...Беда, короче(((((

Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#! /bin/sh
 
clear
 
while echo
do
echo "--------------------------------------"
echo
echo "Контрольная работа. Вариант №7. Выполнил ххххх Д.В."
echo "[1] - Скопировать файл с указанным именем из одного каталога в другой"
echo "[2] - Отсортировать заданный каталог по дате создания и выдать его содержимое на экран"
echo "[3] - Очистить экран"
echo "[4] - Выход из программы"
date
echo "--------------------------------------"
echo "Введите номер команды: "
read number
 
case "$number" in
    1) echo "Текущий каталог: " pwd
    #Выбираем каталог-источник
    cat_log=0
    while [ ! -d $cat_log ]
    do
    echo -n "Введите каталог-источник: "
        read cat_log
        if [ ! -d $cat_log ] ;then
        echo "Каталог не существует!"
        fi
    done
    echo "Каталог содержит следующие файлы: "
    ls -c $cat_log
    #Выбираем файл из каталога-источника
    files=0
    while [ ! -f $cat_log/$files ]
    do
    echo -n "Введите копируемый файл: "
        read files
        if [ ! -f $cat_log/$files ] ;then
        echo "Файл не существует!"
        fi
    done
    #Выбираем каталог-приемник для копируемого файла
    cat_log_2=0
    while [ ! -d $cat_log_2 ]
    do
    echo -n "Введите каталог-приемник: "
        read cat_log_2
        if [ ! -d $cat_log_2 ] ;then
        echo "Каталог не существует!"
        fi
    done
    #Копируем файл
    echo "Копирование файла "$files" из "$cat_log" в "$cat_log_2"..."
    cp $cat_log/$files $cat_log_2
    echo "Теперь каталог "$cat_log_2" содержит следующие файлы: "
    ls -c $cat_log_2
    ;;
    2)
    #Сортировка выбранного каталога
    #Выбираем каталог-приемник для копируемого файла
    cat_log_3=0
    while [ ! -d $cat_log_3 ]
    do
    echo -n "Введите каталог для сортировки: "
        read cat_log_3
        if [ ! -d $cat_log_3 ] ;then
        echo "Каталог не существует!"
        fi
    done
    cd $cat_log_3
    echo "Выбран каталог: "pwd
    echo "Содержимое каталога: "
    ls -atlr $cat_log_3
    echo "Каталог отсортирован по дате"
    ;;
    3)
    #Очистка экрана
    clear
    ;;
    4)
    #Выход из скрипта
    exit
    ;;
    *)
    echo
    echo "Вы ввели неверную команду!"
    echo
    ;;
    
 
esac
done


Добавлено через 1 час 21 минуту
Вот еще одна работа на четверку
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#! /bin/sh 
while echo
do
echo "****************************"
echo "хххххххх выполнил"    
echo "В зависимости от запроса"
echo "[1] - в заданном каталоге выдать на экран список имен файлов с расширениями PAS,TXT, СС;"
echo "[2] - отсортировать указанный файл текущего каталога по убыванию 2-го символа и выдать его на экран;"
echo "[3] - Выход"
echo 
date
echo "*****************************"
echo 
echo
 
read types
 
 
case "$types" in
        
        1) 
clear
   echo "Введите путь к каталогу:"
   read directory_path  # Вводим путь
  
  
   if [ -d "$directory_path" ];  # Если введенный каталог существует то:
      then
          files_extension="txt" 
      files_list=$(ls  "$directory_path/"*."$files_extension" 2> /dev/null)
      fi
      
      
      if [ ! -d  "$directory_path" ];
      then echo "Каталог не найден!"
       echo "press ENTER"
             read 
     else
    
      if [ -z "$files_list" ]  # Если нету файлов с заданным hасширение то выводим сообщение:
          then
         echo "В указанной директории файлы с расширением " $files_extension " не найдены"
          else                              
          for file in $files_list
         do
            echo "Файл найден TXT----> $file" 
            
         done        
       fi
         files_extension="pas" 
       files_list=$(ls "$directory_path/"*."$files_extension" 2> /dev/null)
       if [ -z "$files_list" ]  # Если нету файлов с заданным hасширение то выводим сообщение:
        then
            echo "В указанной директории файлы с расширением " $files_extension " не найдены"         
            else                                    
           for file in $files_list
           do           
              echo "Файл найден PAS----> $file" 
           done       
        fi
       files_extension="ss" 
        files_list=$(ls  "$directory_path/"*."$files_extension" 2> /dev/null)
        if [ -z "$files_list" ]  # Если нету файлов с заданным hасширение то выводим сообщение:
        then
             echo "В указанной директории файлы с расширением " $files_extension " не найдены"            
    else            
                    
            for file in $files_list
            do
                       echo "Файл найден SS----> $file" 
            done            
         fi                  
       
           echo "press ENTER"
             read 
             clear               
   fi     
 
                ;;
                
2)    echo "Введите имя файла"
     read result
    if [ ! -f  "$result" ]; 
    then echo "Ошибка! Неверный ввод!"
    echo "press ENTER"
             read 
    else 
    echo "ok!"
    echo "Содержимое файла:"
    cat $result
      echo "press ENTER"
             read 
    echo "Отсортированный массив"
    sort -r -k1.3 $result   
    
  echo "press ENTER"
             read 
             clear
             
             fi
             ;;
                
                
                
                   3) 
        exit
        ;;
        esac
done
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
08.06.2015, 16:19
Лучший ответ Сообщение было отмечено NeoMatrix как решение

Решение

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#! /bin/bash
#depends of choice:
#+ delete files with extention started with <letter>
#+ rename files with name started with <letter>
#USAGE: script.name [target_dir] [letter]
 
clear
 
while echo
do
    echo "--------------------------------------"
    echo
    echo "Контрольная работа. Вариант №x. Выполнил ххххх Д.В."
    echo "[1] - Удалить из заданного каталога все файлы, имеющие расширение на заданную букву"
    echo "[2] - Переименовать файлы текущего каталога с именами, начинающимися на заданную букву"
    echo "[3] - Очистить экран"
    echo "[4] - Выход из программы"
    date
    echo "--------------------------------------"
    echo -n "Введите номер команды: "
    read -n1 number
 
    unset flag
 
    echo "Текущий каталог: " pwd
 
    #Выбираем рабочий каталог
    while ! [ -d "${target_dir:=$1}" ] #Проверка существования каталога
    do
        if [ -n "$flag" -o -n "$1" ] #Пропустить вывод ошибки если каталог ещё не вводился
        then
            echo "Каталог $target_dir не существует"
        fi
        read -rp "Введите каталог назначения (место работы) >>> " target_dir
        flag=1 #Ввод уже был (можно выводить ошибку в следующем цикле — см. коментарий выше)
    done
 
    #Вводим букву для поиска
    if [ "${#2}" -ne 1 ] #Проверяем переданный скрипту 2-й аргумент
    then
           [ "$2" ] || echo "Поисковый параметр должен состоять из 1 буквы " #если аргумент введен и не правильный
           read -n1 -p "Введите 1 букву для поиска >>> " letter
    else
           letter="$2"
    fi
 
    #Выполняем выбранные операции
    case "$number" in
    
        1) #удаление
            message=$(find "$target_dir" -name "*.${letter}*" -printf "Удален %P в каталоге %H\n" -delete)
            if [ "$message" ]
            then
                echo 
                echo "$message"
                echo 
            else
                echo 
                echo "Для удаления файлов с расширением на букву $letter не найдено"
                echo 
            fi
            ;;
        2) #переименование
            message=$(find "$target_dir" -name "${letter}*" -exec mv -vf {} {}.bkup \;)
            if [ "$message" ]
            then
                echo 
                echo "$message"
                echo 
            else
                echo 
                echo "Для переименования файлов на букву $letter не найдено"
                echo 
            fi
            ;;
        3) #очистка экрана
            clear
            ;;
        4) #выход из скрипта
            exit
            ;;
        *)
            echo
            echo "Вы ввели неверную команду"
            echo
            ;;
    esac
done
0
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117
08.06.2015, 17:05  [ТС]
оу, как оперативно, спс)) А в их чем разница?
Хотел спросить, у нас не применяются в методичке всякие " unset flag","target_dir", "flag=1" и почему то препода все это ставит в ступор...Ну а она нас, соответственно....Возможно ли код сделать на нашем "студенческом уровне"? Извиняюсь, если глупость спрашиваю..

Добавлено через 28 минут
Просто это довольно сложно объяснить преподу, ведь таких способов реализации нам не дают в методичках(( Вот те работы выше- это наш уровень. Максимум диалогов - на несуществующий каталог, на отсутствие файлов с расшир. на указанную букву, на отсутстствие файлов к удалению или переименованию, список найденных в каталоге файлов с предложением их удалить или переименовать, вопрос на какое имя переименовать данные файлы, подтверждение удаления....Все это она требует((

Добавлено через 6 минут
Вот еще два примера
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#! /bin/bash 
 
while echo
do
echo "****************************"
echo
echo "Выполнил студент ЭВМз-10 А.С. хххххххххх"
echo
echo "Введите номер действия:"
echo "[1] - Переписать в новой файл те строки заданного файла, которые содержат заданный текст"
echo "[2] - Переместить в файл с заданным именем из одного каталога в другой"
echo "[3] - очистка экрана"
echo "[4] - выйти из программы"
echo
date
echo "*****************************"
read number
 
case "$number" in
# Перепись строк из файла в новый файл    
1)  echo "Текущий каталог"
        pwd
        cat_log=0      
        while [ ! -d $cat_log ]
      do
        echo -n "Введите каталог: "
        read cat_log
          if [ ! -d $cat_log ] ;then 
            echo "Каталог не существует"
      fi
        done               
        files=0
        while [ ! -f $cat_log/$file ] || [ ! -s $cat_log/$file ]
      do
        echo -n "Введите имя исходного файла: "
        read file
          if [ ! -f $cat_log/$file ] ;then
            echo "Файл не существует"                         
                       
          elif [ ! -s $cat_log/$file ] ;then
            echo "Файл пустой"
      fi         
        done   
    echo -n "Введите имя целевого файла:"    
    read file2                 
        echo -n "Введите текст: "
        read text
    grep $text $cat_log/$file > $cat_log/$file2
    ;;
# Перемещение файла в другой каталог
2)  echo -n "Введите каталог:"
    read cat_log
      if [ ! -d $cat_log ] ;then 
        echo "Каталог не существует"
    fi              
        
    file=0
        while [ ! -f $cat_log/$file ]
      do
        echo -n "Введите файл: "
            read file
              if [ ! -f $cat_log/$file ] ;then
          echo "Файл не существует" 
      fi
    done
    echo -n "Введите новый каталог:"
    read new_cat
    mv $cat_log/$file $new_cat
    ;;
# Очистка экрана
3)
        clear
        ;;
# Выход из программы        
4) 
        exit
        ;;
 
esac     
done

и вот
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
#! /bin/sh 
 
while echo
do
echo "****************************"
echo
echo "Пххххх Н.В.ЭВМз-10 Вариант №3"
echo "Введите номер действия:"
echo "[1] - Подсчитать количество строк заданного файла указанного каталога, содержащих  указанный текст"
echo "[2] - Отсортировать заданный файл текущего каталога, содержащий записи вида: ФИО, дата рождения по возрастанию даты"
echo "[3] - Cоздать подкаталог текущего каталога и скопировать в него файлы с указанным  расширением. Содержимое созданного каталога вывести на экран и затем удалить каталог "
echo "[4] - Очистка экрана"
echo "[5] - Выйти из программы"
echo
date
echo "*****************************"
read number
 
case "$number" in
         # подсчитывание строк
        1) echo "Основной каталог"
                   pwd
             cat_log=0      
             while [ ! -d $cat_log ]
             do
             echo -n "Введите каталог: "
                   read cat_log
                     if [ ! -d $cat_log ] ;then 
                     echo "Каталог не существует"
                     fi
               done               
              files=0
              while [ ! -f $cat_log/$files ] || [ ! -s $cat_log/$files ]
              do
             echo -n "Введите файл: "
                   read files
                       if [ ! -f $cat_log/$files ] ;then
                          echo "Файл не существует"                                     
                       
                        elif [ ! -s $cat_log/$files ] ;then
                          echo "Файл пустой"
                     fi         
                done                    
             echo -n "Введите текст: "
                   read text      
             echo "Количество строк в файле: " 
                  wc -l < $cat_log/$files
             echo "Из них содержат строку $text: " 
             grep -n $text   $cat_log/$files 
             echo "Всего строк содержащих строку: "
             grep -c  $text  $cat_log/$files      
             echo "Для продолжения нажмите клавишу ENTER"
             read     
             clear         
                ;;
         # сортировка файла
        2) 
        
        cd /home/Natali/Labs
        
        echo "Основной каталог"
                  pwd
              sort_file=0
              while [ ! -f $sort_file ] || [ ! -s $sort_file ]
              do   
             echo -n "Введите файл для сортировки: "
                  read sort_file
                     if [ ! -f $sort_file ] ;then
                         echo "Файл не найден"
                      elif [ ! -s $sort_file ] ;then
                          echo "Файл пустой"                             
                     fi
              done     
             #echo $sort_file
             #sort_file2=$sort_file
              flag=0
              while  [ $flag -eq 0 ];
              do 
             echo -n "Введите имя отсортированного файла: "    
                  read sort_file2
                         if [ $sort_file2 = $sort_file ] ;then
                              #echo $sort_file2
                              echo "Имя начального файла совпадает с конечным"
                              echo  "Вы хотите перезаписать файл? [Y]Да  [N]Нет"
                                  read remake
                                      case "$remake" in
                                          Y)  
                                             flag=1
                                              #rm $sort_file2
                                              out='~'
                                              sort -M $sort_file > $out
                                              rm $sort_file
                                              mv $out $sort_file2
                                              #rm $out
                          echo "Файл $sort_file отсортирован по дате"                                             
                                               ;;
                                           N) 
                                           flag=0     
                                             ;;
                                             
                                            *)
                                             flag=0
                                             echo "Вы ввели неверную команду"
                                              ;;
                                         esac  
                                         else    
                                      flag=1     
             sort  -M  $sort_file > $sort_file2  
             echo "Исходный файл $sort_file: "
             cat $sort_file
             echo ""
             echo "Отсортированный файл $sort_file2: "
             cat $sort_file2
             rm $sort_file2           
              echo "Файл $sort_file отсортирован по дате в файл $sort_file2"
              fi 
              done           
             echo  "Для продолжения нажмите клавишу ENTER"
             read
             clear
             
           ;;
           # создание каталога и копирование файлов
      
        3)
        cd /home/Natali/Labs
        echo "Текущий каталог: " 
                   pwd
                   #catalog=0
                   flag2=0
                   while [ $flag2 -eq 0 ]
                   do 
                   echo -n "Введите имя создаваемого каталога: " 
                  read catalog
                   if [ -d $catalog ] ;then          
                      flag2=0
                      echo "Такой каталог существует"   
                       else 
                         flag2=1
                         mkdir $catalog  
                  fi
                  done 
                  #extension=0  
                  flag3=0
                  #extension=0   
                 
       while [ $flag3 -eq 0 ]
                  do
                  
        echo -n "Введите расширение копируемых файлов: "
        read  extension
        echo *.$extension
        pwd
       if  [ ! -f  *.$extension ]  ;then
                    flag3=0
                   echo "Файлы с заданным расширением на найдены "
                    else
                     echo "Файлы с заданным расширением найдены "
                    flag3=1
                    fi
            done        
        cp  *.$extension  $catalog/
        echo "Скопированные файлы в созданном каталоге: "
        ls -c $catalog
            flag4=0
             while [ $flag4 -eq 0 ]
             do
             echo "Удалить созданный каталог? [Y]Да  [N]Нет  "
                read numdel
                    case "$numdel" in
                       Y) 
                       flag4=1
                       rm -r $catalog/
                         echo "Каталог удалён"
                         #$catalog=' '
                         #$catalog=0
                         ;;                         
                       
                       N)
                       flag4=1 
                       echo
                             ;;
                             
                        *)  
                        flag4=0
                       echo "Вы ввели неверную команду"
                        ;;       
                     esac
                     done
                     echo  "Для продолжения нажмите клавишу ENTER"
                     read
                     clear
                   
        ;;
        
        4)
        clear
        ;;
        
        5) 
        exit
        ;;
 
        *)
        echo
        echo "Вы ввели неверную команду"
        echo
        ;;
 
esac     
done
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
08.06.2015, 17:17
У Вас $cat_log в скрипте $target_dir — от названия переменной суть не меняется. Я вроде коменты написал, в т.ч. для чего flag(unset flag удаляет переменную flag, что используется как признак того, что каталог еще не вводился — значит сообщение об ошибке не выводится).
Я не знаю что от Вас требует преподаватель (наверное хочет чему-то научить). Я скрипт писал по условию которое Вы дали. Если есть что-то ещё — излагайте. Только думаю что проблема не в диалогах, а в том, что препод видит что Вы не только скрипт не писали, Вы даже и не разбирались в нем.

Добавлено через 5 минут
Вон во 2-м примере и flagи есть и не один
0
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 117
08.06.2015, 17:23  [ТС]
Нет, конечно, не только в диалогах...Просто это уже не первый случай, когда препод заставляет переделывать точно по методичке..Естественно, он видит, уровень знаний, но когда сделано сложней и просто по другому,он лютует гораздо сильней(( Мол даже не в методе ковырялся, а просто со стороны привлек кого то. Она четко сказала - диалоги на все действия и все как она в методичке изложила.
З.Ы. Кстати да, в последней работе есть флаги, но там прогер лютый защищал))

Извините, что достаю вас
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
08.06.2015, 17:43
Вы мне так рассказываете, как-будто я даже в школе не учился… Совет: пройдитесь по скрипту, ответьте сами себе что делает каждая строка (man команда, help команда, команда --help в помощь) и зачем, тогда и защитить сможете. Если что совсем не поймете — спросите тут.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.06.2015, 17:43
Помогаю со студенческими работами здесь

Разработка скрипта на языке SHELL ОС Unix
Здравствуйте всем. Прошу сильно не пинать - не смог я найти соответсятвующий раздел:( Прошу помощи в решении лабы по Операционным...

Разработка скрипта на Shell
Подскажите пожалуйста, что неверно в скрипте и почему не запускается, задание в самом скрипте написала:. #! /bin/sh clear ...

Лаба на shell (Unix)
Добрый вечер,уважаемые программисты. Надеюсь,здесь есть знатоки shella. Вопрос состоит в следующем: Создайте программу, которая с выходом...

программирование на Unix SHELL
Уважаемые программисты))Помогите,пожалуйста,бедной девушке написать программку на Unix Shell))) Программа должна обходить все каталоги и...

написать Shell - процедуру (Unix).
Здравствуйте! Болшая просьба помочь в написании Shell - процедуры (Unix). Я в этом не очень понимаю, поэтому обращаюсь к вам. Задание: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru