Рейтинг:0

Скрипт Bash для перемещения файлов на основе пользовательского ввода

флаг vn

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

Я предполагаю, что сценарий для фактического перемещения файла будет

#!/бин/баш
mv /путь/к/источнику /путь/к/назначению

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

Я использую Ubuntu, установленную с VirtualBox.

Tyberius avatar
флаг us
Связанный учебник: https://ryanstutorials.net/bash-scripting-tutorial/bash-input.php
Рейтинг:2
флаг in
Cas

По сути, скрипт запрашивает путь к файлу, а затем папку, в которую нужно поместить файл:

#!/бин/баш

#установить пустую переменную "file"
неустановленный файл

#продолжать спрашивать до тех пор, пока (= пока цикл) переменная не будет заполнена путем к файлу
до [[ -f "$file" ]]
делать
        #попросить пользователя ввести файл и сохранить то, что введено в переменной "файл"
        читать -rp "Пожалуйста, укажите путь к файлу: " файл
сделано

# теперь сделайте то же самое для папки назначения, но продолжайте спрашивать, пока введенная строка не станет существующей допустимой папкой
неустановленная папка
до [[ -d "$folder" ]]
делать
        read -rp "Пожалуйста, укажите путь к папке, в которую нужно поместить файл: " папка
сделано

#переменные "файл" и "папка" теперь заполнены допустимыми путями, поэтому переместите файл
mv "$file" "$folder" \ #символ "\" означает "перейти к следующей строке, но рассматривать ее как одну большую строку"; просто для удобства чтения
&& echo "Переместил $file в $folder" \ #запустите это после успешного выполнения команды mv (из-за &&)
|| echo "Не удалось переместить $file в $folder" #запустите это, когда команда mv не удалась (из-за ||)
WinEunuuchs2Unix avatar
флаг in
Вы можете добавить сообщение о том, что исходный файл не существует. Вы можете добавить предупреждение о том, что место назначения уже существует и будет перезаписано. Еще +1 за хороший сценарий.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.