Скопируйте файлы и папки с полным путем в Linux Bash
Я хотел создать простой скрипт, который берет путь к файлу или папке и копирует его, сохраняя полный путь, в папку, которая называется system
рядом со скриптом.
Пример: Представьте, что у меня просто есть эти папки в моей системе:
/home/my_user/copy_script /home/my_user/folder1/file1 /home/my_user/folder1/file2 /home/my_user/file3
Если я передам в качестве аргументов пути, /home/my_user/folder1
и /home/my_user/file3
я хочу получить эту структуру папок в качестве вывода:
Файлы перед запуском скрипта
/home/my_user/copy_script /home/my_user/folder1/file1 /home/my_user/folder1/file2 /home/my_user/file3
Новые файлы, созданные из / дома / my_user / Folder1 пути
/home/my_user/system/home/my_user/folder1/file1 /home/my_user/system/home/my_user/folder1/file2
Новые файлы, созданные из / дома / my_user / file3 пути
/home/my_user/system/home/my_user/file3
Идея иметь копию файлов конфигурации в папке, которая будет синхронизироваться с gitlab, сохраняя ту же структуру, что и моя система.
Мой сценарий до сих пор выглядит так:
#!/bin/bash #need to implement relative paths #https://stackoverflow.com/questions/3963716/how-to-manually-expand-a- special-variable-ex-tilde-in-bash/29310477#29310477 #clears the old folder rm -r ./system #goes through all the arguments for var in "$@" do #It is a folder if [[ -d $var ]]; then mkdir -p "$PWD/system/$var" cp -R $var "$PWD/system/$var/.." echo "$var FOLDER" #It is a file elif [[ -f $var ]]; then mkdir -p "$PWD/system/$var" cp -R $var "$PWD/system/$var/.." echo "$var FILE" #The path is not ok else echo "$var ERROR" fi done
Когда это папка, я думаю, что она отлично работает:
Пример:
С той же структурой папок, что и в начале, когда мы вызываем copy_script /home/my_user/folder1
Сначала создает /home/my_user/system/home/my_user/folder1
путь
Затем копирует folder1
в/home/my_user/system/home/my_user/
Но с файлами это не работает, потому что создает папки, которые мне не нужны, и я не могу скопировать файлы.
Пример:
вызов copy_script /home/my_user/file3
создаст /home/my_user/system/home/my_user/file3
путь, но тогда я не могу создать файл, потому что есть папка с тем же именем.
Может ли кто-нибудь любезно объяснить мне, как это сделать? Благодарю.
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4