cp and mv (copy and move files and directories)
To copy a file in linux, you use the cp command:
$ cp SOURCE_FILE DESTINATION
The SOURCE_FILE is the file you want to copy, and the DESTINATION is where you want to copy it to. DESTINATION can be a path with or without a filename. If you leave the filename off, the file will have the same name as the original.
Example:
$ cp assign0/hello.c assign1/hello.c
$
The command above copies the hello.c file from the assign0
directory into the assign1 directory. If assign1 already exists
as a directory, you could make the command shorter as follows:
$ cp assign0/hello.c assign1
$
If the assign1 folder did not already exist, a copy of the hello.c file
would have been made in the current directory, and it would have been
named assign1 -- probably not what you wanted to do. So, you have to be
careful when copying.
On myth, your profile has been set up to warn you if a file already exists.
This is not the case on many other Linux systems, so be careful! On other
systems, copying a file with cp replaces a file with the same name in
that location without asking you or telling you that it has removed the
original file (permanently).
To copy an entire directory, use the -r (recursive) option for cp:
$ cp -r assign0 assign1
$
This will copy the entire assign0 directory into the directory called
assign1. If assign1 does not exist, the cp command will create it.
The mv command moves files in a similar way to cp. It also doubles
as a way to rename a file:
$ mv originalFile newFile
$
This renames originalFile to have the name newFile. You can move entire
directories without a recursive flag:
$ mv directory1 directory2
$
Again, on myth, you will be asked before overwriting files with mv, but
this is not normally the case on other systems, so be careful!