shell 命令*的使用问题
答案:6 悬赏:0
解决时间 2021-02-14 14:24
- 提问者网友:残阳碧曼
- 2021-02-14 08:06
shell 命令*的使用问题
最佳答案
- 二级知识专家网友:统治我的世界
- 2021-02-14 08:23
ls只支持通配符,不支持正则表达式。
grep、sed和awk命令才支持正则。
在通配符中,*表示任意数目的任意字符;
在正则表达式中,*表示重复前面的字符任意多次(包括0次)。
是不一样的含义。
你要用正则的话,可以用管道将ls的结果送给grep命令来处理,即用如下形式来实现:
ls|grep ^dd*
^表示匹配字符串开头(如果你要求文件名以字母d开头的话就必须加这个)
因为*也匹配前面的d出现0次的情况(即整个文件名中d一次都不出现),因此如果你要求必须d至少出现一次,这里就需要写两个d。
下面这个也行:
ls|egrep ^d+
+表示匹配前面的字符1次或多次
但grep不支持+,只能用egrep
grep、sed和awk命令才支持正则。
在通配符中,*表示任意数目的任意字符;
在正则表达式中,*表示重复前面的字符任意多次(包括0次)。
是不一样的含义。
你要用正则的话,可以用管道将ls的结果送给grep命令来处理,即用如下形式来实现:
ls|grep ^dd*
^表示匹配字符串开头(如果你要求文件名以字母d开头的话就必须加这个)
因为*也匹配前面的d出现0次的情况(即整个文件名中d一次都不出现),因此如果你要求必须d至少出现一次,这里就需要写两个d。
下面这个也行:
ls|egrep ^d+
+表示匹配前面的字符1次或多次
但grep不支持+,只能用egrep
全部回答
- 1楼网友:恕我颓废
- 2021-02-14 12:04
用来匹配任意个数(包含0个)的字符.
- 2楼网友:如果这是命
- 2021-02-14 11:26
传统的网络服务程序,如ftp,pop和telnet在本质上是不安全的,因为它们使用明文传送口令和数据,很容易被冒充真正服务器的中间人修改通信数据,影响你的正常通信。
ssh可以对你的数据进行加密,所以可以防止"中间人"攻击,dns和ip欺骗,还一个好处是它对传输数据进行了压缩,可以加快传输的速度。
- 3楼网友:茫然不知崩溃
- 2021-02-14 10:31
你说的*的解释是正则表达式里面的*
shell执行glob匹配和正则表达式概念不通,glob的匹配规则具体可以网上搜一下 或者参考man bash内容
- 4楼网友:时光不老我们不分离
- 2021-02-14 09:24
*号的解释是:配前面的子表达式零次或多次,这个是在正则表达式中的解释,但是ls不支持正则表达式
ls 里面的* 表示任意字符。
知道这个应该就知道为什么得不到你要的结果了
- 5楼网友:一池湖水
- 2021-02-14 08:58
楼主要分清通配符中的*和正则表达式中的*,他们是不一样的。你所说的意思是正则表达式中*的用法。而ls d*是通配符的使用方法,它代表任何字符出现0到多次。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