Lệnh 'ngày + ĐỊNH DẠNG' -% a,% A,% b, v.v. được gọi là gì?


10

Các datelệnh kết quả đầu ra ngày hiện tại và thời gian như thế này: Fri Apr 12 15:04:03 UTC 2013.

Để có thời gian ngày đầu ra ở định dạng tùy chỉnh, chúng ta có thể sử dụng date +FORMAT, ví dụ như thế này: date "+%Y-%m-%dT%H:%M:%S%:z"cung cấp một cái gì đó như thế 2013-04-12T15:04:37+00:00.

Nhưng tôi muốn biết những gì %Y, %m, %d, %H, %M, %S, vv được gọi chung là (tức là thuật ngữ). Ngoài ra, những gì Tđược gọi là, vì nó khác với phần còn lại?


3
FORMAT điều khiển đầu ra. Trình tự diễn giải là người phạm lỗi - người đàn ông dateVà người đàn ông chỉ là một người theo nghĩa đen.
manatwork

@manatwork Trong trang man, tôi nghĩ các trình tự đề cập đến cả %Yý nghĩa tương ứng của chúng.
it_me

Mẹo:date +"You will die in the year %Y"
Izkata

@Izkata Không có ý nghĩa (?)
it_me

1
@TheoneManis Chỉ là một ví dụ về việc Tkhông đặc biệt. Ngoài ra, tôi đã có một ngày kỳ lạ tại nơi làm việc khi tôi gõ nó (lắng nghe các cuộc trò chuyện của đồng nghiệp).
Izkata

Câu trả lời:


7

Thuật ngữ được sử dụng trong đặc tả POSIX của datelệnh là "thông số kỹ thuật chuyển đổi".

Chuỗi định dạng cho datelệnh dựa trên chuỗi định dạng cho printfhàm C ; tiêu chuẩn C cũng đề cập đến những thứ như %d"thông số kỹ thuật chuyển đổi".

Tkhông đi trước %chỉ là một ký tự: "Tất cả các ký tự khác sẽ được sao chép vào đầu ra mà không thay đổi."

Theo phần lịch sử thay đổi của mô tả POSIX về date:

MÔ TẢ được cập nhật để tham khảo các thông số kỹ thuật chuyển đổi, thay vì các mô tả trường để thống nhất với danh mục LC_TIME.

Vì vậy, rõ ràng một phiên bản trước đó của đặc tả đã sử dụng cụm từ "mô tả trường", nhưng "thông số kỹ thuật chuyển đổi" là thuật ngữ chính thức hiện tại.

Tất nhiên điều đó không có nghĩa là bạn phải tham khảo chúng theo cách đó.


Là " conversion sequences" hoặc " format sequences" điều khoản thích hợp quá? Tôi đang xem xét sequencestrên specificationsvì nó thực sự được đề cập trong trang người đàn ông cho date.
it_me

2
@TheoneManis: Bất kỳ ai trong số ba người dường như đủ rõ ràng về ý nghĩa của nó.
Keith Thompson

4

Tôi nghĩ rằng "các chuỗi thoát" hoặc (trong trường hợp này) "các ký tự đặc biệt cho các chuỗi thoát phần trăm" sẽ là cách điển hình để đề cập đến chúng. Các chuỗi thoát ngược và phần trăm thoát được sử dụng nhiều trong C (ví dụ printf), vì vậy chúng cũng đã được lọc thành một số lệnh Unix (như chỉ định dấu nhắc cho trình bao).

"Chuỗi thoát" là "% Y", "% m", "% d", v.v. và "các ký tự đặc biệt" là "Y", "m", "d", v.v. "%" sẽ là "ký tự thoát" (ký tự mang lại cho nhân vật sau đây một ý nghĩa khác thường / đặc biệt).


3

Tài liệu này từ Trung tâm thông tin của IBM tuyên bố rõ ràng rằng các bảng chữ cái trong %Y, %m, %d, %H, %M, %S, vv được gọi là " Dòng Phần mô tả ".

Bạn phải đặt trước mỗi bộ mô tả trường với % (dấu phần trăm). Hệ thống thay thế bộ mô tả trường bằng giá trị được chỉ định. [...] dateLệnh sao chép bất kỳ ký tự nào khác vào đầu ra mà không thay đổi.

Điều đó trả lời hai câu hỏi của tôi (khoảng% n & T). Và tôi tin rằng điều này là có thẩm quyền như nó có thể nhận được.


1
IBM đã không phát minh ra datelệnh; Điều gì làm cho tài liệu của họ có thẩm quyền? Hành vi của lệnh hiện được xác định bởi POSIX, không sử dụng thuật ngữ đó. Lịch sử thay đổi ở cuối mô tả POSIX cho biết "MÔ TẢ được cập nhật để tham khảo các thông số kỹ thuật chuyển đổi, thay vì mô tả trường để thống nhất với danh mục LC_TIME.", Ngụ ý rằng "đặc tả chuyển đổi", không phải là "mô tả trường" Thời hạn hiện tại. Xem thêm câu trả lời cập nhật của tôi.
Keith Thompson

2

Như những người khác đã nêu, đó Tlà một lá thư T. Nhưng để cụ thể, ví dụ của bạn date "+%Y-%m-%dT%H:%M:%S%:z"dường như là một chuỗi định dạng tuân theo thông số kỹ thuật ISO-8601 cho ngày và giờ. Vì vậy, đây Tlà một dấu phân cách phân tách ngày với thời gian.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.