как использовать относительный путь в .sh, чтобы мои tar-файлы включали в себя только папку, из которой создается tar, а не ее полный путь - PullRequest
0 голосов
/ 12 июля 2011

В моно-файле я создаю файл сценариев .sh, содержащий коды, как показано ниже

tarcreator.sh:

tar -cvf /data/folder1/folder2/.../xyz.tar /data/...../tarHomeFolder/myTarFolder > /data/logs/tarLogs.txt 

.... и коды продолжаются.

этот файл .sh находится в /data/...../tarHomeFolder, и в моем .exe я называю его, используя полный путь файла .sh файла "bash"

Когда я запускаю этот кодтаким образом, он создает tar, но когда я открываю tar, я вижу папки из корневого каталога .. (data /..../ tarHomeFolder / myTarFolder / .....) вместо этого я хочу, чтобы мой tar содержал толькоструктура каталогов своей папки (myTarFolder).

Затем я изменил код на:

tar -cvf /data/folder1/folder2/.../xyz.tar myTarFolder > /data/logs/tarLogs.txt 

, зная, что файл .sh находится в tarHomeFolder, но затем мой сценарий не сообщает такого файла или каталога для myTarFolder ..

когда я использую команду tar прямо в командной строке, используя команду

tar -cvf /data/folder1/folder2/.../xyz.tar myTarFolder > /data/logs/tarLogs.txt 

, она создает структуру каталогов tar, как я хочу, так как я могу сделать так, чтобы она делала то же самое в моем файле bash, созданном и выполняемомmono .exe?

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Все, что вам нужно сделать, это изменить каталог перед запуском tar.Примерно так:

# If your full path to the directory is in DIR = "/data/...../tarHomeFolder/myTarFolder"
cd $(dirname $DIR)
tar -cvf /data/folder1/folder2/.../xyz.tar $(basename $DIR) > /data/logs/tarLogs.txt 

Это оставит вас с относительными путями, начиная с myTarFolder, в вашем tar-файле.

Полезные ссылки:

2 голосов
/ 12 июля 2011

Примерно так:

tar -cvf /data/folder1/folder2/.../xyz.tar -C /data/...../tarHomeFolder/ myTarFolder> /data/logs/tarLogs.txt

...