用户 homedir MacOS 中的 Bash 复制文件
Posted
技术标签:
【中文标题】用户 homedir MacOS 中的 Bash 复制文件【英文标题】:Bash copy file in user homedir MacOS 【发布时间】:2018-07-18 17:34:19 【问题描述】:我在壳牌写作方面相当新(完全新)。当我的 PKG 工具不够用时,我会不时使用它来完成特定任务。
我在 /Library/Application\ Support/ 中有一个名为 licenses 的文件夹,我想将它复制到用户的库中。幸运的是,每个用户都以特定的数字模式命名,我的 homedir 是 t25542
这是我的小脚本:
#get the homedir name
USER=`stat -f '%Su' /Users/t*/
#copy files
ditto /Library/Application\ Support/licences/ /Users/$USER/Library/Application\ Support/licences/
它可以工作,但是我确信有一种更优雅的方法可以做到这一点,因为它看起来很草率。
【问题讨论】:
只是好奇:ditto 是什么?另外,您的 shell 脚本在语法上不正确(关闭反引号),并且 stat 命令在这种情况下没有任何意义。您要求一种更优雅的方式,但恕我直言,您在此处发布的脚本无法工作(因为您的stat -f
命令的输出至少对我而言会产生错误消息 cannot read file system '%Su' 的信息:没有这样的文件或目录 - 至少在我的 stat 版本中)。会不会是你在 MacOS 上?如果是这样,你应该说出来。
感谢您的回答。它在 Mac 上,添加了标签。 Ditto 是 Mac World 中的二进制文件。
你的意思是你要调用N次来自己做N个用户中的每一个?还是您的意思是每个用户都应该运行它来整理自己?
抱歉,我在用英语表达自己时遇到了一点问题……事实上,该脚本将通过远程桌面在所有可用的工作站上远程执行。在工作站上可以有多个 t* 用户(每个 t* 在公园中都是唯一的)。 “license”文件夹位于工作站的 /Library/Application Support/ 中,但脚本必须将其复制到每个用户的每个 ~/Library/Application Support/ 中。
【参考方案1】:
这应该让您了解如何做到这一点:
sudo bash -c 'for u in /Users/*/ ; do SRC="/Library/Application Support/licence"; DST="$u/Library/Application Support"; echo cp "$SRC" "$DST"; echo chmod something "$DST/licence" ; done'
样本输出
cp /Library/Application Support/licence /Users/Shared//Library/Application Support
chmod something /Users/Shared//Library/Application Support/licence
cp /Library/Application Support/licence /Users/fred//Library/Application Support
chmod something /Users/fred//Library/Application Support/licence
cp /Library/Application Support/licence /Users/mark//Library/Application Support
chmod something /Users/mark//Library/Application Support/licence
先做好备份!
目前,它只回显它会做的事情而没有实际做任何事情,因此在删除cp
前面的echo
之前,请仔细检查输出是否正确。
【讨论】:
对我来说看起来是个真正的救星,我要试试!不能给你点,因为我是这里的新手,但你在我心里!以上是关于用户 homedir MacOS 中的 Bash 复制文件的主要内容,如果未能解决你的问题,请参考以下文章
sh [sh - 获取当前用户]获取当前登录用户#macOS #Bash
Linux,Unix,MacOS等其中的Bash脚本判别调用者使用者的身份