Làm cho tôi biết về cờ ẩn của tập tin


12

Có thể lsnhận biết hiddencờ tập tin trên Mac OS X không?

Hiện tại, một ls -lOsản phẩm đơn giản :

$ ls -lO
total 0
drwxr-xr-x@  84 danielbeck  staff  -      2856 29 Mai 22:44 Applications
drwx------+ 158 danielbeck  staff  -      5372 29 Mai 15:27 Desktop
drwx------@ 250 danielbeck  staff  -      8500 30 Mai 20:40 Documents
drwx------+  11 danielbeck  staff  -       374 29 Mai 22:21 Downloads
drwx------@  84 danielbeck  staff  -      2856 29 Mai 22:48 Library
drwx------@   3 danielbeck  staff  hidden  102  3 Apr 20:45 Movies
drwx------@   5 danielbeck  staff  hidden  170  3 Apr 20:45 Music
drwx------+ 215 danielbeck  staff  -      7310 29 Mai 22:54 Pictures
drwxr-x---@   7 danielbeck  staff  hidden  238  3 Apr 20:45 Public
drwxr-xr-x@   4 danielbeck  staff  hidden  136 24 Apr 23:25 Sites

Vì vậy, chúng tôi có ba loại khả năng hiển thị: tệp thông thường, tệp hiển thị, tệp có hiddencờ tệp, thực sự không bị ẩn trong Terminal và các tệp thực sự bị ẩn có tên bắt đầu bằng dấu chấm.

Có cách nào, ví dụ như sử dụng bí danh hoặc hàm shell đáng tin cậy, để lsxử lý các hiddencờ và .dothiddencác tệp giống nhau, nghĩa là ẩn theo mặc định và hiển thị với ls -Ahoặc ls -a, tương tự như cách Finder hoạt động tùy thuộc vào giá trị của defaults read com.apple.Finder AppleShowAllFiles?

Tôi biết rằng cờ man chflagsđề cập cụ thể hiddenchỉ ẩn từ GUI, tức là Finder.

Câu trả lời:


8

Đây là các bước để có được một OS X lsẩn các tệp có cờ ẩn trừ khi -a/-Atùy chọn được chỉ định, tương tự như các tệp chấm.

  1. Cài đặt Xcode. Tôi đang sử dụng Xcode 4.5.1 dưới đây.
  2. Tải xuống bản phát hành HĐH của bạn libutilfile_cmdstừ http://www.opensource.apple.com . Có một nút tải xuống ở bên phải của mỗi mục nhập danh sách gói. Hướng dẫn này được viết cho OS X 10.8.2, YMMV với các bước chính xác bên dưới nếu bạn đang ở một phiên bản khác.
  3. Trích xuất cả tài liệu lưu trữ.
  4. Mở file_cmds.xcodeprojXcode và chọn để xây dựng lsmục tiêu.

    Ảnh chụp màn hình

  5. Chọn file_cmdsdự án Xcode ở bên trái và chọn lsmục tiêu trong khu vực chính. Trong tab Cài đặt bản dựng , hãy tìm Đường dẫn tìm kiếm tiêu đề trong danh mục Tiêu đề và thêm đường dẫn vào thư mục vào nơi bạn trích xuất libutil.

    Ảnh chụp màn hình

  6. Mở tệp print.ctrong lsthư mục bên trái và xóa dòng có nội dung #include <membershipPriv.h>. Lưu tập tin sau đó. Điều này sẽ phá vỡ một cái gì đó, bởi vì bao gồm có vì một lý do, nhưng tôi chưa xác định nó là gì.

  7. Mở tệp ls.ctrong cùng thư mục và tìm nhận xét cho biết /* Only display dot file if -a/-A set. */trong displayhàm. Thay thế nó và các điều kiện dưới đây bằng:

    /* Only display dot file and file with hidden flag if -a/-A set. */
    sp = cur->fts_statp;
    if (((sp != NULL && (sp->st_flags & 0x8000)) || cur->fts_name[0] == '.') && !f_listdot) {
        cur->fts_number = NO_PRINT;
        continue;
    }
    
  8. Nhấn Cmd- Bđể xây dựng.

    Sự thành công!

  9. Chọn Sản phẩm ở bên trái (cuối danh sách thư mục) và nhấp chuột phải ls. Chọn Hiển thị trong Finder .

    Xây dựng ảnh chụp màn hình thư mục đầu ra

  10. Di chuyển lsthực thi ở đâu đó thuận tiện, ví dụ thư mục nhà của bạn. Sau đó mở Terminal và chạy sudo mv $HOME/ls /bin/ls, hoặc, thậm chí tốt hơn, tạo một thư mục mới có tên bintrong thư mục chính của bạn và di chuyển nó đến đó. Thêm thư mục PATHđó vào sau đó của bạn .

Kiểm tra kết quả:

$ mkdir test
$ cd test
$ touch foo bar
$ chflags hidden bar
$ /bin/ls -lO
total 0
-rw-r--r--@ 1 danielbeck  staff  hidden 0 25 Okt 22:25 bar
-rw-r--r--  1 danielbeck  staff  -      0 25 Okt 22:25 foo
$ $HOME/bin/ls -lO
total 0
-rw-r--r--  1 danielbeck  staff  - 0 25 Okt 22:25 foo
$ $HOME/bin/ls -A
bar foo
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.