加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

写入文件在Linux中使用另一个组

发布时间:2020-12-14 00:30:59 所属栏目:Linux 来源:网络整理
导读:我有一个用户ID操作,它属于sysgroup,usergroup等多个组.当我在默认情况下写入其他用户目录时,它正在sysgroup下写入.但对于某些用户,我需要使用usergroup权限进行编写.我该如何实现这一目标? 这是我的示例代码 if ls n18_????_??????????.txt /dev/null; the
我有一个用户ID操作,它属于sysgroup,usergroup等多个组.当我在默认情况下写入其他用户目录时,它正在sysgroup下写入.但对于某些用户,我需要使用usergroup权限进行编写.我该如何实现这一目标?

这是我的示例代码

if ls n18_????_??????????.txt &> /dev/null; then
     cp n18_????_??????????.txt /export/home/user
     chgrp usergroup /export/home/user/n18_????_??????????.txt
     mv n18_????_??????????.txt $archDir
fi

我正在复制然后更改组,所以每次它更改匹配模式的所有文件的组.

解决方法

install命令允许您在指定目标文件的所有权和权限时复制文件.

顺便说一下,你可能想避免parsing ls output,虽然我不确定什么是最惯用的解决方案.简单地忽略任何错误消息通常是一个坏主意,但也许这是最简单的. (这意味着,如果您缺少权限,则不会收到通知!)

install --group usergroup n18_????_??????????.txt /export/home/user 2>/dev/null &&
 mv n18_????_??????????.txt "$archDir"

请注意,这里存在竞争条件.如果在执行安装时出现与通配符匹配的新文件,则mv将移除它们,即使它们未被复制.如果您可以使用仅限Bash的构造,请尝试以下方法:

list=( n18_????_??????????.txt )  # Expands the wildcard only once
if [ -e "${list[0]}" ]; then
    install --group usergroup "${list[@]}" /export/home/user &&
    mv "${list[@]}" "$archDir"
fi

这是一个更好的解决方案,因为它会显示任何警告或错误消息,而在正常情况下安静地运行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读