Linux学习(第一篇)

Linux的具体目录结构

root

该目录为系统管理员目录,root是具有超级权限的用户;

Bin->usr/bin

存放系统预装的可执行程序,这里存放的可执行文件可以在系统的任何目录下执行

usr

是linux的系统资源目录,里边存放都是一些系统可执行文件或者系统以来的一些文件库

usr/local/bin

存放用户自己的可执行文件,同样这里存放的可执行文件可以在系统的任何目录下执行

lib->usr/lib

这个目录存放着系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库

boot

这个目录存放启动linux时使用的一些核心文件,包括一些链接文件以及镜像文件

dev

该目录存放的是linux的外部设备,linux中的设备也是文件的形式存在

etc

这个目录存放所有系统管理所需要的配置文件。通常通过source profile 进行重新加载,生效。

Home

用户的主目录,在linux中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名,叫做用户的根目录;用户登录以后,默认打开自己的根目录;

opt

这是给linux额外安装软件所存放的目录,比如你安装一个Oracle数据库则就可以放到这个目录下,默认为空

run

下面有个media,里面是存放光驱

 

Linux常用命令

查询IP:ifconfig

mkdir  创建目录  

vim test.txt  创建并打开这个文件
一般模式:用vim或vi命令打开,可以查看文件的内容,并且可以通过上下左右键移动光标,查看文件的某一部分,但是不能编辑文件内容;
编辑模式:在一般模式下按 i / a / I / A 键,都可以进入编辑模式;但是不能保存内容;按

          ESC键退出编辑模式,返回到一般模式。

命令模式:在一般模式下,按 冒号shift + : ,进入命令模式。输入q! -----不保存编辑内容;
          wq-----保存并且退出。
vim快捷键

          复制当前行:在 一般模式下,按 yy 把光标所在行复制到剪切板;按p,把剪切板中的内容粘贴到光标所在的位置。

          复制当前行往下5行:在一般模式下,按5yy 把光标所在的行往下5行复制到剪贴板;然后粘贴光标(p)所在的下一行。
          在文本文件中查找关键字:在命令模式下,输入 /关键字  如(/world),回车按n表示查找下一个。
          删除光标所在的当前行:在一般模式下,按dd,删除当前行;删除当前行向下的5行(5dd)

         一般模式下,使用快捷键到大文档的最首行[gg] 和最末行[G]
         一般模式下,在一个文件中输入“xxxx”,然后又撤回这个动作(u)
         一般模式下,并将光标移动到10行, shift+g。 第一步输入10,第二步输入shift+g,第三步回车。
         命令行模式,设置文件的行号,取消文件的行号(命令行下:(: set nu) 和 (: set nonu))

 

添加用户:useradd 用户名  (一般是超级管理员才有权限;)在linux中任何一个用户都至少属于一个组,新建用户如果不指定组,则会新建一个组,组名跟用户名相同,并且把该用户添加到该组中。
useradd –d /home/ww wangwu 指定路径创建用户
给用户设置密码:password test123 
删除用户 userdel wangwu  删除用户的同时级联它的主目录passwd
userdel list  -r wangwangwu  删除用户的同时级联它的主目录passwd
查看用户信息: id  用户名

切换用户:su 用户名  eg: su zhangsan  备注

添加组:groupadd  组名 eg: groupadd dev
删除组: groupdel 组名 eg: groupdel dev
把用户添加到组中: gpasswd –a 用户名 组名 eg: gpasswd –a  zhangsan dev

把用户从组中移除: gpasswd –d 用户名 组名 eg: gpasswd –d zhangsan dev

添加用户时,指定所属的组(主组): useradd –g 组名 用户名  eg: useradd –g dev lisi

用来查看linux系统手册上的帮助信息:man 命令 eg: man ls

          分屏显示、按回车翻一行,按空格翻一页,按q退出查看;

查看当前所在的目录:pwd

查看指定目录下所有的子目录:ls [指定目录] eg: ls  /home  

以列表显示  ls –l [指定目录]

显示指定目录下所有子目录和文件(包括虚拟的目录) ls –a /home

以列表形式显示指定目录下所有的子目录和文件  ls –al  /home

切换目录: cd  目录名

绝对目录: cd /opt/testDir  以盘符开始的目录

相对目录: cd testDir

在任何目录下进入根目录直接:cd ~

