[2019.03.22] Linux 学习心得(1)
本文关键词:shell 判断、grep正则表达式使用和贪婪匹配理解
1. if [ $a -le $b ], 一开始自学的时候我以为 [ ... ] 就是普通的,语法规定的结构,结果其实人家是"test"的变体,它的效果等同于使用 " test ... ",结果是将指令 ... 执行完了以后输出出来的东西作为返回值。注意,他并不是能执行所有的命令,作为“判断符号”,他要求里面的指令运行结果是 TRUE 或者 FALSE。
2. 如果xxx,就输出xxx,除了使用 if 判断语句来实现以外,还可以用 [ xxxx ] && echo xxxx && xxxxx 这样的方式来实现。原理是当一条指令执行完,只要没有报错,而且他不是一个判断式,那么它就会返回一个 TRUE ,因此想刚才那种写法就能用一个判断式子写出一连串的后续操作。不过感觉最好不要用这个方法写太长,代码会很不好看的。
3. 多条件判断有两种写法哦! [ $xxx == xxx -o/-a $yyy == yyy ] 和 [ $xxx == xxx ] ||/&& [ $yyy == yyy ] 都可以。值得注意的是,前后要留有空格才可以,并且使用 || 和 && 要在 [ ] 的外面才行。
4.[ "$xxx" == "xxx" ] 才是最稳妥的写法,不然bash会出各种奇奇怪怪的问题。
5.对于bash,它概念里的块作用域(BlockScope,JavaScript 说法)用小括号()包裹。所谓块作用域,是说在这个区域内定义的变量,离开这个区域无法被访问到,大致和Java里面的局部变量比较类似,也类似于JS里面的 “let” 关键字定义的变量。
6.grep 命令在使用的时候可以通过管道来增强其他命令的效果,比如 which bin | grep 'username' 就可以查找路径里面带有username字符串的bin文件夹的位置咯。注意,单引号不要省略,因为在写正则表达式的时候,没有单引号转义字符 \ 将工作不正常!

对于Bash,七条命令有五种不同的含义(下面的x<n>代表n个字母)。他们分别是:(1,2,7)查找“x\{0-2}”;(3)查找“x\{0-4}”;(4)查找“x\{0-4\}”;(5)查找一个0-4字母组成的字符串;(6)语法错误。
为什么上面的例子中明明是 \{0,4\} 却标红了五个字母?我的理解是adsfx中,按照正则表达式贪婪匹配(能标红最多字符的方式匹配)原则,字符串里面找到了第一个匹配表达式的字符之后,还会继续向右寻找符合要求的字符串,于是就,按照"x0"这个条件把全文所有字母标红了。实际上,他匹配到的是这样一个数组:
[ 'adsf','x','dad' ]。
下面的图就能更清楚地显示这一点!

这三个体现了贪婪匹配的原则——尽可能标出最多的字符。注意x后面那是个 1 不是 l。
为什么" 52148962asdfaadsfx1dad4248 "里面没有继续匹配比如"sdfaad"这样的串呢?因为已经匹配的串asdfaa已经不能参与匹配了,剩下的dsfx只有四个字母,不符合要求了!
那么非贪婪匹配是怎么一回事?非贪婪匹配又叫做懒惰匹配,grep原生不支持这种匹配模式,需要加上 -P 使用Perl语法才能执行,只需要在量词后面加上?(直接加,不要有任何的空格)就可以!
非贪婪匹配返回的结果是尽可能短的(而不是尽可能长),一般用于".*"这种广泛匹配上,比如下面的例子,诸位好汉可以猜一猜他们的输出结果是什么,以及为什么这样输出(输出在绿色的方块下面):

练习题(?)

