Linux最全操作命令(12)——Shell编程

Shell编程


echo输出命令

语法:echo 【选项】【输出内容】

-e 支持反斜线控制的字符转换

历史命令

语法:history 【选项】【历史命令保存文件】

-c:清空历史命令

-w:把缓存中的历史命令写入历史命令保存文件 .bash.history

命令别名和常用快捷键

alias 别名=‘原命令’ 设置命令别名

alias 查询命令别名

vi /root【用户名】/.bashrc 让别名永久生效

unalias 别名 删除别名

输出重定向

命令 &>文件 以覆盖的方式把正确输出和错误输出都保存到同一个文件当中

命令 &>>文件 以追加的方式吧正确输出和错误输出都保存到同一个文件当中

输入重定向

wc 【选项】【文件名】

-c 统计字节数

-w 统计单词数

-l 统计行数

多命令顺序执行

; 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系

&& 命令1&&命令2 当命令1正确执行,命令2才会执行,否则命令2不会执行

|| 命令1||命令2 当命令1执行不正确,命令2才会执行,否则不会执行

管道符

命令1 | 命令2 命令1的正确输出作为命令2的操作对象

grep 【选项】“搜索内容“ 文件名

-i 忽略大小写

-n 输出行号

-v 反向查找

–color=auto 搜索出的关键字用颜色显示

通配符

?:匹配一个任意字符

*: 匹配0个或任意多个任意字符,可以匹配任意内容

[]:匹配中括号中任意一个字符

[-]:匹配中括号中任意一个字符,-代表一个范围

[^]:表示匹配不是中括号中的一个字符

特殊字符

‘’ 在单引号中所有的特殊字符都没有特殊含义