.. : 当前目录的上一级目录,从当前目录开始查找它的上一级目录;

. : 当前目录  eg: ./xxx.sh

创建一个或者多个空文件: touch 文件名列表(文件名之间用空格隔开) touch test1.txt  test2.txt

复制文件: cp source(源) dest(目标) 

eg: cp t1.txt test2  把t1.txt文件复制到test2目录中

eg: cp test2 test5 把test2目录复制到test5目录中 注意:只能复制空目录

递归复制文件 cp –r source(源)  dest(目标)

删除文件或者目录: rm 文件名 或者目录名

Eg: rm  t1.txt  提示删除     rm –f t2.txt 强制删除     rm –r  test2  递归提示删除

rm –rf test3 递归强制删除

移动目录或者文件  mv  source(源)  dest(目标)

mv test.txt test1     mv test1  test2

mv t1.txt  t2.txt  文件重命名,若文件存在,则会提示是否需要覆盖

echo: 输出系统变量或者常量的值到命令行终端;

echo $JAVA_HOME  

echo hello world!

把前一个查看命令的结果输出到指定的文件中:查看命令 > 文件名

Ls > test.txt  如果目标文件不存在则会新建一个文件,并且将ls命令的结果输出到文本中

Cat test1.txt > test2.txt 将文本拷贝一份

查看或者设置系统的日期或者时间 date

date +%Y 系统当前的年份  date +%m  系统当前的月份   date +%d系统当前的日期

date ‘+%Y-%m-%d %H:%M:%S’  按yyyy-MM-ddd HH:mm:ss 格式显示

查看系统日历:cal

cal: 查看当前月份的日历  eg: cal 2020

 

搜索文件或者目录的命令:find 关键字 [-name 默认按名称] [-siize] 按文件大小搜索

[-user]按文件的所有者搜索

Eg: find *.txt  搜索当前目录下,所有的.txt文件  find *e*  搜索当前目录下所有包含e的

find  /etc *.txt 搜索指定目录下的txt文件

find /etc  -size +5M  搜索大于5M的文件

find /etc –user zhangsan 搜索/etc目录下素有者是zhangsan的文件和目录

 

locate:在整棵目录树种搜索文件或者目录,都是根据名称搜索,效率高。

updated 先同步数据库 然后locate 关键字

搜索过滤命令,在前一个搜索命令的结果中进行按名称进一步过滤,

搜索命令 |grep [选项]过滤条件

查看命令 |grep [选项]过滤条件 –i  忽略大小写  -n  显示行号

 

压缩或者解压单个文件
gzip 文件名----压缩单个文件,生成一个.gz的压缩包,并且会把原来的文件删除;

gunzip  .gz压缩包名----解压.gz压缩包,并且会把原来的.gz压缩包删除

压缩或者解压多个文件和目录:

zip目录压缩包名称(通常使用.zip压缩包)  文件或者目录列表  

eg: zip test.zip  ret.txt test1.txt

uzip 压缩包名(.zip)  -d  解压目录名(绝对或者相对): 将指定的.zip压缩包解压到当前目录

压缩或者解压多个文件和目录  tar 选项  目标压缩包名称(xxx.tar.gz)  文件或者目录列表

tar –c [产生.tar.gz打包文件]  -C[指定解压到哪个目录]

tar -x[解压tar.gz文件]    -v[显示详细信息]  -f[指定压缩后的文件名]   -z[打包同时压缩]

打包操作  tar –zcvf  xxxxx.tar.gz  文件/目录列表

解压操作  tar –zxvf  xxxx.tar.gz  -C 解压目录名

文件或者目录与组基本介绍

在linux中,每一个用户都至少属于一个组,用户不能独立于组存在,一个用户可以属于多个组。
在linux中,每一个文件或者目录也必须属于一个组,而且只能属于一个组,默认情况下,文件所有者所属的主组就是文件所属的组。

在文件或者目录看,linux系统中所有的用户分为三类:

所有者:默认情况下,文件或者目录的所有者都是创建者,可以修改;
同组用户:跟文件或者目录属于同一个组的用户
其他组用户:既不是文件或者目录所有者,也不是同组用户。

在linux中,任何文件或者目录都有三种权限,读,写,执行

修改文件所有者---chown  新的所有者 文件名  或者 chown 新的所有者:新的组  文件名

