shell编程(二)

shell编程

后台展示符号 &

定义:& 就是将一个命令从前台转到后台执行

使用格式:命令 &

命令演示:

admin-1@ubuntu:~# sleep 4
界面卡住4秒后消失
admin-1@ubuntu:~# sleep 10 &
[1] 4198
admin-1@ubuntu:~# ps aux | grep sleep
root       4198  0.0  0.0   9032   808 pts/17   S    21:58   0:00 sleep 10
root       4200  0.0  0.0  15964   944 pts/17   S+   21:58   0:00 grep --color=auto sleep
Ctrl+Z 让当前任务转入到后台并停止
jobs 查看后台任务
fg 让后台进程转入到前台执行
bg 让后台停止的任务继续在后台执行

全部信息符号 2>&1

符号详解:

1 表示正确输出的信息    2 表示错误输出的信息   2>&1 代表所有输出的信息

标准正确输出示例

cat nihao.txt 1>> zhengque 

标准错误输出示例

dsfadsfadsfa 2>> errfile

脚本内容

#!/bin/bash
echo '下一条错误命令'
dsfsafsafdsa

脚本执行效果

admin-1@ubuntu:~# bash ceshi.sh 
下一条错误命令
ceshi.sh: line 3: dsfsafsafdsa: command not found

1 和 2 综合演练:

admin-1@ubuntu:~# bash ceshi.sh 1>> ceshi-ok 2>> ceshi-err
admin-1@ubuntu:~# cat ceshi-ok 
下一条错误命令
admin-1@ubuntu:~# cat ceshi-err 
ceshi.sh: line 3: dsfsafsafdsa: command not found

linux系统垃圾桶

/dev/null 是linux下的一个设备文件,

这个文件类似于一个垃圾桶,特点是:容量无限大

 grep命令详解

grep命令是我们常用的一个强大的文本搜索命令。

命令格式详解grep [参数] [关键字] <文件名>

注意:

我们在查看某个文件的内容的时候,是需要有<文件名>

grep命令在结合|(管道符)使用的情况下,后面的<文件名>是没有的

可以通过 grep --help 查看grep的帮助信息

参数详解

-c:只输出匹配行的计数。

-n:显示匹配行及行号。

-v:显示不包含匹配文本的所有行。

-i:不区分大小写。

模板文件

admin-1@ubuntu:~$ cat find.txt 
nihao aaa
nihao AAA
NiHao bbb
nihao CCC

-c: 输出匹配到aaa的个数

admin-1@ubuntu:~$ grep -c aaa find.txt

1

-n: 输出匹配内容,同时显示行号

admin-1@ubuntu:~$ grep -n CCC find.txt

4:nihao CCC

-v: 匹配到的内容部输出,输出不匹配的内容

admin-1@ubuntu:~$ grep -v ni find.txt

NiHao bbb

小技巧:

精确定位错误代码            grep -nr [错误关键字] *

sed命令详解

sed 行文件编辑工具。因为它编辑文件是以为单位的。

命令格式:sed [参数] '<匹配条件> [动作]' [文件名]

注意:可以通过 sed --help 查看grep的帮助信息

参数详解:

参数为空 表示sed的操作效果,实际上不对文件进行编辑      -i 表示对文件进行编辑

注意:mac版本的bash中使用 -i参数,必须在后面单独加个东西: -i ''

匹配条件:

匹配条件分为两种:数字行号或者关键字匹配

关键字匹配格式 :   '/关键字/'

注意:

隔离符号 / 可以更换成 @、#、!等符号

根据情况使用,如果关键字和隔离符号有冲突,就更换成其他的符号即可。

-a		在匹配到的内容下一行增加内容
-i		在匹配到的内容上一行增加内容
-d		删除匹配到的内容
-s		替换匹配到的内容

注意:

上面的动作应该在参数为-i的时候使用,不然的话不会有效果

替换命令演示

关于替换,我们从三个方面来学习:行号、列号、全体

命令格式:sed -i [替换格式] [文件名]

注意:替换命令的写法

's###'  --->  's#原内容##' ---> 's#原内容#替换后内容#'

模板文件内容

admin-1@ubuntu:~$ cat sed.txt

nihao sed sed sed

nihao sed sed sed

