linux基础笔记-3-bash特性及grep

6.bash特性

GUI:gnome,KDE,xface
CLI:sh,csh,ksh,bash,tcsh,zsh
bash:兼具各种功能,开源,所以各种发行版默认使用。

如果两个用户同时登录,则有多个互不相干的进程。
在每个进程看来,当前主机只存在内核和当前进程,即使是父子进程。
linux特性之一:一个账户可以登陆多次,每个sh是单独的进程。
注意,程序只有一个,进程是程序的实例/副本。

type bash显示为外部命令

bash是程序,所以可以多次启动,sh中再打开sh(子shell)
该测试可用pstree查看

bash特性:

  • 命令历史、补全
  • 管道,重定向
  • 命令别名
  • 命令行编辑
  • 命令行展开
  • 文件名通配
  • 变量
  • 编程(sh脚本)

命令行编辑

快捷键功能
ctrl+a到行首/尾
ctrl+e删除光标后面的一个字符
ctrl+d删除光标前面的所有内容
ctrl+u删除光标后面的所有内容
ctrl+l清屏
ctrl+左/右k跨单词移动

命令历史

$history
	-c #清空历史
	-d +OFFSET #删除
	-w #保存

历史缓存大小存在~/.bashrc的HISTSIZE变量中。

echo \$HISTSIZE
!OFFSET直接使用
!-OFFSET倒数命令
!!上一条命令
!字符串 最近以指定字符串开头的命令
!​$或者Esc-松开-.或者alt+. 引用前一个命令的最后一个参数

别名

alias ALIAS=CMD [options] [arguments]
仅在当前shell进程生命周期中有效
alias显示所有别名
撤销:unalias ALIAS

命令替换,使用美元$或反引号`(数字1左边的键位)

echo "the current dir is $(pwd)"
touch ./file-$(date +%F-%H-%M-%S).txt

关于三种引号

:命令替换
" ":弱引用,可以实现变量替换。
’ ':强引用,不完成变量替换。

通配符(Globbing)

shell的内置功能。man 7 glob可以查询。

  • *:匹配任意长度任意字符

  • ?:任意单个字符

  • []:匹配指定范围内的任意单个字符

  • [^]:匹配指定范围外的任意单个字符

  • [0-9a-zA-Z]

  • [:space:]——空白字符

  • [:punct:]——标点符号

  • [:upper:]——大写字母

  • [:lower:]——小写字母

  • [:alpha:]——大小写字母

  • [:digit:]——数字

  • [:alnum:]——数字和大小写字母

7.grep

grep家族有egrep,fgrep,rgrep。

grep [options] PATTERN [file...]
	-i #忽略大小写
	--color  #匹配串高亮
			#可根据习惯设置别名:alias grep='grep --color'
	-v #显示未被匹配的行,即反向匹配
	-o #仅显示匹配的字符串
	-E #extended re

手册中写着print lines matching a pattern,即按行匹配.

RegExp

元字符 . :任意单个字符

[^] 匹配一个不在指定范围内的字符

关于次数匹配:

  • *:匹配前面的字符任意次数。
  • ?:匹配前面的字符1次或0次。
  • {m,n}:匹配前面的字符至少m次,至多n次。
  • ^:锚定行首,其后内容必须出现在行首。eg:grep ‘^r…t’ /etc/passwd
  • $:锚定行尾,其前内容必须出现在行尾。eg:grep ‘b…h$’ /etc/passwd
  • ^$:空白行

关于单词匹配:
\<或\b:其后面的任意字符必须作为单词首部出现。
\>\b:其前面的任意字符必须作为单词尾部出现。
eg:\<root\>,也可写为,\broot\b

关于分组:
\(\),eg,\(ab\)*
\N:代表前面从左往右第N个匹配的左括号及对应右括号的分组内容,N最小为1。
1.txt内容如下

he likes his liker.
he loves his lover.
he likes her.

grep '\(l..e\)s.*\1' 1.txt,则匹配:

likes his like

loves his love

注意用反斜线转义,防止花括号被shell解释。

egrep

re有两种:basic re和extended re

grep -E或者egrep:extended re

了解-A,-B,-C,即显示after,before,context的行

grep -C 2 '^core id' /proc/cpuinfo可显示上两行和下两行

physical id : 1
siblings : 2
core id : 1
cpu cores : 2
apicid : 3

关于extended re元字符:

字符匹配用法不变.

次数匹配:

*不变

? 不需反斜线

+: 相当于{1,}

{} 不需反斜线

位置匹配:

^ $ \<\>

分组匹配:

()不需反斜线
也支持\1,\2…

a|b:或
c|Cat:c或者Cat
(c|C)at:cat或Cat

EX:

匹配0-255

ifconfig | egrep ‘\<( [0-9] |[1-9][0-9] | 1[0-9][0-9] | 2[0-4][0-9] | 25[0-5] )\>’

即 ’ \<( 个位数 | 两位数 | 100-199 | 200-249 | 250-255 )\> ’

匹配ip

ifconfig | egrep -o ‘\<([0-9]|1-9|10-9|20-4|25[0-5])>\.\<([0-9]|1-9|10-9|20-4|25[0-5])>\.\<([0-9]|1-9|10-9|20-4|25[0-5])>\.\<([0-9]|1-9|10-9|20-4|25[0-5])\>’


ifconfig | egrep -o ‘(\<([0-9]|1-9|10-9|20-4|25[0-5])>\.){3}\<([0-9]|1-9|10-9|20-4|25[0-5])\>’

-o选项 : 只输出匹配部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值