Lệnh thư mục cảm ứng Linux


9

Lệnh 'chạm' khi áp dụng vào thư mục là gì?

$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test

Câu trả lời:


8

Như đã nêu trong trang này , mục đích sử dụng chính touchlà:

Cập nhật thời gian truy cập và sửa đổi của từng TẬP TIN vào thời điểm hiện tại.

Vì vậy, nó cập nhật thời gian truy cập và sửa đổi của thư mục.


4

Ví dụ ở trên cùng không làm rõ rằng "chạm" đặt thời gian của thư mục (thời gian mới trong danh sách giống như ban đầu, đơn giản là vì cảm ứng đã sớm xuất hiện sau khi thư mục được tạo) .. . vâng, định nghĩa của "TẬP TIN" trong tài liệu không bao gồm các thư mục, vì vậy bạn có thể sử dụng cảm ứng để thay đổi dấu thời gian của họ, NHƯNG ...

Có một số tình huống mà bạn không thể thay đổi dấu thời gian của thư mục (đối với một số loại thư mục được gắn từ xa) ngay cả khi bạn có quyền làm bất cứ điều gì khác. ví dụ: NFS mount này:

$ touch -d "2014-07-02 12:15" /public/test.dir    
touch: setting times of ‘/public/test.dir’: Operation not permitted

Ngoài ra, bạn có thể gặp sự cố với một số ngày cũ không được hỗ trợ trên một số máy chủ, ví dụ:

$ mkdir  /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir

Những công việc này:

$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr  1  2014 /Acer/kopies/test.dir

Điều này sẽ hoạt động trên một thư mục địa phương nhưng đưa ra một ngày kỳ lạ dưới sự gắn kết Samba:

$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26  60410 /Acer/kopies/test.dir
                              ~~~~~~~~~~~~~

2

touchlà một chương trình Unix tiêu chuẩn được sử dụng để thay đổi dấu thời gian truy cập và sửa đổi của tệp. Nó cũng được sử dụng để tạo một tập tin trống mới.

Thông số kỹ thuật Unix đơn (SUS) chỉ định rằng cảm ứng sẽ thay đổi thời gian truy cập, thời gian sửa đổi hoặc cả hai, đối với một tệp. Tệp được xác định bởi một tên đường dẫn được cung cấp dưới dạng một đối số. Nó cũng chỉ định rằng nếu tệp được xác định không tồn tại, tệp được tạo và thời gian truy cập và sửa đổi được đặt theo quy định. Nếu không có dấu thời gian mới được chỉ định, cảm ứng sẽ sử dụng thời gian hiện tại.

-Wikipedia

Bạn có thể tìm thêm thông tin chuyên sâu về touchlệnh (hoặc bất kỳ lệnh nào bạn muốn biết) bằng cách sử dụng manlệnh như thế này:

man touch


2

Lý do ngay lập tức cho câu hỏi là thực tế là độ phân giải thời gian mặc định ls -llà tính bằng phút, do đó, một mục hệ thống tập tin được chạm trong cùng một phút sẽ hiển thị chính xác như nhau trong ls -lđầu ra mặc định .

Giải pháp cho vấn đề này được mô tả tại /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp và về cơ bản liên quan đến việc chạy ls -l --time-style=full-isothay thế.

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.