Busybox 도구만 사용하여 지정된 월의 날짜를 UNIX 타임스탬프로 변환하려면 어떻게 해야 합니까?

Busybox 도구만 사용하여 지정된 월의 날짜를 UNIX 타임스탬프로 변환하려면 어떻게 해야 합니까?

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 date2는 약간의 도움을 받아 주어진 문자열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에는 dateGNU 명령의 대부분의 기능 datedateGNU 명령에 없는 기능 중 하나인 -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.

관련 정보