linux学习笔记--shell编程基础

shell编程基础:
echo 【选项】 【字符】 输出命令 ,输出字符之间有空格的要加双引号
-e 支持反斜线控制的字符转换,反斜线字符表如下
在这里插入图片描述

脚本执行:
赋予执行权限 chmod 755 hello.sh
./hello.sh 在当前目录下执行
通过bash调用 bash hello.sh 此方法不用执行权限也可以
dos2unix 【文件名】 转换windows格式到linux格式
history 【选项】 历史命令
alias vi=’vim’ 添加系统命令别名
unalias 【别名】 删除别名
bash常用快捷命令:
ctrl+c 强制终止命令
ctrl+l 清屏
ctrl+u 删除已输入命令
ctrl+y 粘贴ctrl+u删除的命令
ctrl+d 退出登录
ctrl+r 搜索历史命令
把命令执行的结果信息保存到文件中
命令 &>文件 覆盖写入文件
命令 &>>文件 追加写入文件
输入重定向:
wc 【选项】 < 【文件名】
-c 统计字节数
-w 统计单词数
-l 统计行数
多命令顺序执行:
命令1;命令2 顺序执行命令1,命令2(1错了2也会执行)
命令1&&命令2 当命令1正确执行时,命令2 =才会正确执行
命令1 ||命令2 当命令1 执行不正确时,命令2 才会执行,命令1 正确时命令2 不会执行
命令1 | 命令2 管道符 命令1的正确输出作为命令2的输入
grep 【选项】 “搜索内容” 搜索符合条件的字符
-i 忽略大小写
-n 显示行号
–color=auto 搜索的字显示颜色
通配符
在这里插入图片描述
bash中的其他特殊符号:
在这里插入图片描述

bash变量:
不能以数字开头来命名,默认类型是字符串类型
变量使用等号连接,等号和变量不能有空格
变量名有空格的要用引号括起来,单双引号区别见上表
变量的值中,可以使用“\”转义符
如果需要增加变量的值,可以进行变量的叠加。不过变量需要用双引号包含“ 变量名”或者 {变量名}包含 aa=” a a 456 a a 123 123456 使 aa”456 aa由123变为123456 如果把命令的结果作为变量赋予变量,则需要使用反引号或者 ()包含命令。
环境变量建议大写,便于区分。
set 查看系统中所有变量
unset 【变量名】 删除变量
pstree 确定进程数
设置环境变量 export 变量名=变量值
ps1 系统提示符环境变量,输入界面的最前端提示,修改可修改提示格式
位置参数变量:
在这里插入图片描述

预定义的变量:
在这里插入图片描述

接受键盘输入:
read 【选项】 【变量名】
-p “提示信息”: 在等待read输入时,输出提示信息
-t 秒数 : 等待输入的秒数,默认一直等待
-s 隐藏方式输入
-n 字符数 : read命令接受的字符数
运算符计算:
1.declare 声明变量类型
declare 【+/-】[选项] 【变量名】
-: 给变量设定类型属性
+:取消变量的类型属性
-i: 将变量声明变为整数型
-x:将变量声明变为环境变量
-p:显示指定变量的被声明类型
2. ff= ( ( (( aa+$bb)) 使用双小括号把运算式括起来
支持的运算符13最高:
在这里插入图片描述

变量测试与内容替换:
在这里插入图片描述

环境变量配置文件设置:
source 【配置文件】 不用重新登录使配置文件生效
echo p a t h p a t h = path 输出环境变量 path=” path”:/root 添加环境变量路径名
export 【变量名】=“字符串” 临时的设置环境变量
基础正则表达式:
在这里插入图片描述

cut 【选项】 文件名
-f 列号 :提取第几列
-d分隔符: 按照指定分隔符分割列
cut一般和grep配合使用
awk ‘{printf $2 “\t” $6 “\n”}’ student.txt
awk命令会把读到的值按照列分别赋值给$1,$2…等再输出出来。 后面加文件名的话会读取文件中的字符。与cut不同的在于不会因分隔符是一个空格还是多个空格的情况而误读空格。
awk ‘$6>=87{printf $2 “\n”}’ student.txt 输出条件中大于87的值的列
sed用来选取,替换,删除数据
sed 【选项】 ‘【动作】’ 文件名
-n 一般sed会把所有的数据输出,加-n会只输出处理的行
-e 允许对输入数据应用多条sed命令编辑,命令间使用分号隔开
-i 用sed的修改结果直接修改原文件,而不是屏幕输出。、
在这里插入图片描述

sort 【选项】 文件名 排序命令
-f 忽略大小写
-n 以数值进行排序
-r 反向排序
-t 指定分隔符
-k n[,m] 按照指定的字段范围排序。从第n字段开始,m字段结束
wc [选项] 文件名 统计命令
-l 只统计行数
-w 只统计单词数
-m 只统计字符数
条件判断:在这里插入图片描述在这里插入图片描述

[ -e 文件名 ] 判断文件是不是在,可通过$?来查询是否在,内容和中括号之间必须有空格
文件间的比较:
在这里插入图片描述

ll –i 【文件名】 看是否节点相同
数值之间的比较:
在这里插入图片描述

字符串的判断:

多重条件判断:在这里插入图片描述

if判断语句:
if 【条件判断式】
then
程序
fi

if 分支2:
if [判断式]
then
条件成立时执行的程序
else
条件不成立时执行的程序
fi

nmap –st ip地址 扫描此ip地址的端口开启情况
if多分支模板:
if 【条件判断式】
then
当条件判断式成立时,执行程序1
(exit 值)
elif 【条件判断式2】
then
当条件判断式2成立时,执行程序2
else
当条件都不成立时,执行此程序
fi

case $变量名 in
“值1”)
如果变量的值等于1,便执行程序1;;
“值2”)
如果变量的值等于2,则执行程序2
;;
*)
如果变量的值不是以上的值,则执行此程序
;;
esac

for循环:
for 变量 in 值1 值2 值3…
do
程序
done

for i in $(cat ls.log)
do
程序
done
当ls.log中存在以空格或者换行分隔的字符时默认分开读进for循环
for三式:

for ((i=1;i<=100;i=i+1))
do
s= ( ( (( s+$i))
done
与c语言类似,差别是循环处是两个括号

while模板:
while [条件判断式]
do
程序
done
until语句和while相反,直到条件成立终止循环,否则一直执行
until 【条件】
do
程序
done

仅供参考,希望能给大家带来帮助。
注:图片引用 – 兄弟连linux教学视频(llinux初学者可以看看挺不错的)

猜你喜欢

转载自blog.csdn.net/weixin_42821448/article/details/107768213
今日推荐