Raspbian Stretch Lite:
$ mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
-Z set SELinux security context of each created directory
to the default type
--context[=CTX] like -Z, or if CTX is specified then set the SELinux
or SMACK security context to CTX
--help display this help and exit
--version output version information and exit
내가 쓴 스크립트에서는 다음과 같습니다.
mkdir -p /mnt/target/home/user/resources
어디에 /mnt/target/home/user/resources
존재할 수 있습니까? 이 경우 스크립트는 다음 오류와 함께 중지됩니다.
mkdir: '/mnt/target/home/user/resources' 디렉터리를 만들 수 없습니다. 파일이 존재합니다.
그러나 매뉴얼 페이지에는 오류가 존재하는 경우 오류를 반환해서는 안 된다고 되어 있습니다!
고쳐 쓰다
파일이 없습니다 resources
:
$ ls -la /mnt/target/home/user/
totale 13
drwxr-xr-x 4 mark mark 1024 gen 10 16:56 .
drwxr-xr-x 4 root root 1024 gen 10 16:56 ..
-rw-r--r-- 1 mark mark 220 nov 13 14:09 .bash_logout
-rw-r--r-- 1 mark mark 3523 nov 13 14:09 .bashrc
drwxr-xr-x 3 root root 1024 gen 10 16:56 bin
-rw-r--r-- 1 mark mark 675 nov 13 14:09 .profile
drwxr-xr-x 2 root root 4096 gen 1 1970 resources
업데이트 2
스크립트의 주변 코드는 다음과 같습니다.
losetup -P /dev/loop0 image.img
e2fsck -f /dev/loop0p2
resize2fs /dev/loop0p2
mkfs.ext4 /dev/loop0p3
e2fsck -f /dev/loop0p3
mkfs.vfat -F 32 /dev/loop0p4
mount /dev/loop0p2 /mnt/target
cd /mnt/target/home/
tar cf home.tgz user/
rm -r user/
mount /dev/loop0p1 /mnt/target/boot/
mount /dev/loop0p3 /mnt/target/home/
tar xf home.tgz -C /mnt/target/home/
#mkdir -p /mnt/target/home/user/resources
mount /dev/loop0p4 /mnt/target/home/user/resources
image.img
4개의 파티션을 포함합니다.
답변1
mount /dev/loop0p2 /mnt/target
cd /mnt/target/home/
mount /dev/loop0p3 /mnt/target/home/
mkdir -p /mnt/target/home/user/resources
mkdir
작업 디렉터리를 /home
on 으로 설정하여 전화를 걸고 있습니다 /dev/loop0p2
. 작업 디렉토리는 이전에는 path를 통해 액세스할 수 있었지만 /mnt/target/home
이제는 숨겨졌습니다 /dev/loop0p3
. 호출할 때 mkdir
path는 의 디렉토리를 참조합니다 /mnt/target/home
./
/dev/loop0p3
왜 작업 디렉토리에 관심이 있는지 이해할 수 없지만 mkdir
이상해 보입니다. 질문에 스크립트를 표시하기 전에 스크립트를 단순화했다면 현재 겪고 있는 문제는 마운트 지점 뒤에 숨겨진 디렉토리가 복잡해서 발생했을 가능성이 높습니다.
따라서 설치하기 전에 종료해 보십시오 cd
. 아니면 /mnt/target/home
전혀 사용하지 마시고 통화옵션과 을 이용하세요.cd
-C
tar
rm
일반적으로 어떤 방식으로든 사용되는 디렉토리에 무언가를 설치하지 마십시오. 대상 디렉터리는 비어 있어야 하며 프로세스의 작업 디렉터리가 아니어야 합니다. 운영 체제는 옳은 일을 할 것이지만 그것이 옳다고 생각하는 것은 놀랄 수 있으며, 이는 어쨌든 인간과 소프트웨어를 혼란스럽게 할 수 있습니다.