RHEL系统如何获取目录所属组名并将其保存至shell变量
你当前的stat+grep+sed的方案不是最优解,stat命令本身就支持自定义格式化输出,可以一步直接拿到目录所属组名,不需要额外管道做文本解析。
最优方案:使用stat内置格式化参数
绝大多数GNU/Linux发行版(比如CentOS、Debian、Ubuntu等)直接用以下命令即可输出纯组名:
stat -c "%G" /ftp/PizzaFolder
命令执行后会直接输出PizzaGroup,没有多余内容,完全满足脚本使用要求。
如果是MacOS系统,stat参数语法略有区别,用以下命令即可:
stat -f "%Sg" /ftp/PizzaFolder
这个方案的优势是不需要额外进程管道,也不依赖stat默认输出的格式,是官方支持的获取属性的方式,兼容性和稳定性远高于自行解析默认输出。
其他可行方案
如果你确实需要解析stat默认输出,也可以用awk一步完成提取,不需要组合grep+sed:
stat /ftp/PizzaFolder | awk '/Gid/{split($NF,arr,"/|)");print arr[2]}'
另外也可以通过ls命令获取:
ls -ld /ftp/PizzaFolder | awk '{print $4}'
不过ls的默认输出格式在部分特殊场景(比如组名包含空格)下可能出现解析错误,不如stat格式化参数的方案可靠。
内容的提问来源于stack exchange,提问作者BuddyLee
相关产品推荐
相关产品推荐

