Nếu bạn phát ls -all
lệnh, một số tệp hoặc thư mục có năm và một số có thời gian? Tại sao một số hiển thị năm trong khi những người khác hiển thị thời gian? Là đại diện thời gian của thời gian các tập tin được tạo ra?
Nếu bạn phát ls -all
lệnh, một số tệp hoặc thư mục có năm và một số có thời gian? Tại sao một số hiển thị năm trong khi những người khác hiển thị thời gian? Là đại diện thời gian của thời gian các tập tin được tạo ra?
Câu trả lời:
Theo mặc định, dấu thời gian của tệp được liệt kê ở dạng viết tắt, sử dụng ngày như '30 tháng 3 năm 2002' cho các dấu thời gian không gần đây và ngày không có năm và thời gian như '30 tháng 3 23:45' cho dấu thời gian gần đây. Định dạng này có thể thay đổi tùy thuộc vào miền địa phương hiện tại như chi tiết bên dưới.
Dấu thời gian được coi là gần đây nếu nó dưới sáu tháng tuổi và không có ngày trong tương lai. Nếu dấu thời gian ngày hôm nay không được liệt kê ở dạng gần đây, dấu thời gian là trong tương lai, điều đó có nghĩa là bạn có thể gặp sự cố lệch đồng hồ có thể phá vỡ các chương trình như làm cho dấu thời gian của tệp.
Nguồn: http://www.gnu.org/software/coreutils/manual/coreutils.html#Formatted-file-timestamp
Để minh họa:
$ for i in {1..7}; do touch -d "$i months ago" file$i; done
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 21 02:38 file1
-rw-r--r-- 1 terdon terdon 0 Aug 21 02:38 file2
-rw-r--r-- 1 terdon terdon 0 Jul 21 02:38 file3
-rw-r--r-- 1 terdon terdon 0 Jun 21 02:38 file4
-rw-r--r-- 1 terdon terdon 0 May 21 02:38 file5
-rw-r--r-- 1 terdon terdon 0 Apr 21 2015 file6
-rw-r--r-- 1 terdon terdon 0 Mar 21 2015 file7
Thời gian đại diện là thời gian sửa đổi. Xin lưu ý rằng đó ls -all
là điều tương tự ls -l -a
, khác với ls --all
. Không có lý do để sử dụng gấp đôi l
trong ví dụ của bạn. Nếu bạn muốn xem thời gian sửa đổi cho mỗi tệp, bạn có thể sử dụng ls -al --full-time
.
ls
để sử dụng bình thường --time-style=long-iso
có thể hữu ích hơn. --full-time
hiển thị giây bao gồm chín mật mã (!) sau dấu thập phân thường không cần thiết.
--full-time
ngụ ý -l
, vì vậy bạn chỉ có thể sử dụng ls -a --full-time
.
Nếu ngày / giờ mà nó đang cố hiển thị là trong sáu tháng qua, hãy
ls
hiển thị ngày và giờ. Nếu lâu hơn sáu tháng - hoặc nếu trong tương lai - ls
sẽ hiển thị ngày và năm.
Như đã nêu trong các câu trả lời khác,
ls -ll
tương đương với ls -l
, vàls -all
tương đương với ls -al
, tương đương với ls -a -l
, ls -l -a
, và ls -la
.Với -l
tùy chọn, ls
hiển thị ngày / giờ sửa đổi của tệp (bao gồm cả thư mục, vì "mọi thứ đều là tệp"), trừ khi
-c
cũng được chỉ định, trong trường hợp nó hiển thị thời gian thay đổi, hoặc-u
cũng được chỉ định, trong trường hợp nó hiển thị thời gian truy cập.Xem ls (1) để biết thêm thông tin.
Đầu ra này được điều chỉnh cho nội dung thông tin tối đa: khi thời gian "đủ gần" với thời gian hiện tại (không hoàn toàn chắc chắn, nhưng tôi đoán trong vòng sáu tháng), năm được thay thế và thời gian trong ngày được hiển thị. Nếu không, năm được hiển thị. Đây là mặc định chủ yếu là vì bạn có thể không quan tâm nhiều đến thời gian chính xác của một thứ gì đó đã được sửa đổi, nếu thời điểm đó là nhiều năm trước. GNU coreutils ls
có --time-style
tùy chọn, để kiểm soát điều này một cách rõ ràng.
Bạn đã nhận ra điều gì chưa? Nó chỉ xuất hiện vào giờ ngày 20 tháng 10, tức là ngày hôm nay, điều đó có nghĩa là nó sẽ hiển thị lần cuối cùng bạn sửa đổi tệp, nhưng, trong những ngày khác không phải hôm nay, nó sẽ chỉ hiển thị ngày mà không có thời gian.
Hóa ra đó không phải là điều này, như Thomas đã trả lời. Tôi chỉ cố gắng sử dụng phương pháp khấu trừ, không yên tâm để có một kết luận chính xác sau tất cả.
Aug 6 19:50 .config
, Aug 6 19:48 VNCHOWTO
.
-all
. Lưu ý L cuối cùng là thừa, bởi vìall
không có nghĩa là từ "tất cả" mà là-a
(hiển thị tất cả các tệp) và-l
(định dạng danh sách dài). Tất cả cùng nhau,ls -al
giống như những gì bạn đang sử dụng.