在linux系统上,当您在像rm * -rf这样的shell中输入命令时,*和-rf的顺序并不重要。我的外壳也是这样解释的。现在,在我的Mac上,当我输入rm -rf *时,一切正常,但是如果我做了rm * -rf,就会出现一个错误rm: -rf: No such file or directory
我在macOS和linux有人知道为什么macOS上的命令解释器认为命令末尾的-rf不被解释为命令的参数吗?
因此,我希望解析类似shell的命令,并将其存储在char**上,以便将其作为execv系统调用上的参数传递。在下面的函数中,解析和存储工作正常。0 bytes after a block of size 8 alloc'd
==824== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.s
我用C语言编写了我自己的libreadline Linux库。在readline()中,它从shell中获取代码行,并用空格字符进行解析,然后将其存储到一个指针变量中。现在,我希望解析这些行来获取命令行参数,这些参数包含命令和执行命令的文件名。在这里,我遇到了一个问题,如果文件名有空格的名称,它会像下面这样解析 myshell$ ls 'file name 1' 'file name 2' file\ name\ 3 上面的cli