V2EX 9小时前
[Linux] 如何把 pgrep 输出结果中需要用单引号包起来的参数包起来?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

文章探讨了在使用pgrep查询命令行字符串时,因单引号被去掉导致命令无法执行的问题,并寻求一个通用的解决方案。

比如有如下 qemu 的命令行:

qemu-system-x86_64 \-machine q35,accel=kvm \-cpu host \-m 1G \-kernel /home/d/kernel/kernel \-initrd /home/d/rd/initramfs.cpio.gz \-append 'console=ttyS0 test="11 22"' \-netdev '{"type":"tap","vhost":true,"ifname":"eth_0","id":"hostnet0","script":"","downscript":""}' \-device '{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:c0:45:c7"}' \-nographic

上述命令的参数的格式是有效的,但是如果命令执行后通过 pgrep 查询命令行字符串,查询出的结果会把单引号去掉:

d@develop:~$ pgrep -af qemu-system-x86_64 | perl -0pe 's/ -/ \\\n-/g'19754 qemu-system-x86_64 \-machine q35,accel=kvm \-cpu host \-m 1G \-kernel /home/d/kernel/kernel \-initrd /home/d/rd/initramfs.cpio.gz \-append console=ttyS0 test="11 22" \-netdev {"type":"tap","vhost":true,"ifname":"eth_0","id":"hostnet0","script":"","downscript":""} \-device {"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:c0:45:c7"} \-nographic

去掉单引号的命令无法直接放到 shell 里去执行,我想找到一个通用的办法(不要仅限于 qemu 的参数)把 pgrpe 输出的命令行字符串中需要用单引号包起来的参数用单引号包起来,使其结果和最初执行的命令行字符串完全一样,问了 ai ,ai 解决不了,再次在这里求助 v 友。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

命令行参数 pgrep 单引号问题 命令行执行 解决方案
相关文章