
BASH LINUX Помогите кто нибудь с линуксом BASH пожалуйста буду благодарен Написать командный
файл, реализующий меню из трех пунктов, первый пункт – дает возможность пользователю указать название директории, выбрав второй пункт пользователь получает запрос на ввод расширение файла, а затем список всех файлов с заданным расширением в этом каталоге (если они есть, в противном случае сообщения об отсутствии следующих файлов, выбрав третий пункт пользователь получает возможность скопировать эти файлы в отдельный каталог. Название каталога вводится пользователем.

Ответы на вопрос

Ответ:
#!/bin/bash
a=$true
while ($a)
do
clear
echo "1. Enter path"
echo "2. Enter file extension"
echo "3. Copy file"
echo "4. Exit"
read VAR
clear
if [[ $VAR -eq 1 ]]
then
echo "enter path"
read path
read -p "Нажмите ENTER для продолжения"
fi
if [[ $VAR -eq 2 ]]
then
echo "Enter file extension"
read fex
cd $path
ls *.$fex
read -p "Нажмите ENTER для продолжения"
fi
if [[ $VAR -eq 3 ]]
then
echo "enter path to copy file"
read pathcopy
cp -R $path/*.$fex $pathcopy
read -p "Нажмите ENTER для продолжения"
fi
if [[ $VAR -eq 4 ]]
then
echo "Exit"
read -p "Нажмите ENTER для продолжения"
let "a=false"
fi
done
Объяснение:




Конечно, я могу помочь вам написать командный файл на языке bash, реализующий ваше меню. Вот пример решения:
bash#!/bin/bash
show_menu() {
echo "Меню:"
echo "1. Указать название директории"
echo "2. Вывести список файлов с заданным расширением"
echo "3. Скопировать файлы с заданным расширением в отдельный каталог"
echo "0. Выход"
}
get_directory_name() {
read -p "Введите название директории: " directory_name
echo "Вы указали директорию: $directory_name"
}
list_files_with_extension() {
read -p "Введите расширение файла: " extension
files=$(find "$directory_name" -type f -name "*.$extension")
if [[ -z $files ]]; then
echo "Файлы с расширением .$extension не найдены."
else
echo "Файлы с расширением .$extension:"
echo "$files"
fi
}
copy_files_to_directory() {
read -p "Введите название каталога для копирования файлов: " destination_directory
if [[ ! -d $destination_directory ]]; then
mkdir "$destination_directory"
fi
cp "$directory_name"/*."$extension" "$destination_directory"
echo "Файлы успешно скопированы в каталог $destination_directory"
}
while true; do
show_menu
read -p "Выберите пункт меню: " choice
case $choice in
1)
get_directory_name
;;
2)
if [[ -z $directory_name ]]; then
echo "Сначала укажите название директории (пункт 1)"
else
list_files_with_extension
fi
;;
3)
if [[ -z $directory_name ]]; then
echo "Сначала укажите название директории (пункт 1)"
elif [[ -z $extension ]]; then
echo "Сначала выберите расширение файла (пункт 2)"
else
copy_files_to_directory
fi
;;
0)
echo "Выход..."
exit 0
;;
*)
echo "Неверный выбор. Попробуйте еще раз."
;;
esac
echo # Пустая строка для разделения между итерациями
done
Сохраните этот код в файл с расширением .sh
, например, menu.sh
. Затем вы можете запустить его в терминале, используя команду bash menu.sh
. Программа будет отображать меню с тремя пунктами, и вы сможете выбрать соответствующий пункт и выполнить нужное действие.
Учтите, что этот пример предполагает, что все файлы с нужным расширением находятся в одной директории и не вложены в поддиректории. Если вам нужна более сложная логика обработки файлов, то код может потребовать доработки.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili