Dan*_*eck 13 ls terminal.app macos
是否可以ls了解hiddenMac OS X 上的文件标志?
目前,一个简单的ls -lO产生:
$ 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
Run Code Online (Sandbox Code Playgroud)
所以我们有三种可见性:常规、可见文件、带有hidden文件标志的文件,它们实际上并未隐藏在终端中,以及名称以点开头的真正隐藏文件。
有没有办法,例如使用别名或可靠的 shell 函数,使ls处理hidden标记和.dothidden文件相同,即默认隐藏并使用ls -A或显示ls -a,类似于 Finder 的行为取决于 的值defaults read com.apple.Finder AppleShowAllFiles?
我知道man chflags特别提到hidden标志只隐藏在 GUI 中,即 Finder。
Dan*_*eck 10
这些是获取 OS X 的步骤,该 OS Xls会隐藏带有隐藏标志的文件,除非-a/-A指定了该选项,类似于点文件。
libutil和file_cmds从http://www.opensource.apple.com。每个包列表条目的右侧都有一个下载按钮。本指南是为 OS X 10.8.2, YMMV 编写的,如果您使用的是不同版本,请按照以下确切步骤编写。file_cmds.xcodeproj在 Xcode 中打开并选择构建ls目标。

选择左侧的file_cmdsXcode工程,ls在主区选择目标。在Build Settings选项卡中,在Headers类别中查找Header Search Paths并将路径添加到您提取.libutil

打开左侧文件夹print.c中的ls文件,然后删除显示#include <membershipPriv.h>. 之后保存文件。这应该会破坏一些东西,因为包含是有原因的,但我还没有确定它是什么。
打开ls.c同一文件夹中的文件,并/* Only display dot file if -a/-A set. */在display函数中查找注释。将其及其下方的条件替换为以下内容:
/* 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;
}
Run Code Online (Sandbox Code Playgroud)按Cmd-B构建。

选择产品左边(文件夹列表的末尾),然后单击右键ls。选择在 Finder 中显示。

将ls可执行文件移动到方便的地方,例如您的主目录。然后打开终端并运行sudo mv $HOME/ls /bin/ls,或者更好的是,bin在您的主目录中创建一个名为的新文件夹并将其移动到那里。将该文件夹添加到您的PATH事后。
测试结果:
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6216 次 |
| 最近记录: |