mkdir -p
텍스트 파일 및 중간 디렉터리 와 유사하게 하나의 명령을 사용하여 해당 디렉터리 내에 디렉터리와 파일을 만들 수 있는지 궁금합니다 .
touch
설명서를 주의 깊게 읽었 지만 아무것도 발견하지 못했습니다. 유닉스 스택 교환에서도 답을 찾을 수 없습니다.
파일로 새 디렉토리를 시작하는 것은 매우 일상적인 작업이므로 이를 수행할 수 있는 방법이 있습니까(아마도 touch 이외의 다른 명령을 사용하지 않고)?
답변1
install
GNU 명령에는 파일을 복사하고 해당 파일을 가리키는 디렉터리를 한 번에 생성하는 coreutils
옵션이 제공됩니다(소유권과 권한을 지정할 수도 있음). -D
기본적으로 실행 파일을 생성하며 일반적으로 단계적으로 개발 도구로 사용되므로 umask를 지원하지 않습니다 make install
.
install -m u=rw,go=r -D /dev/null some/new/file
(생성된 디렉터리 구성 요소의 권한은 항상 입니다 u=rwx,go=rx
.)
create
또는 언제든지 다음과 같이 Zsh 함수 로 구현할 수 있습니다 .
create() {
local file ret=0
for file do
mkdir -p -- "$file:h" && true >> "$file" || ret=$?
done
return "$ret"
}
비록비어 있는일반 파일은 나에게 약간 무의미해 보입니다.
일반적으로 다음을 수행합니다.
mkdir -p some/dir
your-editor some/dir/some-file
일부 파일을 만듭니다(편집기에서 파일(실제 내용 포함)을 저장한 직후).
또는 다음과 같은 콘텐츠를 생성하는 다른 명령:
some-command > some/dir/some-file
wget -o some/dir/some-file https://example.com/whatever
cp source some/dir/some-file
...etc.
답변2
이것이 내가 가진 것입니다.
#!/bin/zsh -
### Create a text file ###
[[ -z $1 ]] && exit 1
file="$1"
mkdir --parents ${file:h}
$EDITOR $file
명령은 ct
(텍스트 생성)이라고 하므로 다음과 같이 실행합니다 ct path/to/dir/file.txt
.
다른 스레드의 다른 답변과 달리 이는 or 을(를) 불필요하게 호출하지 않으며 dirname
or 의 더 집중적인 구문을 사용하지도 않습니다. 또한 쉘을 변경하지 않으므로 함수일 필요도 없습니다.${file#...}
${file%...}