คำตอบของ desguaนั้นถูกต้องและเรียบง่าย แต่ถ้าหากคุณต้องการวิธีที่ป้องกันได้ POSIX กำหนดcp
โดยไม่มีการ--parent
ตั้งค่าสถานะดังนั้นมันจะไม่ทำงานในทุกระบบ
ทางเลือกหนึ่งคือเขียนไว้ใน Python หากติดตั้งไว้ในระบบ:
#!/usr/bin/env python3
from os import makedirs
from os.path import exists,basename
from shutil import copyfile
from sys import argv
if len(argv) < 3:
print('Not enough args',file=stderr)
exit(1)
filename = basename(argv[2])
dirs = argv[2].replace(filename,'')
makedirs(dirs)
copyfile(argv[1],argv[2])
วิธีนี้ใช้ได้ผล:
$ ./mkdircp.py /etc/passwd $HOME/foodir/bardir/passwd.copy
$ stat --printf "%F\n" $HOME/foodir/bardir/passwd.copy
regular file
$ head -n 1 $HOME/foodir/bardir/passwd.copy
root:x:0:0:root:/root:/bin/bash
the_file
คุณต้องเพิ่ม a/
ไปยังจุดสิ้นสุดของพา ธ ไดเร็กทอรีใหม่ของคุณ