nihao sed sed sed

替换每行首个匹配内容:

sed -i 's#原内容#替换后内容#' 文件名

示例:替换首每行的第1个sed为SED

admin-1@ubuntu:~$ sed -i 's#sed#SED#' sed.txt

admin-1@ubuntu:~$ cat sed.txt

nihao SED sed sed

nihao SED sed sed

nihao SED sed sed

替换全部匹配内容:

sed -i 's#原内容#替换后内容#g' 文件名

示例:替换全部sed为des

admin-1@ubuntu:~$ sed -i 's#sed#SED#g' sed.txt

admin-1@ubuntu:~$ cat sed.txt

nihao SED SED SED

nihao SED SED SED

nihao SED SED SED

指定行号替换首个匹配内容:

sed -i '行号s#原内容#替换后内容#' 文件名

示例:替换第2行的首个SED为sed

admin-1@ubuntu:~$ sed -i '2s#SED#sed#' sed.txt

admin-1@ubuntu:~$ cat sed.txt

nihao SED SED SED

nihao sed SED SED

nihao SED SED SED

首行指定列号替换匹配内容:

sed -i 's#原内容#替换后内容#列号' 文件名

示例:替换每行的第2个SED为sed

admin-1@ubuntu:~$ sed -i 's#SED#sed#2' sed.txt

admin-1@ubuntu:~$ cat sed.txt

nihao SED sed SED

nihao sed SED sed

nihao SED sed SED

指定行号列号匹配内容:

sed -i '行号s#原内容#替换后内容#列号' 文件名

示例:替换第3行的第2个SED为sed

admin-1@ubuntu:~$ sed -i '3s#SED#sed#2' sed.txt

admin-1@ubuntu:~$ cat sed.txt

nihao SED sed SED

nihao sed SED sed

nihao SED sed sed

替换mysql配置文件my.cnf

[client]

user=root

示例:

sed '/user=/s#=.*#=zhangsan#' my.ini

替换变量内容

filename=hello.jpg

filename=$(echo $filename | sed 's/.jpg/.png/')

echo $filename

增加操作

作用:在指定行号的下一行增加内容

格式:sed -i '行号a\增加的内容' 文件名

注意:

如果增加多行,可以在行号位置写个范围值,彼此间使用逗号隔开,例如sed -i '1,3a\增加内容' 文件名

演示效果:指定行号增加内容

admin-1@ubuntu:~$ sed -i '2a\zengjia-2' sed.txt

admin-1@ubuntu:~$ cat sed.txt

nihao SED sed SED

nihao sed SED sed

zengjia-2

nihao SED sed sed

指定1~3每行都增加内容

admin-1@ubuntu:~$ sed -i '1,3a\tongshi-2' sed.txt

admin-1@ubuntu:~$ cat sed.txt

nihao SED sed SED

tongshi-2

nihao sed SED sed

tongshi-2

zengjia-2

tongshi-2

nihao SED sed sed

作用:在指定行号的当行增加内容

格式:sed -i '行号i\增加的内容' 文件名

注意:如果增加多行,可以在行号位置写个范围值,彼此间使用逗号隔开,例如sed -i '1,3a\增加内容' 文件名

演示效果:

指定行号增加内容

admin-1@ubuntu:~$ sed -i '1i\insert-1' sed.txt

admin-1@ubuntu:~$ cat sed.txt

insert-1

nihao SED sed SED

tongshi-2

nihao sed SED sed

tongshi-2

zengjia-2

tongshi-2

nihao SED sed sed

删除操作

作用:指定行号删除

格式:sed -i '行号d' 文件名

注意:如果删除多行,可以在行号位置多写几个行号,彼此间使用逗号隔开,例如sed -i '1,3d' 文件名

删除第4行内容

admin-1@ubuntu:~$ sed -i '4d' sed.txt

admin-1@ubuntu:~$ cat sed.txt

insert-1

nihao SED sed SED

tongshi-2

tongshi-2

zengjia-2

tongshi-2

nihao SED sed sed

删除多行(3-5行)内容

admin-1@ubuntu:~$ sed -i '3,5d' sed.txt

admin-1@ubuntu:~$ cat sed.txt

insert-1

nihao SED sed SED

tongshi-2

nihao SED sed sed

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值