regex - 我可以只对我通过它的名字使用 find 进行可写性测试,而不用递归吗?
问题描述
我有下面的代码,我只是想在/etc/passwd
文件中打印用户主目录的权限。我还试图只获取那些仅具有组和世界写入权限的目录。
我能够获取主目录的详细信息,但只能打印主目录中递归存在的所有目录。我只需要打印主目录的值而不是递归地这样做。
for homdir in $(cat /etc/passwd | awk 'BEGIN{FS=":"}{print $6}'); do find $homdir -perm -o+w; done > /tmp/writeperimissions
我希望输出应该只将目录的组和世界可写权限打印到/tmp/writeperimissions
(而不是递归地)。
解决方案
用于-maxdepth 0
仅匹配项目本身。因此:
while IFS=: read _ _ _ _ _ home _; do
[[ -d $home ]] || continue # skip directories that do not actually exist
find "$home" -maxdepth 0 -perm -o+w
done </etc/passwd | tee /tmp/world-writable-homedirs
当read
传递多个参数时,它会拆分为字符 in IFS
(在本例中为:
)上的字段,并将每个字段分配给一个由此命名的变量。在这种情况下,我们将前五个字段分配给名为 的变量_
,将第六个字段分配给一个名为 的变量home
。
不传递-r
toread
告诉它\:
作为文字处理:
,因此您可以让用户在其可读名称或 GECOS 字段中带有冒号,而不会放弃解析;这实际上使read
基于 - 的解析比基于 - 的解析更准确awk
。
推荐阅读
- edit - 三菱 GX Works2 在线程序更改错误
- authentication - 在 Paypal 中添加 Tracking API - 授权失败
- javascript - 当我向下滚动窗口时,它不会删除或添加活动类
- typescript - 打字稿中的条件函数参数
- powershell - 使用 PowerShell REST API 生成 SAS 令牌以管理 Azure Blob 容器
- azure - 在 Azure 管道中使用 Az Ml CLI 部署/更新 Azure ML 模型
- git - 没有这样的文件或目录
- powerbi - Power BI M like VBA:从按钮单击执行M代码并更新参数值?
- python - 使用正则表达式匹配精确数字
- javascript - ClickAwayListener 不适用于 Collapse 或 Fade 过渡