Lệnh date nằm trong shell Bash, đây là shell mặc định trên hầu hết các bản phân phối Linux và thậm chí cả macOS. Hướng dẫn này cho biết cách kiểm soát ngày trên dòng lệnh và cách sử dụng nó trong các tập lệnh shell để làm nhiều việc hơn là chỉ in thời gian.
Chạy lệnh date để xem thông tin này. In ngày và giờ hiện tại cho múi giờ của bạn:
date
Định dạng mặc định trông hơi ngớ ngẩn. Tại sao năm không được in sau tháng và ngày, thay vì được đánh dấu cuối cùng, sau múi giờ? Đừng lo: nếu bạn có quyền kiểm soát định dạng đầu ra mà bạn muốn, dữ liệu sẽ phân phối định dạng đó theo từng đợt. Có hơn 40 tùy chọn mà bạn có thể vượt qua để hướng dẫn nó định dạng kết quả chính xác như bạn muốn.
Để sử dụng bất kỳ tùy chọn nào, hãy nhập ngày, dấu cách, dấu cộng + và tùy chọn bao gồm dấu phần trăm ở đầu. Tùy chọn %c (ngày và giờ theo ngôn ngữ) làm cho ngày và giờ được in ở định dạng ngôn ngữ đã chuẩn hóa. Miền địa phương xác định thông tin địa lý và văn hóa được cung cấp trong quá trình cài đặt hệ điều hành. Ngôn ngữ kiểm soát những thứ như ký hiệu tiền tệ, khổ giấy, múi giờ và các chuẩn mực văn hóa khác.
date +%c
Bây giờ năm xuất hiện ở một vị trí tự nhiên hơn trong sản xuất.
Bạn có thể chỉ định một số tùy chọn cho đến nay cùng một lúc. Chuỗi các tùy chọn được gọi là chuỗi định dạng. Để xem tên của ngày (%A), ngày của tháng (%d) và tên của tháng (%B), hãy sử dụng lệnh sau:
date +%A%d%B
Nó hoạt động, nhưng nó xấu. Không vấn đề gì, chúng ta có thể chèn khoảng trắng miễn là chúng ta đặt toàn bộ chuỗi định dạng trong dấu ngoặc kép. Lưu ý rằng + nằm ngoài dấu ngoặc kép.
date +"%A %d %B"
Bạn có thể thêm văn bản vào chuỗi định dạng, ví dụ:
date +"Today is: %A %d %B"
Cuộn ngày lên và xuống trang thủ công để tìm tùy chọn bạn muốn nhanh chóng trở nên mệt mỏi. Chúng tôi đã chia các tùy chọn thành các nhóm để giúp bạn điều hướng qua chúng dễ dàng hơn.
Tùy chọn hiển thị ngày và giờ
%c: In ngày và giờ ở định dạng ngôn ngữ, bao gồm cả múi giờ.
Tùy chọn hiển thị ngày
%D: In ngày ở định dạng mm/dd/yy.
%F: In ngày ở định dạng yyyy-mm-dd.
%x: In ngày ở định dạng ngôn ngữ.
Tùy chọn hiển thị ngày
% a: In ra tên của ngày, viết tắt Mon, Tue, Wed. vân vân.
%A: in tên đầy đủ của ngày, Thứ Hai, Thứ Ba, Thứ Tư, v.v.
% u: In số ngày trong tuần, trong đó Thứ hai = 1thứ ba = 2thứ tư = 3 vân vân.
% in: In số ngày trong tuần, trong đó Chủ nhật = 0thứ hai = 1thứ ba = 2 vân vân.
%d: In ngày trong tháng, với số 0 đứng đầu nếu cần (01, 02…09).
%e: In ngày trong tháng, với khoảng trắng ở đầu nếu cần (“1”, “2”…”9″). Lưu ý rằng dấu nháy đơn không được in.
%j: In ngày trong năm, với tối đa hai số 0 đứng đầu nếu cần.
Tùy chọn hiển thị tuần
%U: In ra số tuần của năm, coi Chủ nhật là ngày đầu tiên của tuần. Ví dụ, tuần thứ ba của năm, tuần thứ hai mươi của năm, v.v.
%V: In số tuần của năm theo ISOcoi thứ Hai là ngày đầu tuần.
%W: Số tuần trong năm, coi Thứ Hai là ngày đầu tuần.
Tùy chọn hiển thị tháng
%b hoặc %h: In tháng viết tắt Jan, Feb, Mar, v.v.
%B: in tên đầy đủ của tháng, tháng 1, tháng 2, tháng 3, v.v.
% m: In số tháng, với số 0 đứng đầu nếu cần 01, 02, 03…12.
Tùy chọn hiển thị năm
%C: In tuổi không có năm. Năm 2019, nó sẽ in 20.
%y: In năm dưới dạng hai chữ số. năm 2019 sẽ in 19.
% Y: In năm dưới dạng bốn chữ số.
Tùy chọn hiển thị thời gian
%T: In thời gian dưới dạng HH:MM:SS.
%R: In giờ và phút dưới dạng HH:MM mà không có giây, sử dụng đồng hồ 24 giờ.
% r: In thời gian theo cài đặt ngôn ngữ, sử dụng đồng hồ 12 giờ và chỉ báo sáng hoặc chiều.
% X: In thời gian theo cài đặt ngôn ngữ sử dụng đồng hồ 24 giờ. Bị cáo buộc. Lưu ý rằng trong quá trình thử nghiệm, tùy chọn này hoạt động giống như %r như minh họa bên dưới. Trên một máy Linux được định cấu hình cho ngôn ngữ Vương quốc Anh và được đặt thành GMT, máy in thời gian bằng đồng hồ 24 giờ không có chỉ báo AM hoặc PM như mong đợi.
Tùy chọn hiển thị thời gian
%H: In thời gian 00, 01, 02…23.
% I: In thời gian bằng đồng hồ 12 giờ, 00, 01, 02… 12, với số 0 đứng đầu nếu được yêu cầu.
Tùy chọn hiển thị phút
%M: hiển thị phút, 01, 02, 03… 59, với số 0 đứng đầu nếu cần.
Tùy chọn hiển thị giây
% s: In số giây kể từ 1970-01-01 00:00:00, là thời điểm bắt đầu Kỷ nguyên Unix.
%S: in giây, 01, 02, 03… 59, với số 0 đứng đầu nếu cần.
%N: In nano giây.
Tùy chọn hiển thị thông tin múi giờ
% of: In chênh lệch múi giờ giữa múi giờ và giờ UTC.
%:z: In chênh lệch múi giờ giữa múi giờ và giờ UTC, z: giữa giờ và phút. Lưu ý: giữa dấu % và z.
%::z: In chênh lệch múi giờ giữa múi giờ và giờ UTC, với: giờ, phút và giây. Lưu ý :: giữa dấu % và z.
%Z: In tên theo thứ tự bảng chữ cái của múi giờ.
tùy chọn định dạng
% p: In chữ hoa chỉ báo AM hoặc PM.
% P: In chỉ báo sáng hoặc chiều ở dạng chữ thường. Lưu ý cách giải quyết với hai tùy chọn này. Chữ p viết thường xuất ra chữ in hoa và chữ P in hoa in ra chữ thường.
%t: in thẻ.
%n: In một dòng mới.
Tùy chọn để sửa đổi các tùy chọn khác
Các công cụ sửa đổi này có thể được chèn vào giữa % và ký tự tùy chọn của các tùy chọn khác để sửa đổi cách hiển thị của chúng. Ví dụ: % -S sẽ xóa số 0 đứng đầu đối với các giá trị giây có một chữ số.
-: Một dấu gạch nối đơn ngăn các giá trị một chữ số được đệm bằng số không.
_: dấu gạch dưới đơn thêm khoảng trắng ở đầu cho các giá trị một chữ số.
0: Chứa các số 0 đứng đầu cho các giá trị một chữ số.
^: Sử dụng chữ hoa khi có thể (không phải tất cả các tùy chọn đều bao gồm công cụ sửa đổi này).
#: Nếu có thể, hãy sử dụng ngược lại với mặc định của tùy chọn (không phải tất cả các tùy chọn đều có công cụ sửa đổi này).
Hai thủ thuật hay nữa
Để biết thời gian sửa đổi cuối cùng của tệp, hãy sử dụng tùy chọn -r (tham chiếu). Lưu ý rằng điều này sử dụng – (gạch nối) thay vì dấu % và không yêu cầu dấu +. Hãy thử lệnh này trong thư mục nhà của bạn:
date -r .bashrc
Cài đặt TZ cho phép bạn thay đổi múi giờ trong khoảng thời gian của một lệnh.
TZ=GMT date +%c
Sử dụng ngày trong tập lệnh
Kích hoạt tập lệnh shell Bash để in ngày giờ là chuyện nhỏ. Tạo một tệp văn bản với nội dung sau và lưu nó với tên gd.sh.
#!/bin/bash TODAY=$(date +"Today is %A, %d of %B") TIMENOW=$(date +"The local time is %r") TIME_UK=$(TZ=BST date +"The time in the UK is %r") echo $TODAY echo $TIMENOW echo $TIME_UK
Nhập lệnh sau để đặt quyền thực thi và làm cho tập lệnh có thể thực thi được.
chmod +x gd.sh
Chạy tập lệnh bằng lệnh này:
./gd.sh
Chúng ta có thể sử dụng lệnh date để cung cấp dấu thời gian. Tập lệnh được hiển thị sẽ tạo một thư mục có dấu thời gian làm tên. Sau đó, nó sẽ sao chép tất cả các tệp văn bản từ thư mục hiện tại vào đó. Bằng cách chạy tập lệnh này định kỳ, chúng tôi có thể chụp nhanh các tệp văn bản của mình. Theo thời gian, chúng tôi sẽ tạo một loạt thư mục với các phiên bản khác nhau của tệp văn bản.
Lưu ý rằng đây không phải là một hệ thống sao lưu mạnh mẽ, nó chỉ nhằm mục đích minh họa.
Tạo một tệp văn bản với nội dung sau và lưu nó với tên snapshot.sh.
#!/bin/bash # obtain the date and time date_stamp=$(date +"%F-%H-%M-%S") # make a directory with that name mkdir "$date_stamp" # copy the files from the current folder into it cp *.txt "$date_stamp" # all done, report back and exit echo "Text files copied to directory: "$date_stamp
Nhập lệnh sau để đặt quyền thực thi và làm cho tập lệnh có thể thực thi được.
chmod +x snapshot.sh
Chạy tập lệnh bằng lệnh này:
./snapshot.sh
Bạn sẽ thấy rằng thư mục đã được tạo. Tên của nó là ngày và thời gian tập lệnh được thực thi. Bên trong thư mục này là các bản sao của các tệp văn bản.
Với một chút suy nghĩ và sáng tạo, ngay cả một lệnh ngày khiêm tốn cũng có thể được sử dụng hiệu quả.