Mon Jan 1 23:59:59 2018 GMT
저는 비지박스 도구에 대한 액세스가 거의 제한된 환경에서 작업하고 있으며 쉘 스크립트에서 날짜 형식을 유닉스 타임스탬프로 변환하려고 합니다. 구문 분석되는 입력 시간의 형식을 변경할 수 없습니다. busybox date
이 날짜 형식이나 지정된 월의 다른 형식을 이해할 수 없는 것 같습니다 . 나는 이것을 수행하는 정말 못생긴 스크립트를 가지고 있지만 더 나은 스크립트를 아는 사람이 있습니까?
편집: 해당 date -D
옵션은 나에게 적합하지 않았습니다. 알아냈어요.
date: invalid option -- 'D'
BusyBox v1.24.1 (2018-01-11 16:07:45 PST) multi-call binary.
Usage: date [OPTIONS] [+FMT] [TIME]`
답변1
busybox date
2는 약간의 도움을 받아 주어진 문자열1 (GMT 시간대 제외) 의 날짜 를 완벽하게 구문 분석할 수 있습니다.
$ gdate='Mon Jan 1 23:59:59 2018 GMT'
$ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z'
Mon Jan 1 23:59:59 GMT 2018
도움말은 -D
소스 형식 설명 옵션을 통해 제공됩니다.
UNIX 타임스탬프를 얻으려면 예상되는 출력 형식을 추가하면 됩니다 +'%s'
.
$ TZ=GMT0 busybox date -d "$gdate" -D '%a %b %d %T %Y %Z' +'%s'
1514851199
1
busybox에는 date
GNU 명령의 대부분의 기능 date
과 date
GNU 명령에 없는 기능 중 하나인 -D
옵션이 있습니다. 다음과 같이 busybox 도움말을 받으세요.
$ busybox date --help
BusyBox v1.27.2(Debian 1:1.27.2-2) 다중 호출 바이너리.
사용법: 날짜 [옵션] [+FMT] [시간]
시간 표시(+FMT 사용) 또는 시간 설정
[-s,--set] TIME Set time to TIME -u,--utc Work in UTC (don't convert to local time) -R,--rfc-2822 Output RFC-2822 compliant date string -I[SPEC] Output ISO-8601 compliant date string SPEC='date' (default) for date only, 'hours', 'minutes', or 'seconds' for date and time to the indicated precision -r,--reference FILE Display last modification time of FILE -d,--date TIME Display TIME, not 'now' -D FMT Use FMT for -d TIME conversion
-D FMT
이 옵션 에 주의하시기 바랍니다 .
2다음
두 가지 방법으로 busybox를 호출 할 수 있습니다 date
.
$ busybox date
busybox
또는 해당 이름의 링크가 date
이미 올바른 디렉터리에 설치된 경우 PATH
:
$ date
확인하려면 설치 날짜를 물어보거나 알아보세요 --version
.--help
GNU 사용 date
:
$ date --version
date (GNU coreutils) 8.28
또는 (Busybox date
):
$ date --help
BusyBox v1.27.2 (Debian 1:1.27.2-2) multi-call binary.
…
…