Như @ TomMcKenzie nói trong một bình luận cho một câu trả lời khác, date -r 123456789
được cho là phổ biến hơn (tức là triển khai rộng rãi hơn) giải pháp đơn giản cho thời gian được đưa ra như giây kể từ thời đại Unix, nhưng tiếc là không có giải pháp di động được đảm bảo phổ quát nào.
Tùy chọn -d
trên nhiều loại hệ thống có nghĩa là một cái gì đó hoàn toàn khác với tiện ích mở rộng --date
của GNU Date. Ngày tháng buồn bã GNU không giải thích -r
giống như các triển khai khác này. Rất tiếc, bạn phải biết phiên bản nào của date
bạn đang sử dụng và nhiều lệnh Unix date
cũ hơn không hỗ trợ một trong hai tùy chọn.
Thậm chí tệ hơn, POSIX date
nhận không -d
cũng không -r
và cung cấp không có cách nào tiêu chuẩn trong bất kỳ lệnh nào cả (mà tôi biết) để định dạng một thời gian Unix từ dòng lệnh (kể từ POSIX AWK cũng thiếu strftime()
). (Bạn không thể sử dụng touch -t
và ls
vì trước đây không chấp nhận thời gian được cho là giây kể từ Thời đại Unix.)
Lưu ý rằng tính năng One One Awk có sẵn trực tiếp từ Brian Kernighan hiện đã tích hợp chức năng strftime()
cũng như chức năng systime()
để trả về thời gian hiện tại tính bằng giây kể từ thời đại Unix), vì vậy có lẽ giải pháp Awk là di động nhất.
Nguồn
2013-01-01 03:24:23
Bạn đang sử dụng vỏ nào? Bash? Zsh? Dấu gạch ngang? –
Bash - quên đề cập! – chimeracoder
bản sao có thể có của [Cách chuyển đổi dấu thời gian thành ngày trong bash?] (Http://stackoverflow.com/questions/2371248/how-to-convert-timestamps-to-dates-in-bash) – user