Copy And Overwrite A File In Shell Script
Answer :
Use
cp -fr /source/file /destination
this should probably solve the problem.
This question has been already discussed, however you can write a little script like this:
#!/bin/bash
if [ ! -d "$2" ]; then
mkdir -p "$2"
fi
cp -R "$1" "$2"
Explaining this script a little bit
#!/bin/bash: tells your computer to use thebashinterpreter.if [ ! -d "$2" ]; then: If the second variable you supplied does not already exist...mkdir -p "$2": make that directory, including any parent directories supplied in the path.Running
mkdir -p one/two/threewill make:$ mkdir -p one/two/three
$ tree one
one/
└── two
└── threeIf you don't supply the
-ptag then you'll get an error if directoriesoneandtwodon't exist:$ mkdir one/two/three
mkdir: cannot create directory ‘one/two/three’: No such file or directoryfi: Closes the if statement.cp -R "$1" "$2": copies files from the first variable you supplied to the directory of the second variable you supplied.So if you ran
script.sh mars pluto,marswould be the first variable ($1) andplutowould be the second variable ($2).The
-Rflag means it does this recursively, so thecpcommand will go through all the files and folders from your first variable, and copy them to the directory of your second variable.
Your problem might be caused by an alias for cp command created in your system by default (you can see al your aliases by typing "alias").
For example, my system has the following alis by default: alias cp='cp -i', where -i overrides -f option, i.e. cp will always prompt for overwriting confirmation.
What you need in such case (that'll actually work even if you don't have an alias) is to feed "yes" to that confirmation. To do that simply modify your cp command to look like this:
yes | cp /source/file /destination
Comments
Post a Comment