我自己的一些看法,不知道有无错误,希望各位看官如果有空,和我讨论一下
[2019.03.22] Linux 学习心得(1)的更多相关文章
- [2019.04.01]Linux 学习心得(2)-- tar 命令的理解
这篇文章并不是发布最早的但是阅读量却每天都见长,很想知道各位大大是怎么找到这篇文章的.如果不忙,还请各位大大评论一下我看看,没准我可以为大家改进一下本文,提升一下质量. =============== ...
- linux学习心得之目录树开端与/etc(图文)
linux学习心得之目录树开端与/etc(图文) linux中“一切皆文件”,学习linux一年了,在学习过程中对目录树的一点心得,分享给大家,有不对的地方敬请斧正. 不多说了,先上图: 根目录: / ...
- Linux学习心得之 Linux下命令行Android开发环境的搭建
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...
- Linux学习心得之 Linux下ant安装与使用
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...
- Linux学习心得之 双显卡、中文输入法及svn初步使用
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 双显卡.中文输入法及svn初步使用 1.前言 2.Linux双显卡解决 ...
- linux学习心得之vim/Cvim篇
linux学习心得之vim/Cvim篇 在linux 下,vim 时一种最常见的编辑器,很多linux的发行版就自带了.我的是CentOS 6.3. 基本上Vim共分为3种模式,分别是一般模式,编辑模 ...
- Linux学习心得之 LVM管理与Linux系统安装
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 LVM管理与Linux系统安装 1.前言 2.LVM 简介与术语 3.LVM 使用 4.Li ...
- [2019.03.25]Linux中的查找
TMUX天下第一 全世界所有用CLI Linux的人都应该用TMUX,我爱它! ======================== 以下是正文 ======================== Linu ...
- 2019/4/17 Linux学习
一.Linux的文件系统 其中/prov./srv./sys 文件为文件系统,技术不过硬不要去修改:二.关于Xshell.Xft1.服务器的端口可有65535个可设置,开的越多安全性越差:2.远程登录 ...
随机推荐
- Linux权限管理(week1_day5)--技术流ken
权限概述 Linux系统一般将文件可存/取访问的身份分为3个类别:owner(拥有者).group(和所有者同组的用户).others(其他人,除了所有者,除了同组的用户以及除了超级管理员),且3种身 ...
- Map集合。
Map集合: java.util,Map<k,v> 特点:1.键值对 2.key-value一一对应 3.key不允许重复. Map常用实现类: java.util.HashMap< ...
- 从0开始用U盘制作启动盘装Windows10系统(联想R720笔记本)并永久激活方法
一,制作U盘启动盘 随着个人电脑的“飞入寻常百姓家”,喜欢DIY电脑的发烧友们也越来越多. 安装系统是DIY最基本的要求,很容易做到: 那么如果要求用U盘装系统呢,你可能会说简单,直接下载个老毛桃或是 ...
- 解决在C#(.net)按字节数截取字符串最后出现乱码的问题
最近需要用到按字节数截取字符串.在网上找了很多方法. Encoding.Default.GetString采用的DefaultEncoding.UTF8.GetBytes采用的是utf-8编码.这样当 ...
- entity framework 实现按照距离排序
在做项目时,经常会遇到“离我最近”这种需求.顾名思义,它需要根据用户的经纬度和事物的经纬度计算距离,然后进行排序,最后分页(当然这些操作要在数据库中进行,否则就变成假分页了). 我们通常可以用sql语 ...
- 【土旦】vue项目中 使用 pako.js 解密 gzip加密字符串
前言 今天跟后台对接一个接口,接受到一个加密的值,说是通过gzip加密过的,然后就蒙蔽了, 赶紧上百度找了一下资料,通过一篇文章(原文在底部)发现有个js库可以解密,就下载轻松解密了 实现代码 pok ...
- WEB前端学习资源清单
常用学习资源 JS参考与基础学习系列 [MDN]JS标准参考 es6教程 JS标准参考教程 编程类中文书籍索引 深入理解JS系列 前端开发仓库 <JavaScript 闯关记> JavaS ...
- java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone.
[报错信息] [百度翻译] 服务器时区值'???ú±ê×??±??'无法识别或表示多个时区.如果要利用时区支持,必须配置服务器或JDBC驱动程序(通过ServerTimeZone配置属性),以使用更具 ...
- js清空数组的方法
方式1:splice函数 arrayObject.splice(index,howmany,element1,.....,elementX) index:必选,规定从何处添加/删除元素. howman ...
- Ubuntu 16.04.1 LTS配置LNMP使用wordpress搭建博客
今天想用wordpress搭个博客,我的服务器是腾讯云的,然后腾讯云里有官方文档搭建的,但它是用centos为例, 搞得我的ubuntu跟着它走了些歪路,然后结合网上其它资料,终于一点一点的解决了. ...