【发布时间】:2013-11-23 23:30:21
【问题描述】:
简而言之,howto run a bash compressed script?,但这可以用二进制文件而不是 shell 脚本来完成吗?
假设我有一个压缩成 .gz 的二进制文件。我可以解压缩到管道并检查内容:
$ gzip -d --stdout hello.gz |文件 - /dev/stdin:ELF 64 位 LSB 可执行文件,AMD x86-64,版本 1 (SYSV),动态链接(使用共享库),未剥离 $有没有什么方法可以实际执行管道本身的内容,而不是将其写入文件?
我考虑过使用命名管道,但这似乎不起作用:
$ mkfifo 执行管道 $ chmod 777 执行管道 $ gzip -d --stdout hello.gz > execpipe & [3] 30034 $ ./execpipe bash: ./execpipe: 权限被拒绝 $ [3]+ 损坏的管道 gzip -d --stdout hello.gz >execpipe $有没有办法在不创建实际文件的情况下执行管道的内容?
【问题讨论】:
-
Permission denied如果你尝试 sudo 会怎样? -
-
@Samoth -
sudo失败并显示“sudo: ./execpipe: command not found”。在su下运行也会失败并显示“bash: ./execpipe: Permission denied” -
你能做的最好的是将其转储到 ramfs 或 tmpfs 中的文件中并执行。
标签: linux shell pipe executable