Câu trả lời:
Của bạn đây:
date +%Y%m%d%H%M%S
Như đã man date
nói ở gần trên cùng, bạn có thể sử dụng date
lệnh như sau:
date [OPTION]... [+FORMAT]
Đó là, bạn có thể cung cấp cho nó một tham số định dạng, bắt đầu bằng a +
. Bạn có thể đoán ý nghĩa của các ký hiệu định dạng tôi đã sử dụng:
%Y
là trong năm%m
là trong tháng%d
là trong ngàyBạn có thể tìm thấy biểu tượng này và các ký hiệu định dạng khác trong man date
.
Nếu đang sử dụng Bash, bạn cũng có thể sử dụng một trong các lệnh sau:
printf '%(%Y%m%d%H%M%S)T' # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1 # same as above
printf '%(%Y%m%d%H%M%S)T' -2 # prints the time the shell was invoked
Bạn có thể sử dụng Tùy chọn -v varname
để lưu trữ kết quả $varname
thay vì in nó ra stdout:
printf -v varname '%(%Y%m%d%H%M%S)T'
Trong khi lệnh ngày sẽ luôn được thực thi trong một vỏ con (tức là trong một quy trình riêng biệt) printf là một lệnh nội trang và do đó sẽ nhanh hơn.
%
tùy chọn bạn có thể chuyển vào, điều này dường như đang sử dụng date
lệnh. Vì vậy, man date
sẽ cung cấp cho bạn các tùy chọn có sẵn.
Cách thú vị / hài hước để làm điều này bằng cách sử dụng mở rộng tham số (yêu cầu bash 4.4
hoặc mới hơn):
${parameter@operator} - P operator
Việc mở rộng là một chuỗi là kết quả của việc mở rộng giá trị của tham số như thể nó là một chuỗi dấu nhắc.
$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
"`date +%Y-%m-%d %H:%M:%S`"
cho tôi mộtdate: illegal time format