Если вы просто не хотите использовать mkdir -p а затем cp , то вы можете также создать довольно надежную функцию для ее копирования, it wall always be the same folder с именем каталога, заданным dirnm в качестве первого аргумента (в текущий рабочий каталог, если второй аргумент не задан) или /destpath/dirnm если путь, представляющий destpath , указан в качестве второго аргумента.
При формировании задействованных путей вам нужно будет проверить (и удалить) начальные и конечные символы '/' в dirnm и любые конечные символы '/' в destpath. You then attempt to create Затем вы пытаетесь создать destpath/dirnm, as given and on success copy его всегда будет та же папка, to destpath/dirnm (with the -a` или по желанию). В случае неудачи выведите ошибку и вернитесь. Ниже приведен один из подходов к такой функции:
mkdircp ()
{
srcdir="NameOfDirToCopy" ## the name of the dir you always copy (w/full path)
[ -d "$srcdir" ] || { ## validate srcdir exists
printf "error: source directory '%s' does not exist.\n" "$srcdir"
return 1
}
[ -z $1 ] && { ## validate that required dirnm given
printf "usage: mdcp dirnm [destpath (default ./)]\n";
return 1
};
## trim leading/trailing '/' from dirnm
[ ${1:0:1} == '/' ] && dirnm="${1:1}" || dirnm="$1"
[ ${1:(-1)} == '/' ] && dirnm="${dirnm%/}"
## if destpath given, trim trailing '/' & set destdir
if [ -n "$2" ]; then
[ ${2:(-1)}x == '/x' ] && destpath="${2%/}" || destpath="$2"
[ -n "$2" ] && destdir="${destpath}/${dirnm}"
else
destdir="./$dirnm" ## default destdir in ./
fi
## create destdir & validate or throw error
[ -d "$destdir" ] || mkdir -p "$destdir"
[ -d "$destdir" ] || {
printf "error: unable to create destdir '%s'. (check permissions)\n" "$destdir"
return 1
}
## copy (-recursive -archive) "$srcdir" "$destdir"
printf "copying: %s -> %s\n" "$srcdir" "$destdir"
# cp -a "$srcdir" "$destdir" ## (uncomment for actual copy )
}
Я бы включил эту функцию в ваш ~/.bashrc (или ~/.profile), или вы можете вручную ввести /экспортировать ее в вашу текущую оболочку. Я также создал бы удобный alias чтобы сократить ввод после объявления в .bashrc например:
alias mdcp='mkdircp'
С псевдонимом использование:
mdcp dirnm [destpath (default: ./)]
Чтобы скопировать it wall always be the same folder в destpath/dirnm . Дайте мне знать, если у вас есть какие-либо вопросы или вам нужно что-то скорректировать.