查看特定文件的可执行位/权限掩码元数据

Posted

技术标签:

【中文标题】查看特定文件的可执行位/权限掩码元数据【英文标题】:view executable bit/permission mask metadata for a specific file 【发布时间】:2016-08-16 14:41:19 【问题描述】:

git 应该在其元数据中为独立于当前 FS 权限的存储库中的每个文件保存一个“可执行”标志。

Git file permissions on Windows 展示了如何设置这个标志。

git ls-tree 显示已编译的权限掩码,但仅适用于整个存储库。


如何仅查看特定文件(或一堆文件)的标志?

描述该元数据的参考文档的链接将是理想的选择。我在https://git-scm.com/docs/ 找不到任何东西,但到处都是模糊的短语。

【问题讨论】:

嗯,我不完全明白为什么 git ls-tree HEAD /path/to/filegit ls-tree -d HEAD /path/to/directory 不符合您的需求 @user3159253 他们这样做了,我只是不明白我可以从文档中做到这一点。 【参考方案1】:

使用git ls-tree,只需给它更多参数:

$ git ls-tree HEAD xdiff*
100644 blob 54236f24b9786710f91650ac63f6004cdeb012e6    xdiff-interface.c
100644 blob fbb5a1c3949b6ef6ba0dfb758723a48f3b402190    xdiff-interface.h
040000 tree 4c60b91db5de467cf05e864429dce1b44cb843e7    xdiff

第一个输出字是模式,对于 blob,它始终是 100644100755。如果是100755,则设置可执行位,否则不设置。 (有趣的是:git 在内部存储整个模式值,作为没有前导零的八进制字符串。上面最后引用的行中的前导零是由git ls-tree 生成的。)

如果需要,保留文件或目录名;如果它是一个目录(模式040000 或类型tree——type 字符串实际上是从内部的mode 确定的,在这种情况下)并且你想检查它的内容,添加一个尾部斜杠:

$ git ls-tree HEAD xdiff/
100644 blob 4fb7e79410c22fba1fb390af2e09008e932f5ea8    xdiff/xdiff.h
100644 blob 2358a2d6326e54308413cb8a5e6b61eba06324e9    xdiff/xdiffi.c
100644 blob 8b81206c9af0767bd91c4b9e453f7c5c2bde47b1    xdiff/xdiffi.h
100644 blob 993724b11c40bacffee8df927018e5790a265bd4    xdiff/xemit.c
100644 blob d29710770ce40bafa6e9eb2b2ea7c9c8ba43c727    xdiff/xemit.h
100644 blob 73210cb6f3fb5d1cb90b1c5959a5a90e058ea1f2    xdiff/xhistogram.c
100644 blob 526ccb344d231fb978f53b80deb17ec6c8fed368    xdiff/xinclude.h
100644 blob 165a895a93e04b33ca7c8f3839ee85e0eccb4a07    xdiff/xmacros.h
100644 blob f338ad6c757cda29a052960a504715c062ab5dda    xdiff/xmerge.c
100644 blob 04e1a1ab2a863814df3b9a91d4e854704d47f3f5    xdiff/xpatience.c
100644 blob 13b55aba7441bc84d2c5c075110e9ef798ba18f8    xdiff/xprepare.c
100644 blob 8fb06a537451cbf3335ab4bdacb0f992e9744338    xdiff/xprepare.h
100644 blob 2511aef8d89ab52be5ec6a5e46236b4b6bcd07ea    xdiff/xtypes.h
100644 blob 62cb23dfd37743e4985655998ccabd56db160233    xdiff/xutils.c
100644 blob 4646ce575251b07053f20285be99422d6576603e    xdiff/xutils.h

(请注意,在 SHA-1 和路径之间有一个硬制表符 \t,由于 *** 显示此 OK,我将其留在了原文中。)

【讨论】:

我要补充一点,目录的-d 标志允许获取给定目录的权限,而不是其内容。就像ls -d 一样。

以上是关于查看特定文件的可执行位/权限掩码元数据的主要内容,如果未能解决你的问题,请参考以下文章

Linux中文件的可读,可写,可执行权限的解读以及chmod,chown,chgrp命令的用法

Linux中文件的可读,可写,可执行权限的解读以及chmod,chown,chgrp命令的用法

数据传输速率与信号传输速率

git 添加文件的可执行权限

如何通过策略出租码元数据给出租的策略指定不同的版本数据

Linux学习014特殊权限