开发者

how to use relative path in .sh in order to make my tar files include only the folder tar is created from instead of its fullpath

In a mono exe I am creating .sh scripts file containing codes as below

tarcreator.sh:

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

.... and the codes continue.

this .sh file is located in /data/...../tarHomeFolder and in my .exe I call it using "bash 'full path of .sh file'"

When I run this code in this way, it creates the tar but when I open the tar I see folders from the root directory.. (data/..../tarHomeFolder/myTarFolder/.....) instead of this I want my tar contain only directory structure of its folder (myTarFolder).

Then I changed the code to :

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

knowing that .sh file is in tarHomeFolder but then my script tells no such file or directory for myTarFolder ..

when I use tar command right in command prompt, using the command

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

it creates the tar directory structure as I want, so, how can I make it do the same in my bash file created and executed by mon开发者_JAVA技巧o .exe ?


All you need to do is change your directory before running tar. Something like this:

# 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 

This will leave you with relative paths, starting with myTarFolder, in your tar file.

Useful references:

  • basename
  • dirname


Something like this:

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