例如,假设我在当前工作目录中有这些文件:demo.txt、text.txt、temp.txt、audio.mp3。当我在shell中运行这个命令时:
demo.txt
text.txt
temp.txt
audio.mp3
ls *.txt
尼思发生了什么?shell是否先将其扩展到ls demo.txt text.txt temp.txt,然后将其放入argv,然后再fork ls?或者它什么也不做,只是把ls *.txt直接放入argv,然后派生ls?
ls demo.txt text.txt temp.txt
argv
ls
pcrecxhr1#
在Linux(和一般的Unix变体)中,通配符扩展是由shell在调用命令之前完成的(除非用引号显式地抑制)。在其他操作系统(如DOS、Windows)中,通配符总是一字不差地传递,其扩展由命令负责。
1条答案
按热度按时间pcrecxhr1#
在Linux(和一般的Unix变体)中,通配符扩展是由shell在调用命令之前完成的(除非用引号显式地抑制)。
在其他操作系统(如DOS、Windows)中,通配符总是一字不差地传递,其扩展由命令负责。