Korn Shell 中的“set -f”有什么作用?

elb*_*rna 4 shell ksh set

在“A guide to aix 3.2”一书中,它说可以使用Korn Shell命令set -f来“禁用文件名生成”,但这是什么意思?

会发生什么set -f

jll*_*gre 12

set -f 是禁用文件名扩展的可移植(即 POSIX)方式。

当启用(默认或使用set +f)时,文件名扩展是由 shell 执行的操作,它在可能的情况下替换包含以下内容的命令行参数:

  • 出现的通配符(?= 任何单个字符和*= 任意数量的字符)
  • 用方括号括起来的范围(例如[a-z12]= 从ato z, or 1or 的任何字符2
  • 非匹配列表(例如[^a-z]= 不在ato范围内的任何字符z
  • 和字符类(例如[[:xdigit:]]= 可用于表示十六进制数的任何字符)

通过匹配它们的文件名。

禁用时,这些参数保持不变。

$ pwd
/etc/samba
$ echo *
lmhosts smb.conf
$ echo *o??
smb.conf
$ set -f
$ echo *
*
$ echo *o??
*o??
Run Code Online (Sandbox Code Playgroud)