Eg: chown zhangsan test.txt 

修改文件或者目录的所在组: chgrp 新的组名 文件名  eg: chgrp dev  test.txt

对于文件而言,

读:可以读取、查看文件的内容,比如: cat、more、less、head、tail等

写:可以修改文件的内容,比如:vi 或者vim等

执行:如果文件是可执行文件,(.sh),可以直接运行。

对于目录而言:

读:可以读取、查看目录下边的内容,比如: ls等;

写:可以修改目录中的内容,创建子目录、创建文件、删除文件,重名文件或者目录

执行:可以进入该目录,比如cd

任何一个文件或者目录都有三部分权限:所有者权限,同组用户权限,其他组用户权限。

第一部分权限:所有者权限,文件或者目录的所有者对该文件所有的权限,使用rwx分别表示读、写、执行的权限。比如:rwx,拥有读写执行的权限,r-x拥有读写的权限,

第二部分权限:同组用户权限,文件或者目录的同组用户对该文件所拥有的权限。

第三部分权限:其他组用户权限,文件或者目录的其他组用户堆顶该文件所拥有的权限。

查看文件或者目录的权限:ls -aul

修改文件或者目录的权限:

用r、w、x分辨表示读写执行的权限;

用u、g、o、a分别表示所有者、同组用户、其他组用、所有用户修改权限

用+、-、= 分别表示给指定用户增加、减少、设置对应的权限。

Eg: chmod g-w,o+w t5.txt  chmod g=rwx t5.txt

Chmod 777 t5.txt   chmod 655 t5.txt

网络管理:

在linux的配置文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33

查看进程:ps

ps  只会显示应用进程   ps –e  显示所有进程     ps  -ef  以全格式的形式显示所有进程

关闭进程:

使用ps 命令查看进程的PID,使用命令kill -9 PID

服务介绍,服务是支持linux运行的一些必要程序,本质上也是进程,叫守护进程。

操作服务: systemctl [start | stop | restart | reload | status | enable] 服务名称

开启、关闭、重启、重新加载、状态、开机启动

RPM软件安装包

RPM: 一种linux的软件包的打包和安装工具,它的操作的软件都是.rpm结尾。

Rpm 命令

查看当前系统中已经安装的rpm包:rpm –qa

卸载rpm软件包:rpm –e firefox

安装rpm软件包:rpm –ivh  firefox.rpm

YUM包管理:是一种 基于RPM的软件包管理工具,它能够从指定服务器上自动下载 RPM包并且自动安装,可以自动处理软件包之间的依赖关系。

查看当前系统中已经安装的rpm软件包,yum list installed | grep firefox

卸载rpm包:yum move firefox.x86_64

安装rpm包:yum install firefox

关闭防火墙:systemctl stop firewalld

 

cat /etc/shells  有多少个解释器

head -1 /etc/passwd  查看某文档倒数第一行,解释器是/bin/bash

pstree 查看进程树

ctrl + L 清屏  ctrl + A 将光标移到行首   ctrl + E 将光标移动行尾  ctrl + C 终止操作

ctrl + D 一般为结束输入  ctrl + M 回车  ctrl + U 删除光标至行首的所有内容

ctrl + W 删除光标前面的一个单词(空格分隔)  

ctrl + S 挂起,冻结终端  ctrl + Q 解除冻结终端

标准的脚本构成

1、声明解释器  #!/bin/bash

2、注释脚本功能,变量含义,每个步骤要解决的问题

3、具体功能;

bash test.sh  无需加权限可以直接执行脚本。

source test.sh 或者. test.sh 使用source命令执行脚本,用当前默认的bash进行执行

echo “123” > xx.repo 将引号内容输入到文件中(因为文件要给yum用,所以文件必须是repo结尾)

yum –y install vsftpd &> /dev/null 将vsftpd脚本部署到/dev/null 路径下 &> 重定向

systemctl start vsftpd 启动脚本

 

Shell脚本

cat /etc/shells  存放的脚本的类型

echo $USER  查看当前用户

expr 3 \* 3  输出结果9

echo –n “Date is: ”;date +%F   -n是不换行,然后输出结果日期

echo “Date is: `date +%F`”  和上面等价

fdisk –l 列出所有分区表

echo $? 返回0表示上一条命令执行成功,否则不成功

