ISO 날짜를 따라 이름이 지정된 새 폴더로 파일을 만들고 vim에서 파일의 별칭을 엽니다.

ISO 날짜를 따라 이름이 지정된 새 폴더로 파일을 만들고 vim에서 파일의 별칭을 엽니다.

.bashrcISO 날짜라는 폴더에 마크다운이나 텍스트 파일을 만들 수 있도록 별칭을 만들고 싶습니다.그리니치 표준시그런 다음 편집기에서 파일을 엽니다.

이것은 내 예상 출력(예)입니다. ./20211226220131/readme.mdreadme.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의 시간대를 dateGMT로 설정합니다. 이 변수는 이전 명령에 제공된 인수로 저장되므로 방금 생성한 디렉터리에 파일이 $_열립니다 . 에서 :vim $_/readme.mdreadme.mdman bash

_

쉘이 시작되면 환경이나 인수 목록에 전달된 쉘 또는 실행 중인 쉘 스크립트를 호출하는 데 사용되는 경로 이름으로 설정하십시오. 이어서 확장 후 포그라운드에서 실행된 이전 단순 명령의 마지막 인수로 확장됩니다.

답변4

이 스크립트를 작성하여 해결책을 찾았습니다.

#!/bin/bash
d="$(TZ=GMT date +"%Y%m%d%H%M%S")"
mkdir "$d"
cd "$d"
vim readme.md

관련 정보