How to copy with cp to include hidden files and hidden directories and their contents?
Solution 1:
Don't specify the files:
cp -r /etc/skel /home/user
(Note that /home/user
must not exist already, or else it will create /home/user/skel
.)
Solution 2:
Lets say you created the new folder (or are going to create one) and want to copy the files to it after the folder is created
mkdir /home/<new_user>
cp -r /etc/skel/. /home/<new_user>
This will copy all files/folder recursively from /etc/skel
in to the already existing folder created on the first line.
Solution 3:
The correct means of doing this is to use the -T (--no-target-directory)
option, and recursively copy the folders (without trailing slashes, asterisks, etc.), i.e.:
cp -rT /etc/skel /home/user
This will copy the contents of /etc/skel
to /home/user
(including hidden files), creating the folder /home/user
if it does not exist; however the -T
option prevents the contents of /etc/skel
from being copied to a new folder /home/user/skel
should the folder /home/user
exist.
Solution 4:
bash
itself has a good solution, it has a shell option
, You can cp
, mv
and so on.:
shopt -s dotglob # for considering dot files (turn on dot files)
and
shopt -u dotglob # for don't considering dot files (turn off dot files)
Above solution is standard of bash
NOTE:
shopt # without argument show status of all shell options
-u # abbrivation of unset
-s # abbrivation of set