expr 7 + 1 &>/dev/null ; echo $?  将表示结果输出回收站,并判断是否执行成功

let sum=1+1 ->  echo $sum  输出结果

free –m  内存的使用情况  used/total 使用率

yum -y install bc 安装计算器

echo "`echo "scale=2; 7/6"|bc`%"  复合命令

exit 10  以指定的状态退出。默认是最后一条命令执行成功与否的返回值退出

echo –e “\a\a” 解释: -e是转义字符,\a发出警告声  \t插入tab  \n换行且光标移.

动行首  \f换行但光标仍旧停留在原来位置 \v与\f相同 \c最后不加上换行符 \b 删除前一个字符

echo –e “\033[背景色; 字体颜色 字符串 \033[属性效果” eg: echo -e "\033[40;37m 大

爷好 \033[0m"

echo "1.5*10"|bc|cut –d '.' –f1 输出结果15 以小数点为分隔符,输出前1个字符

mkdir –v /tmp/abc 显示并创建

sh -x test_ping.sh  执行脚本打印输出代码以及结果

num=$((num+1)) 数值加1                                       

grep –e 等价于 egrep  eg: egrap “^ac$” file 精确匹配以a开头以c结尾的字符串

两种执行方式:一种chmod 700 **.sh  | ./**.sh   另一种  bash **.sh

特殊符号:

~ 根目录   - 上次目录    eg: cd ~  | cd -

! 历史执行命令记录  eg: !!

!p 执行历史命令记录最后一条命令

history  查看所有的历史命令记录  !1082 执行1082行命令

$ 取变量中内容符

+ - * / % 加减乘除取余

&后台执行

*shell中的通配符,匹配所有

? 问号是shell中的通配符,匹配除回车以外的一个字符

; 分号是shell中一行执行多个命令,命令之间用分号分割

| 管道符 上一个命令的输出作为下一个命令输入  cat filename | grep “abc”

\ 转义字符

-n 无需换行

``  反引号无需换行

‘’  单引号,脚本中字符串要用单引号引起来,但是不同于双引号的是,单引号不解释变量

“” 双引号,脚本中出现的字符串可以用双引号引起来

>重定向  eg: cat haha > ./text.txt

>>追加重定向内容输入  eg: cat haha >> ./text.txt

< 统计  eg: wc < text.txt  输出结果4 4 20  4行4个单词20字节

<< 追加输出 然后后面要用EOF或者END 两个包括

新建分区

fdisk /dev/db  创建分区  然后n(新建分区);(p)显示分区信息;w(保存修改)

  • read 等待用户输入  eg: echo “Login:” à read acc 键盘输入的内容放到内存acc中
  • read –s –t5 –n6变量  解释: 键盘输入的不会显示在屏幕,但会存放到变量中,5s后不输入将会退出, 只识别前6位数  -s 不显示
  • read –p “Login: ” acc 解释:打印输出  -p 打印显示

取消变量名 unset 变量名

定义全局变量 export  eg: export name=’baidu’

数组

ARRAY1=(‘A’ ‘B’ ‘C’ ‘D’)

echo ${ARRAY1[2]}

查看数组  declare –a

访问数组中第一个元素 echo ${array1[0]}

访问数组中所有元素等同于echo ${array1[@]}  或者 echo $array1[*]

统计数组元素的个数 echo ${array1[@]}

获取数组元素的索引 echo ${!array1[@]}

从数组下标1开始 echo ${array1[@]:1}

从数组下标1开始,访问两个元素 echo ${array1[@]:1:2}

声明一个关联数组 declare –A ass_array1 eg:ass_array1=([name]=’baidu’ [age]=20)

运算符

-eq  等于  -gt 大于  -lt 小于  -ge大于或等于  -le小于或等于  -ne不等于

字符串比较运算符

==等于  != 不等于 -n 检查字符串的长度是否大于0  -z 字符串的长度为0则为真

文件与检查

-d 检查文件是否 存在且为目录  -e 检查文件是否存在

-f 检查文件是否存在且为文件  -r 检查文件是否存在且为可读

-s 检查文件是否存在且不为空  -w检查文件是否存在且可写

-x 检查文件是否存在且可执行  -o 检查文件是否存在且被当前用户拥有

-G 检查文件是否存在并且默认组为当前用户组  

file1 –nt file2 检查file1是否file2新

file1 –ot file2 检查file1是否比file2旧

eg: test –d /tmp/dev; echo $? 判断当前目录是否存在

If [ 条件 ]

   then

      命令

fi

If [ 条件 ]

   then

      命令1

else

      命令2

fi

If [ 条件 ]

   then

      命令1

elif

   then

      命令2

else

      命令3

fi

If (( 数学表达式 ));then

   命令行

else

   命令行

fi

注(()) 可以存放数学表达式

if [[ 字符串匹配 ]];then

      命令1

else

      命令2

fi

 

seq 是一个数数的命令 eg: seq 1 9 从1~9 输出; seq 9 -1 1 是从9~1输出,每次-1

1、for直接赋值

for var in 1 2 3 4 5 6

2、使用命令赋值

for var in `seq 1 9`

3、赋值是一个字符串

for var in baism\'s is cool\, baism\'s is nice

for var in value1 value2 ….

  do

      Commands

done

eg:

for var in `seq 1 9`

         do    

                   echo $var

                   sleep 1

done

for ((变量; 条件; 自增自减运算))

   do

        代码块

done

Eg:

for (( i=1;i<10;i++ ))

         do              

                   echo $i

done

for((;;))

         do

                   ping -c1 $1 &>/dev/null   #ping的次数,-w是指执行的最后期限,&>/dev/null 是指标准输出和错误输出都输出到/dev/null上

                   if [ $? -eq 0 ]

                            then

                                     echo -e "`date +"%F %H:%M:%S"`: $1 is \033[32m UP \033[0m"

                   else

                                     echo -e "`date +"%F %H:%M:%S"`: $1 is \033[31m DOWN \033[0m"

        fi

                   sleep 5

done

while [ condition ]

 do

         commands

done

 

until [ condition ]  条件为假开始执行,条件为真停止执行

do

         commands

done

case 变量 in

条件1)

         commands1

;;

条件2)

         commands2

;;

*) #其他

esac

注:每个代码块执行完毕要以;;结尾代表结束,case结尾要以倒过来写的esac来结束

case $n in
1)
echo haha
;;
2)
echo hehe
;;
*)
echo "1|2"
;;
esac

特殊变量

$* :代表所有参数,其间隔为IFS内定餐数的第一个字元

$@: 与*星号类同,不同之处在于不参照IFS

$#:代表参数变量

$: 执行上一个指令的返回值

$-: 最近执行的foreground pipeline的选项参数

$$: 本身的process ID

$: 执行上一个背景执行的PID

$_: 显示出最后一个执行的命令

$N: shell的第几个外传参数

       

 

case 变量 in

条件1)

         commands1

;;

条件2)

         commands2

;;

*) #其他

esac

注:每个代码块执行完毕要以;;结尾代表结束,case结尾要以倒过来写的esac来结束

case $n in
1)
echo haha
;;
2)
echo hehe
;;
*)
echo "1|2"
;;
esac

函数名 () {
代码块
return N
}
#函数定义
start () {
echo "Apache start .... [ok]"
}
stop () {
echo "Apache stop .... [Fail]"
}
#调用函数
start

function 函数名 {
代码块
return N
}

^ 瞄定开头^a以a开头默认瞄定一个字符

$ 瞄定结尾a$ 以a结尾 默认瞄定一个字符(^$同时使用精确匹配) ^$表示空行

. 匹配除回车以外的任意字符

() 字符串分组

[] 定义字符类,匹配括号中的一个字符

[^] 表示否定括号中出现字符类中的字符,取反

\  转义字符

|  或

Eg:

  • 精确匹配,以a开头c结尾 中间任意 长度为3个字节的字符串   egrep “^a.c$” file
  • 精确匹配,以a开头c结尾 中间是0-9的整数 长度为3个字节字符串  egrep “^a[0-9]c$” file
  • 字符串分组,以a或者b开头c结尾 中间任意 长度为3个字节的字符串   egrep “^(a|b).c$” file 

限定符

*  某个字符之后加型号表示该字符不出现或出现多次

?  与星号相似,表示该字符出现一次或者不出现

+  与星号相似,表示其前面字符出现一次或多次,但必须出现一次

{n,m} 某个字符之后出现,表示该字符最少n次,最多m次

{m} 正好出现m次

  • 精确匹配 以a开头c结尾 中间是有b或者没有b 长度不限的字符串  egrep “^ab*c$” file
  • 精确匹配 以a开头c结尾 中间是最多有1个b的字符串  egrep “^ab?c$” file
  • 精确匹配 以a开头c结尾 中间是有b 长度不限的字符串  egrep “^ab+c$” file
  • 精确匹配 以a开头c结尾 中间是字符b出现3次的字符串  egrep “^ab{3}c$” file
  • 精确匹配 以a开头c结尾 中间是字符b最少2次,最多5次的字符串  egrep “^ab{2,,5}c$” file

POSIX特殊字符

[[:alnum:]] 任何字母和数字
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:graph:]] 非空字符(非空格控制字符)
[[:space:]] 任何空白字符
[[:upper:]] 任何大写字母
[[:lower:]] 任何小写字母
[[:punct:]] 任何标点符号
[[:cntrl:]] 控制字符
[[:print:]] 非空字符(包括空格)
[[:blank:]] 空格和TAB字符
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]
注:[[]]双中括号:第一个中括号是匹配符[]匹配中括号中的任意一个字符,第二个[]是格式,

  • 精确匹配 以a开头c结尾 中间是1个字节且是字母的匹配的字符串  egrep “^a[[:alnum:]]c$” file
  • 精确匹配 以a开头c结尾 中间是1个字节且是大写字母的匹配的字符串  egrep “^a[[:upper:]]c$” file
  • 精确匹配 以a开头c结尾 中间是多个大写字母的匹配的字符串  egrep “^a[[:upper:]]*c$” file
  • ^(25[0-5]|2[0-4][[:digit:]]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$

分解:25[0-5] -> 200-255  2[0-4][[:digit:]]->200-249  [0-1]{1}[0-9]{2}->0-99 等价于[01]?[[:digit:]][[:digiti:]]?

  • IP地址‘^((25[0-5]|2[0-4][[:digit:]] | [01]?[[:digit:]][[:digit:]]?).){3} (25[0-5]|2[0-4][[:digit:]][01]?[[:digit:]][[:digit:]]?)$’

((25[0-5]|2[0-4][[:digit:]] | [01]?[[:digit:]][[:digit:]]?).){3} 类似 (x.){3} 第四段

  • 电话号码egrap “^[[:graph:]]{12}$” number|grep “^(0(1-9)[0-9]?)-[1-9](0-9){6,7}$”

 

Sed命令 是linux的一个外部命令,它是一个行(流)编辑器,非交互式的对文件内容进行增删改查的操作,使用者只能在命令行输入编辑命令,指定文件名,然后在屏幕上查看输出,它和文本编辑器有本质的区别

区别是:文本编辑器:编辑对象是文件  行编辑器:编辑对象是文件中的行

命令:set [options] ‘{command}[flags]’ [filename]

选项

-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。抑制自动输出
-V或--version 显示版本信息。

-r 使用正则表达式

! 取反(跟在模式条件后与shell有所区别)

命令:

a :在匹配后面添加

c :更改
d :删除
i :在匹配前面添加;
p :打印

s :查找替换
y :转换N D P

eg:

sed ‘a\hello world’ data  在data每行后面都添加hello world

sed ‘3a\hello world’ data  在data第3行后面都添加hello world

sed ‘2,4a\hello world’ data  在data第2-4行后面都添加hello world

sed ‘/3 the/a\hello world’ data //开启匹配模式 a在后面添加 helloworld

sed ‘i\hello world’ data  在data每行前面面都添加hello world

sed ‘3d’ data  删除第三行

sed ‘s/dog/cat’ data  将data中的dog全部换成cat

sed ‘3s/dog/cat’ data  将data中的第三行dog全部换成cat

sed ‘c\hello world’ data  将data中的所有语句hello world

sed ‘2,4c\hello world’ data  将data中的2-4行删除,添加一句hello world

sed ‘y/abc/ABC’ data  将data中的abc中全部替换对应的字母ABC

sed ‘p’ data  将data中语句打印两遍

 

 

Linux从入门到精通全套完整版(适合Linux入门、初学Linux小白)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

【2021全新】Linux Shell脚本基础入门精选教程(合集)_哔哩哔哩_bilibili

posted @ 2021-06-01 20:52  繁星的夜空2012  阅读(156)  评论(0编辑  收藏  举报