.bashrc
ISO 날짜라는 폴더에 마크다운이나 텍스트 파일을 만들 수 있도록 별칭을 만들고 싶습니다.그리니치 표준시그런 다음 편집기에서 파일을 엽니다.
이것은 내 예상 출력(예)입니다.
./20211226220131/readme.md
및 readme.md
에서 열렸습니다 vim
.
답변1
bash
버전 4.2 이상을 사용한다고 가정합니다 .
edmd () {
local now
TZ=GMT printf -v now '%(%Y%m%d%H%M%S)T' -1
mkdir "$now" && "${EDITOR:-vim}" "$now/readme.md"
}
now
이 셸 함수는 GMT 시간대의 현재 타임스탬프를 포함하는 지역 변수를 생성합니다 . 그런 다음 이 타임스탬프를 사용하여 이름이 지정된 디렉터리를 생성하고, 성공하면 readme.md
원하는 편집기를 사용하거나 디렉터리가 비어 있거나 설정되지 않은 vim
경우 해당 디렉터리 내의 파일을 편집할 수 있습니다.EDITOR
이 셸 함수는 일반적으로 별칭을 선언할 때마다 선언되며 다음과 같이 사용됩니다.
$ edmd
쉘 기능은 외부 유틸리티에 의존하지 않으며 date
실수로 현재 작업 디렉토리를 변경할 수 없습니다.
시험:
$ edmd
(내 편집기가 열리면 뭔가를 입력하고 파일을 저장한 다음 편집기를 종료합니다.)
$ tree
.
`-- 20211226092420
`-- readme.md
1 directory, 1 file
또한 날짜 및 시간에 대한 ISO 8601 형식은 다음과 같이 작성됩니다.
- "2021-12-26T14:52:04Z" 또는
- "20211226T145204Z"
UTC 시간대 또는
- "2021-12-26T14:52:04+00:00"
...여기서 "00:00"은 UTC를 기준으로 한 시간 오프셋을 제공합니다.
그러므로 당신은 사용할 수 있습니다
TZ=UTC printf -v now '%(%Y-%m-%d-T%H:%M:%SZ)T' -1
또는
TZ=UTC printf -v now '%(%Y%m%dT%H%M%SZ)T' -1
또는
TZ=GMT printf -v now '%(%Y-%m-%d-T%H:%M:%S%z)T' -1
..."ISO 날짜"를 가져옵니다.
답변2
스크립트를 호출하는 대신 자신이 만든 스크립트의 별칭을 찾고 있다면 다음과 같습니다.
alias datef='d="$(date +"%Y%m%d%H%M%S")" && mkdir "$d" && cd "$d" && vim readme.md'
별칭이 실행되는 동일한 폴더에 남아 있으려면( /[date]
vim을 종료한 후 해당 폴더에 머무르는 대신) cd
서브셸에서 다음을 사용하세요(효과는 cd
서브셸에 로컬임).
alias datef='d="$(date +"%Y%m%d%H%M%S")" && mkdir "$d" && ( cd "$d" && vim readme.md )'
또는 디렉터리를 전혀 변경하지 마세요.
alias datef='d="$(date +"%Y%m%d%H%M%S")" && mkdir "$d" && vim "$d/readme.md"'
답변3
별칭을 사용하면 이 모든 작업을 쉽게 수행할 수 있습니다. 예:
alias foo='mkdir -p "$(TZ=GMT date +"%Y%m%d%H%M%S")" && vim "$_"/readme.md'
-p
디렉토리가 이미 존재하는 경우에도 readme.md
그 디렉토리에서 파일을 편집하거나 생성할 수 있도록 하기를 원합니다 . 명령 TZ=GMT
의 시간대를 date
GMT로 설정합니다. 이 변수는 이전 명령에 제공된 인수로 저장되므로 방금 생성한 디렉터리에 파일이 $_
열립니다 . 에서 :vim $_/readme.md
readme.md
man bash
_
쉘이 시작되면 환경이나 인수 목록에 전달된 쉘 또는 실행 중인 쉘 스크립트를 호출하는 데 사용되는 경로 이름으로 설정하십시오. 이어서 확장 후 포그라운드에서 실행된 이전 단순 명령의 마지막 인수로 확장됩니다.
답변4
이 스크립트를 작성하여 해결책을 찾았습니다.
#!/bin/bash
d="$(TZ=GMT date +"%Y%m%d%H%M%S")"
mkdir "$d"
cd "$d"
vim readme.md