使用通配符在 Bash Profile 中获取文件

乔山

我一直在我的 Ubuntu 20.04 机器上尝试 ROS,我只是通过阅读文档来创建我的第一个工作区。

后来我需要在这个目录中获取安装文件,以便它可以覆盖已经为 ROS 设置的 bash 安装文件。我的问题是,由于我将在同一位置有多个这样的项目,我可以使用通配符从我的工作文件夹中获取 setup.bash 文件吗?

例如,在我的机器上,我将所有 ROS 项目放在一个通用标准文件夹中,该文件夹是:

/home/myname/Projects/ros-projects/workspace-1/

同样,如果我有另一个项目,它将是:

/home/myname/Projects/ros-projects/workspace-2/

现在可以在名为 devel 的文件夹中的每个工作区下找到 setup.bash。所以问题是,我可以在我的 .bash_profile 中执行以下操作吗?

source /home/myname/Projects/*/*/devel/setup.bash

这不是直接可能的,我可以编写一个shell脚本来做到这一点吗?有任何想法吗?

source是一个内部 bash 命令,它只接受一个文件名作为参数。当您提供通配符时,只会处理第一个匹配的文件。

要处理多个文件,可以使用该find命令。source但是,它是一个 shell 内置命令,即不是与搜索路径中的可执行文件对应的命令。使用该-exec选项或xargs因此将不起作用,因为这些构造仅识别可执行文件。但是,以下构造可以工作(感谢 steeldriver)。

while read -r f ; do source "$f" ;  done < <(find /home/myname/Projects -wholename '*/devel/setup.bash')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章