![如何通过 grep 执行文件](https://linux22.com/image/891280/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%20grep%20%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6.png)
我是一名希望进阶到中级水平的基础用户。好的,我有一个文件 XAMPP(manager-linux-x64.run),当我执行
sudo ./manager-linux-x64.run
它有效。因此,我尝试通过从其目录中执行此操作来成为专业人士
ls | grep manager-linux-x64.run | sudo xargs ./
它不起作用。它会抛出这个错误
xargs: ./: Permission denied
manager-linux-x64.run 的文件输出是
manager-linux-x64.run: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped
我本质上想要做的是获取目录中的文件列表,grep 可执行文件,管道输出并使用执行它,./manager-linux-x64.run
因为(sh,bash 不适用于 .run 文件)。
此外,还有其他命令可以运行 .run 本身吗?
答案1
答案是子 shell。试试这个:
realpath $(ls) | grep .run$ | xargs sh -c
或者:
ls -d ./* | grep .run$ | xargs sh -c
这些都可以,但最好使用寻找如果您要尝试做的是在满足某些条件时执行文件。
find $PWD -maxdepth 1 -type f -name "*.run" -exec {} \;
笔记:
一个警告:前面的单行代码将尝试执行它们匹配的任何内容。阅读点斜线:
“...用户可以省去在命令前加点斜线的麻烦(...)然而,出于安全考虑,这通常是不可取的...”