“” 在双引号中特殊字符没有特殊含义,但是’’$’’ ‘’`’’ ‘’’ 是例外,分别表示调用变量的值,引用命令和转义符

`` 反引号括起来的内容是系统命令,在Bash中会先执行它

$() 和反引号作用一样,用来引用系统命令

$ 用于调用变量的值

\ 转义符,在\之后的特殊字符将失去特殊含义,变为普通字符

设置环境变量

export 变量名=变量值 申明变量

env 查询变量

unset 变量名 删除变量

位置参数变量

$n 这个变量n为数字,1-9代表第一道第九个参数,十以上的参数需要用大括号包含

$* 这个变量代表命令行中所有的参数,并且把所有的阐述当成一个整体

$@ 这个变量代表命令行中所有的参数,,不过把每个参数区分对待

$# 这个变量代表命令行中所有参数额个数

预定义变量

$? 最后一次执行的命令的返回状态,如果返回的值为0,则代表上一次执行正确,否则不正确

$$ 当前进程的进程号(PID)

$! 后台运行的最后一个进程的进程号(PID)

接收键盘输入

语法:read 【选项】 【变量名】

-p 提示信息 :在等待read输入时,输出提示信息

-t 秒数 :read命令会一直等待用户输入,使用此选项可以指定等待时间

-n 字符数:read命令只接受指定的字符数,就会执行

-s :隐藏输入的数据,适用于机密信息的输入

declare声明变量类型

语法:declare 【+/-】【选项】 变量名

-:给变量设定类型属性

+:取消变量的类型属性

-i:将变量声明为整数型(integer)

-x:将变量声明为环境变量

-p:显示指定变量的被声明的类型

正则表达式
  • 前一个字符匹配0次或任意多次

. 匹配除了换行符以外任意一个字符

^ 匹配行首

$ 匹配行尾

[] 匹配中括号中指定的任意一个字符,只匹配一个字符

[^] 匹配除了中括号以外任意一个字符

\ 转义符

{n} 表示其前面的字符恰好出现n次

{n,} 表示其前面的字符出现不小于n次

{n,m} 表示其前面的字符至少出现n次,最多出现m次

cut字段提取命令

语法:cut [选项] 文件名

-f 列号 提取第几列

-d 分隔符 按照指定分隔符分割列

printf命令

语法:printf ‘输出类型输出格式’ 输出内容

输出类型:

%ns 输出字符串 n是数字指代输出几个字符

%ni 输出整数 n是数字指代输出几个数字

%m.nf 输出浮点数,m和n是数字,指代输出的整数位数和小数位数

输出格式:

\a 输出警告声音

\b 输出退格键

\f 清除屏幕

\n 换行

\r 回车

\t 水平输出退格键,也就是Tab键

\v 垂直输出退格键,也就是Tab键

awk命令

语法:awk '条件1{动作1}条件2{动作2}…'文件名

一般使用关系表达式作为条件

动作:格式化输出,流程控制语句

sed命令

语法:sed 【选项】‘【动作】’ 文件名

-n 把经过sed命令处理的行输出到屏幕

-e 允许对输入数据应用多条sed命令编辑

-i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作:

a\ 追加,在当前行后添加一行或者多行,添加多行时,除了最后一行外,每行末尾要用‘\’代表完结

c\ 行替换,用c后面的字符串替换原数据行,替换多行时,除了最后一行外,每行末尾要用‘\’代表完结

i\ 插入,在当前行的前面插入一行或多行,插入多行时,除了最后一行外,每行末尾要用‘\’代表完结

d 删除,删除指定的行

p 打印,输出指定的行

s 字串替换,格式为 行范围s/旧字串/新字串/g

排序命令sort

语法:sort 【选项】 文件名

选项:

-f 忽略大小写

-n 以数值型进行排序,默认使用字符串型进行排序

-r 反向排序

-t 指定分隔符,默认的分隔符是制表符

-k n[,m] 按照指定的字段范围排序,从第n个字段开始,m字段结束(默认到行尾)

统计命令wc

语法:wc 【选项】 文件名

选项:

-l 只统计行数

-w 只统计单词数

-m 只统计字符数

按照文件类型进行判断

-d 文件 判断该文件是否存在,并且是否为目录文件(是目录为真)

-e 文件 判断该文件是否存在(存在为真)

-f 文件 判断该文件是否存在,并且是否为普通文件(是普通文件为真)

语法:

test [选项] 文件名

[ 选项 文件名 ] 中括号两头必须有空格

按照文件权限进行判断

-r 文件 判断该文件是否存在,并且该文件是否拥有读权限(有读权限为真)

-w 文件 判断该文件是否存在,并且该文件是否拥有写权限(有写权限为真)

-x 文件 判断该文件是否存在,并且该文件是否拥有执行权限(有执行权限为真)

两个文件之间进行比较

文件1 -nt 文件2 判断文件1的修改时间是否比文件1的新(如果新则为真)

文件1 -ot 文件2 判断文件1的修改时间是否比文件1的旧(如果旧则为真)

文件1 -ef 文件2 判断文件1是否和文件2的inode号一致,可以理解为两个文件是为同一个文件,判断硬链接

两个整数之间的比较

整数1 -eq 整数2 判断整数1和整数2是否相等(相等为真)

整数1 -ne 整数2 判断整数1和整数2是否不相等(不相等为真)

整数1 -gt 整数2 判断整数1是否大于整数2(大于为真)

整数1 -lt 整数2 判断整数1是否小于整数2(小于为真)

整数1 -ge 整数2 判断整数1是否大于等于整数2(大于等于为真)

整数1 -le 整数2 判断整数1是否小于等于整数2(小于等于为真)

字符串的判断

-z 字符串 判断字符串是否为空(为空返回真)

-n 字符串 判断字符串是否为非空(非空返回真)

字符串1==字符串2 判断字符串1和字符串2是否相等(相等返回真)

字符串1!=字符串2 判断字符串1和字符串2是否不相等(不相等返回真)

多重条件判断

判断1 -a 判断2 逻辑与,判断1和判断2都成立,最后的结果才为真

判断1 -o 判断2 逻辑或,判断1和判断2有一个成立,最后的结果就为真

!判断 逻辑非,是原来的判断取反

单分支if条件语句

if [ 条件判断式 ];then

程序

fi

或者

if [ 条件判断式 ]

then

程序

fi

双分支if条件语句

if [ 条件判断式 ]

then

	条件成立时,执行的程序

else

	条件不成立时,执行的另一个程序

fi

多分支if条件语句

if [ 条件判断式1 ]

then

	成立时执行

elif [ 条件判断式2 ]

then 

	成立时执行

else

当所有条件不成立时,执行次程序

fi

case语句

case $变量名 in

“值1”)

如果变量的值等于值1,则执行程序

;;

“值2”)

如果变量的值等于值2,则执行程序

;;

…省略

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

for循环

语法1:

for 变量 in 值1 值2 值3…

do

	程序

done

语法2:

for(( 初始值;循环控制条件;变量变化 ))

do

	程序

done
while循环

while [ 条件判断式 ]

do

	程序

done
until循环

until [条件判断式]

do

	程序

done

和while循环相反,当条件判断式不成立时执行程序

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值