【问题标题】:How to check if linux user has .sh file?如何检查linux用户是否有.sh文件?
【发布时间】:2022-01-24 19:37:19
【问题描述】:

我必须在 bash 中编写脚本来检查登录用户是否有任何 .sh 文件。
检查谁登录很简单,只需使用:

w| awk '{print $1}'

但我不知道如何检查他们是否有任何 .sh 文件

【问题讨论】:

  • 你的意思是像find /home/user -name "*.sh"
  • UsingFind 可能是一个开始的地方。当您尝试过某事并在此过程中遇到特定问题时再回来。
  • ...请注意,没有理由用 .sh 扩展名和 lots of good reasons not to 命名 shell 脚本,所以如果您的真正目标是检测用户的主目录中是否有脚本,请查看对于名称末尾带有.sh 的文件不是一个好方法。检测脚本最好通过 (1) 查找在权限中设置了执行位的文件,以及 (2) 检查 shebang(指定解释器的第一行)。
  • 好的,我会尝试使用find,也许会有所帮助
  • 我想我找到了解决办法

标签: linux bash awk


【解决方案1】:

您需要阅读who 命令的输出并将其用于您的find 命令。

由于同一用户可以多次登录,因此最好在循环之前删除重复项。

#!/bin/bash
who| awk '{print $1}' | sort -u | while read -r username; do
    find /home/"$username" -name "*.sh"
done

【讨论】:

  • 谢谢,但有一个问题,“休息”在做什么?
  • 我在上次编辑中删除了它。
  • 在我添加 sort -u 之前,我是直接从 who 读取变量而不使用 awk,所以 rest 会在用户名之后获得该行的其余部分。
  • 好的,我有一个问题,我尝试通过“su - user”登录,而“who”没有显示除主要用户之外的任何其他用户
  • 特定终端只能登录一个用户,并且是原始登录。 su 不会覆盖它。
猜你喜欢
  • 2014-09-05
  • 2019-11-01
  • 1970-01-01
  • 2015-09-05
  • 2016-05-01
  • 2017-08-15
  • 1970-01-01
  • 2014-04-28
  • 2011-02-25
相关资源
最近更新 更多