免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3741 | 回复: 11
打印 上一主题 下一主题

[系统管理] 关于*符号的理解 [复制链接]

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-06-01 06:20:00数据库技术版块每日发帖之星
日期:2016-06-11 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-07 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-29 17:52 |只看该作者 |倒序浏览
看到一本讲Bash的书,是英文的,里面说到*这个符号的作用是:It matches zero or more characters.  我的理解,就是代表0个或任意多个任意字符。


然后,后面有个例子,要求是:Get files that don't have a number in its name, with the following command:
$ ls [!0-9]*     


我觉得这个命令是错的,因为尽管[!0-9]表示了不取任何number,但是后面那个*可以表示任何字符啊,那么自然就包括了数字。

我的理解对吗?

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
2 [报告]
发表于 2016-05-29 19:55 |只看该作者
命令没有错啊   只是意义不一样而已
ls [!0-9]*    命令的意思是  查看第一个字符是非数字后面接任何字符的文件或目录

求职 : 技术支持/维
论坛徽章:
0
3 [报告]
发表于 2016-05-29 20:10 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-06-01 06:20:00数据库技术版块每日发帖之星
日期:2016-06-11 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-07 06:20:00
4 [报告]
发表于 2016-05-29 21:05 |只看该作者
回复 2# o枫叶o飘零

对啊,所以我说这本书这里讲错了


   

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-06-01 06:20:00数据库技术版块每日发帖之星
日期:2016-06-11 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-07 06:20:00
5 [报告]
发表于 2016-05-29 21:07 |只看该作者
回复 3# 99超人

对,bash里面的*和正则表达式里面的*含义是完全的


   

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-06-01 06:20:00数据库技术版块每日发帖之星
日期:2016-06-11 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-07 06:20:00
6 [报告]
发表于 2016-05-29 21:12 |只看该作者
99超人 发表于 2016-05-29 20:10
ls [!0-9]*    这个*号是通配符
如果要达到Get files that don't have a number in its name这个效果
可以 ...


你这个表达是不是也有点问题?

^[^0-9]*$    按照正则表达式,表示首字符不是0到9的任何字符,然后*表示对前面那个字符重复0次或任何多次,那么这个正则表达式所表达的就应该是:或者为空没有任何字符,或者某个字符的若干次重复出现。。。。。也就是说不可能出现像abc这样的字符串,我是这样理解的,不知对不对

求职 : 技术支持/维
论坛徽章:
0
7 [报告]
发表于 2016-05-29 21:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
8 [报告]
发表于 2016-05-29 21:35 |只看该作者
*表示匹配前一个字符0次或者1次,而不是代表任意字符0次或者1次。

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-06-01 06:20:00数据库技术版块每日发帖之星
日期:2016-06-11 06:20:00操作系统版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-06-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-07 06:20:00
9 [报告]
发表于 2016-05-29 21:36 |只看该作者
99超人 发表于 2016-05-29 21:30
回复 6# cqlouis


我测试了,如你所说,谢谢

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
10 [报告]
发表于 2016-05-29 23:16 |只看该作者
bash 里面的*是: 任意个任意字符
正则里面的*是: 前一个字符出现零次或多次,在正则里面 .* 才是匹配任意个任意字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP