웹사이트 검색

date 명령을 사용하여 Bash에서 날짜 및 시간을 작업하는 방법


Date 명령은 시스템 날짜와 시간을 설정하거나 표시할 수 있는 외부 bash 프로그램입니다. 또한 여러 가지 서식 옵션도 제공합니다. Date 명령은 기본적으로 모든 Linux 배포판에 설치됩니다.

which date
type -a date

현재 날짜와 시간을 표시하는 터미널에 date 명령을 입력하세요.

date

Linux 시스템 날짜 및 시간 변경

date 명령을 사용하면 시스템 날짜, 시간 및 시간대를 수정할 수 있으며 변경 사항은 하드웨어 시계와 동기화되어야 합니다.

date --set="Thu Nov 12 13:06:59 IST 2020"
hwclock --systohc

서식 옵션

서식 지정 옵션 목록을 얻을 수 있는 좋은 장소는 매뉴얼 페이지입니다.

man date

우리가 사용할 가장 일반적인 서식 옵션 중 일부를 살펴보겠습니다.

  • 서식을 적용하려면 "+ 다음에 "formatter"를 사용하세요.
  • GNU\LINUX에 대한 형식 지정 옵션 목록을 얻으려면 링크된 매뉴얼 페이지를 살펴보십시오.
  • BSD에 대한 형식 지정 옵션 목록을 얻으려면 링크된 매뉴얼 페이지를 살펴보십시오.

date 명령의 두 가지 중요한 부분은 +% 형식과 –date 옵션을 사용하는 것입니다.

이제 date 명령에 몇 가지 서식을 적용해 보겠습니다. 서식을 적용하려면 예와 같이 더하기 기호 (+)%formatter를 추가하세요.

Linux에서 날짜 처리

'date.sh'라는 간단한 쉘 스크립트에서 날짜 관련 포맷터를 사용하는 방법을 살펴보겠습니다.

PRINT YEAR,MONTH,DAY AND DATE...

echo "We are in the year = $(date +%Y)"
echo "We are in the year = $(date +%y)"

Difference between %Y and %y is %Y will print 4 digits while %y will print the last 2 digits of the year.

echo "We are in the month = $(date +%m)"
echo "We are in the month = $(date +%b)"
echo "We are in the month = $(date +%B)"

Difference between %B and %b is, %B will print full month name while %b will print abbreviated month name.

echo "Current Day of the month = $(date +%d)"

echo "Current Day of the week = $(date +%A)"
echo "Current Day of the week = $(date +%a)"

Difference between %A and %a is, %A will print full Weekday name while %a will print abbreviated weekday name.

Instead of formatting to get the date, we can use %D which will print the date as %m/%d/%y or %F which prints in %Y-%M-%d format.

echo "Date using %D = $(date +%D)"
echo "Date using %F = $(date +%F)"

Linux에서의 처리 시간

'time.sh'라는 간단한 쉘 스크립트에서 시간 관련 포맷터를 사용하는 방법을 살펴보겠습니다.

PRINT HOURS, MINS, SECONDS, NANO SECONDS

echo Hours = $(date +%H)
echo Minutes = $(date +%M)
echo Seconds = $(date +%S)
echo Nanoseconds = $(date +%N)
echo Epoch Time = $(date +%s)

echo "current time = $(date +%H:%M:%S:%N)"

can also use %T which displays Time in HH:MM:SS format.

echo "current time in 24 hour format = $(date +%T)"

can also use %r to display time in 12 hour format.

echo "current time in 12 hour format = $(date +%r)"

–date 또는 -d 플래그 사용

--date 또는 -d 플래그 입력을 사용하면 문자열로 전달될 수 있으며 date 명령은 이를 현명하게 처리하는 방법을 알고 있습니다.

작동 방식을 이해하기 위해 몇 가지 예를 살펴보겠습니다.

Print yesterday's date and time.
echo "Yesterday = $(date -d "Yesterday")"

Print Tomorrow date and time.
echo "tomorrow = $(date -d "tomorrow")"

Find what is the date and time before 10 days from now.
echo "Before 10 days = $(date -d "tomorrow -10 days")"

Find last month and next month
echo "Last month = $(date -d "last month" "%B")"
echo "Next month = $(date -d "next month" "%B")"

Find last year and next year
echo "Last Year = $(date -d "last year" "+%Y")"
echo "Next Year = $(date -d "next year" "+%Y")"

Forecast the weekday
echo "2 days away from today and it comes on weekdays? = $(date -d "Today +2 days" "+%A")

일반적인 작업

주어진 두 날짜 사이의 일수를 계산합니다.

echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))

주어진 연도가 윤년인지 아닌지 알아보세요.

for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done

날짜 명령의 출력을 변수에 할당합니다.

TODAY=$(date +%Y-%m-%d)
OR
TODAY1=$(date +%F)
echo $TODAY 
echo $TODAY1

파일 이름에 날짜를 추가하여 로그 파일을 생성합니다.

로그 파일, 백업 또는 텍스트 파일을 생성하는 동안 날짜와 시간을 추가하는 것은 가장 자주 접하게 되는 일반적인 작업입니다. 예를 들어 백업을 수행하기 위해 쉘 스크립트를 만들었습니다.

이 스크립트는 00:00부터 23:59까지 백업을 수행하며 매일 다음 날 00:00에 실행되도록 예약됩니다. 어제 날짜 형식으로 로그 파일을 만들고 싶습니다.

CUSTOM_FORMAT=$(date --date "Yesterday" "+%d-%y-%H:%M")
LOG_FILE=/var/log/custom_application/application_${CUSTOM_FORMAT}.log
echo "Script started" >>  ${LOG_FILE}
...
CODE BLOCKS
...
echo "Script completed" >> ${LOG_FILE}

이것이 바로 이 기사입니다. 이 기사에서는 Linux에서 bash 날짜와 시간을 사용하는 방법을 살펴보았습니다. 피드백을 알려주세요.