Làm thế nào để tôi có được sự khác biệt giữa hai dấu thời gian?


7

Tôi đang tạo một kịch bản sao lưu đơn giản. Tôi muốn có một thông báo "Bạn đã sao lưu lần cuối x ngày trước" khi đăng nhập. Tôi có thể tạo một tệp khi thực hiện sao lưu "backup / .last_backup_timestamp" nhưng tôi nên sử dụng định dạng nào và làm cách nào để tìm thấy sự khác biệt trong những ngày giữa và bây giờ trong bash?

Cảm ơn bạn

Câu trả lời:


8

Bạn có thể sử dụng datetiện ích để viết dấu thời gian của a filevà thời gian hiện tại, khi giây trôi qua từ Đại Kỷ Nguyên, sau đó định dạng chuỗi để chuyển đổi giây của chênh lệch theo ngày với bc:

echo "scale=2; ($(date +%s)-$(date -r file +%s)) / (3600 * 24)" \
  | bc

2
Bạn không cần bcđiều đó:echo $(( ( $(date +%s) - $(date -r file +%s) ) / 3600 / 24 ))
Mat

1
@Mat: Tôi biết, nhưng một phần nhỏ trong ngày có thể quan trọng.
enzotib
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.