技术解析

在 Linux Bash 中普通的 glob 只能用于路径名吗?
0
2021-06-11 23:16:52
idczone

我在使用 Bash 之前一大带宽服务器直在使用 PowerShell,在 PowerShell 上通配符可以用于很多很多的命令。

但是 Bash 上的通配符好像不是这样,目前看到的所有资料好像都是在将 glob 用于路径名。

而且 echo * 居然会直接显示当前目录下的所有内容,给人的感觉就是所有的字符串只要有*,好像都会首先被解释为路径通配符。

在 bash 中 glob 只能用于路径吗?

如果不是的话,那还用于什么场合呢?

注意:这里指的是普通的 glob,而非 extglob,我知道后者能用于条件表达式的=和!=


Linux 的 glob 是 shell 处理的
Windows 是直接传原始命令行


echo '*' 就不会展开了

*是特殊字符,需要加斜杠转义或者用单引号括起来

任何命令的实际参数中只要有类似于*这样的元字符,Shell 都会预先处理,返回路径数组?

为什么会出现这种情况?
这个现象有文档记录吗?如果有在哪?

`man bash` ,搜索 「 Pathname Expansion 」
传入了以后如何看待这个 '*' 是被调用的程序本身的想法,说不定被认为是正则的一部分,或者 python -c "print(*range(100))"
请亲手试试以下代码在不同系统下的行为:
python -c "import sys; print(sys.argv)" *

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服