深入探索Shell编程:扩展、替换与内置命令
1. 文件名扩展:波浪号扩展与通配符
在Shell编程中,与文件名相关的扩展主要有两种:波浪号扩展(Tilde Expansion)和通配符扩展(Wildcard Expansion)。
1.1 波浪号扩展
当命令行字符串的第一个字符是波浪号(~),或者在变量赋值(如PATH或CDPATH变量)值中未加引号的冒号后的第一个字符是波浪号时,Shell会执行波浪号扩展。其目的是将用户主目录的符号表示替换为该目录的实际路径。用户可以显式或隐式指定,隐式时指的是运行程序的当前用户。示例如下:
$ vi ~/.profile # 等同于 vi $HOME/.profile
$ vi ~tolstoy/.profile # 编辑用户tolstoy的.profile文件
在第一个例子中,Shell将~替换为$HOME,即当前用户的主目录。在第二个例子中,Shell在系统的密码数据库中查找用户tolstoy,并将~tolstoy替换为tolstoy的主目录。
波浪号扩展最早出现在Berkeley C shell(csh)中,最初是作为一个交互式功能,后来被Korn shell、bash等现代Bourne风格的Shell所采用,并被纳入POSIX标准。不过,许多商业Unix Bourne shell并不支持它,因此在需要具有可移植性的Shell脚本中不应使用波浪号扩展。
波浪号扩展具有两个优点:一是它是一种简洁的概念表示法,能让Shell脚本的读者清楚了解操
超级会员免费看
订阅专栏 解锁全文
9

被折叠的 条评论
为什么被折叠?



