Câu trả lời:
Của bạn đây:
date +%Y%m%d%H%M%S
Như đã man datenói ở gần trên cùng, bạn có thể sử dụng datelệ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ả $varnamethay 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 datelệnh. Vì vậy, man datesẽ 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.4hoặc mới hơn):
${parameter@operator} - P operatorViệ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