有些知识和要点,不自己亲身体会了,还真没发现.实践还是很重要的~~!!
下面是我遇到的问题:
我的$HOME下面有很多~文件.想批处理掉.于是一开始我写的是
rm *~$结果是说没有找到'*~$'文件.以为需要匹配再删除,于是改为
ls -a | grep '~$' | rm结果还是错误.但是我改成
ls -a | grep '~$' | wc却正确..
不明白为什么
后来又尝试直接输入rm *~ .结果成功了.
这个一个是最先开始我rm *~$时候,为什么2个正则都没被解释?我并没有使用跳脱阿?
再就是为什么在通过管线的时候.wc可以,rm却不能?
在linuxsir上面发帖以后,就有朋友回复了.很有启发式的那种.然后我再对鸟哥的正规表达法的那张查看了以后.明白了
首先,正规表达法不是一个工具(那么可以说应该不是sh),如果想用正规表达法,那么也要使用具备正规表达法的工具才行(那么rm不是具备正规表达法的工具,而grep,vi,sed,awk是具备的,所以可以用).
另外在下面看到说<注意:正规表达法和万用字符是不一样的.因为万用字符和正规表达法表示的内容是不一样的.要分清出>
那么我大概可以知道,我之所以犯错是因为我把正则表达法和万用字符搞混淆了.
也就是7楼的朋友说的<globbing is NOT RE, ok?>是这个意思吧?
看来有些小地方还是要仔细的阿~~
讨论地址:http://www.linuxsir.org/bbs/thread322620.html