Cho đến nay, tất cả các câu trả lời sử dụng chương trình bên ngoài date
.
Từ Bash 4.2, printf
có một sửa đổi mới %(dateformat)T
rằng, khi được sử dụng với lập luận -1
kết quả đầu ra ngày hiện tại với định dạng do dateformat
, xử lý bởi strftime(3)
(man 3 strftime
cho thông tin về các định dạng).
Vì vậy, một giải pháp Bash tinh khiết:
printf '%(%s)T\n' -1
hoặc nếu bạn cần lưu trữ kết quả trong một biến var
:
printf -v var '%(%s)T' -1
Không chương trình bên ngoài và không có subshells!
Từ Bash 4.3, nó thậm chí có thể không xác định -1
:
printf -v var '%(%s)T'
(nhưng nó có thể là khôn ngoan để luôn luôn cung cấp cho các lập luận -1
dù sao).
Nếu bạn sử dụng -2
làm đối số thay vì -1
, Bash sẽ sử dụng thời gian vỏ được bắt đầu thay vì ngày hiện tại (nhưng tại sao bạn muốn điều này?).
Nguồn
2014-11-07 15:23:09
Xin lỗi, tôi phải nói điều này .... '' Ngày không có vẻ để phục vụ tùy chọn đó. Có một cách dễ dàng? '' - đọc hướng dẫn một lần nữa ;-) – TheBonsai
Một số phiên bản của ngày có nó và một số thì không. Vì vậy, nó không phải lúc nào cũng có mặt. Tôi chạy 'type -a date' và sử dụng một phiên bản khác và đã hoạt động. –
FWIW, Ubuntu chỉ có/bin/ngày, mà câu trả lời của @ Steef hoạt động –