前言:本文不仅仅是介绍经常使用的命令,还融入了bash语法,每一个知识点都有浅显的例子配合,让你很容易消化并吸取,最后还有一个boss任务等你挑战,耐心学完的同窗确定会有很大的收获的。你们以为有用的话,star一下,而后能够随意分享给须要的人,重点是加颗星星哦,加颗星星哦,加颗星星哦。html
下面这张摘自鸟哥的图能够很好的说明linux
展现所有的环境变量,若是你想获取某个特殊的变量,用 echo $变量名
git
展现用户命令,系统调用、库函数等github
搜索可执行文件、源文件正则表达式
在环境变量中搜索可执行文件,并打印完整路径shell
清空屏幕数组
在屏幕上显示文本文件bash
能够改变文件和目录的读、写、执行权限
linux 中的用户、组、文件网络
复制文件ssh
比较文件,我在上面复制的文件中加了一行diff
查找文件,能够经过正则来查
查看文件前10行
显示全部文件,-l
显示长格式化 -a
显示包括隐藏文件
移动文件,同时也能够重命名文件
删除文件,-r
删除目录 -f
强制删除
建立新文件
很是有用的一个文本处理命令,逐行运行,默认使用空格分割,-F
表示分割的样式
匹配正则表达式的文本行,并输出,-E
正则模糊匹配 -F
精确字母匹配 -w
精确单词匹配
正则替换
排序
统计文本行数,单词数,字符数
进入目录
建立目录
当前目录的路径
月历
当前日期和时间
磁盘使用状况
文件或目录使用状况
列出你的进程
远程链接
列出固然活动进程
test是关键字,表示判断;EXPRESSION是被判断的语句。
echo $?
输出判断结果,0表示成功,其余表示失败。
中括号的左右扩弧和EXPRESSION之间都必须有空格!
文件类型判断
字符串和数字判断
例子1:判断文件README.md是否是文件
#!/bin/bash if [ -f ../README.md ];then echo 'file exist' else echo 'file not exist' fi exit 0
例子2:提示用户输入值,若是大于0输出’正数’,小于0输出’负数‘,等于0输出’零‘
#!/bin/bash # 提示用户输入一个值 echo -n "请输入一个数字:" # 保存用户输入的值到num中 read num if [ "$num" -gt 0 ];then echo '正数' elif [ "$num" -lt 0 ];then echo '负数' else echo '零' fi exit 0
例子:提示用户输入Y/y或N/n。若输入Y/y,则输出“咱们约起来吧”;若输入N/n,则输出“不约,再见”;不然,“输入有误”
#!/bin/bash echo -n "你单身吗?(y/n)" read val case $val in Y|y) echo "咱们约起来吧" ;; N|n) echo "不约,再见" ;; *) echo "输入有误" ;; esac exit 0
例子1:输出当前文件夹的一级子目录中文件名字
#!/bin/bash # 将ls的结果保存到变量CUR_DIR中 CUR_DIR=`ls` # 显示ls的结果 echo $CUR_DIR for val in $CUR_DIR do if [ -f $val ];then echo "FILE: $val" fi done exit 0
例子2:输出1-10之间数字的总和
#!/bin/bash sum=0 for ((i=1;i<10;i++)) do ((sum=$sum+$i)) done echo "sum=$sum" exit 0
例子:从0开始逐步递增,当数值等于5时,中止递增
#!/bin/bash val=0 while [ "$val" -lt 5 ] do echo "val=$val" ((val++)) done exit 0
break命令容许跳出循环
continue命令相似于 break命令,只有一点重要差异,它不会跳出循环,只是跳过这个循环步。
例子1:[break应用]从0开始逐步递增,当数值等于5时,中止递增。
#!/bin/bash # 设置起始值为0 val=0 while true do if [ "$val" -eq "5" ];then # 若是val=5,则跳出循环 break; else # 输出数值 echo "val=$val" # 将数值加1 ((val++)) fi done exit 0
例子2:[continue应用]从0开始逐步递增到10:当数值为5时,将数值递增2;不然,输出数值
#!/bin/bash # 设置起始值为0 val=0 while [ "$val" -le "10" ] do if [ "$val" -eq "5" ];then # 若是val=5,则将数值加2 ((val=$val+2)) continue; else # 输出数值 echo "val=$val" # 将数值加1 ((val++)) fi done exit 0
一对括号表示是数组,数组元素用“空格”符号分割开。引用数组时从序号0开始。
array[0]=10 array[1]=20 array[2]=30 array[3]=40 array[4]=50
#!/bin/bash array=(10 20 30 40 50) # 显示数组中全部元素 echo '显示数组中全部元素' echo ${array[*]} echo ${array[@]} # 显示数组第2项 echo '显示数组第2项' echo ${array[1]} # 显示数组长度 echo '显示数组长度' echo ${#array[@]} # 输出数组的第1-3项 echo '输出数组的第1-3项' echo ${array[@]:0:3} # 将数组中的0替换成1 echo '将数组中的0替换成1' echo ${array[@]/0/1} # 删除数组第2项元素 # 说明: # unset仅仅只清除array[1]的值,并无将array[1]删除掉 echo '删除数组第2项元素' unset array[1] echo ${array[@]} exit 0
#!/bin/bash # 编辑一个函数foo:打印foo的输入参数的总数,并输入每一个参数和参数对应的序号。 function foo() { # 定义局部变量i local i=0 # 定义局部变量total=传入foo的参数总数 local total=$# # 输出参数总数 echo "total param =$total" # 输出传入foo的每个参数 for val in $@ do ((i++)) echo "$i -- val=$val" done # 返回参数总数 return $total } foo foo param1 param2 param3 # 输出foo param1 param2 param3的返回值 echo "return value=$?" exit 0
数值元算主要有4种实现方式:(())、let、expr、bc。 工做效率:(()) == let > expr > bc** (())和let是bash内建命令,执行效率高;而expr和bc是系统命令,会消耗内存,执行效率低。 (())、let和expr只支持整数运算,不支持浮点运算;而bc支持浮点运算。
数值运算
实例1:用4中方式实现3*(5+2)
#!/bin/bash # (()) val1=$((3*(5+2))) echo "val1=$val1" # let let "val2=3*(5+2)" echo "val2=$val2" # expr val3=`expr 3 \* \(5+2\)` echo "val3=$val3" # bc val4=`echo "3*(5+2)"|bc` echo "val4=$val4" exit 0
实例3:5/3浮点运算,保留3位小数
#!/bin/bash # bc 实现5/3浮点运算,保留3位小数 val5=`echo "scale=3; 5/3"|bc` echo "val5=$val5" exit 0
#!/bin/bash str='hello world' # 显示字符串 echo '显示字符串' echo ${str} # 显示字符串长度 echo '显示字符串长度' echo ${#str} # 提取world echo '提取world' echo ${str:6} # 提取or echo '提取or' echo ${str:7:2} # 删除hello echo '删除hello' echo ${str#hello} # 删除world echo '删除world' echo ${str%world} # 将全部的字符l替换为m echo '将全部的字符l替换为m' echo ${str//l/m} exit 0
选项与参数: -n: 不要执行 script,仅查询语法的问题; -v: 再执行 sccript 前,先将 scripts 的内容输出到屏幕上; -x: 将使用到的 script 内容显示到屏幕上,这是颇有用的参数!
例子:想要执行bash脚本,并查看bash的调用流程,能够经过如下命令:
bash -x test.sh
选项与参数: -n: 输出内容以后,不换行。默认是输入内容以后,换行。 -e: 开启反斜线“\”转义功能 -E: 开启反斜线“\”转义功能(默认)。
例子:输出please input a number:以后不换行
echo -n "please input a number:"
在屏幕上显示出指定的字串
从标准输入设备读入一行,分解成若干字,赋值给bash程序内部定义的变量
别名,alias l='ls -al'
export能够把bash的变量向下带入子bash(即子bash中可使用父bash的变量),从而让子进程继承父进程中的环境变量。但子bash不能用export把它的变量向上带入父bash。
当bash执行到exec语句时,不会去建立新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程(也就是最初的bash)就终止了,因此bash程序中exec后面的语句将再也不被执行。
使bash读入指定的bash程序文件并依次执行文件中的全部语句。
退出Shell程序,在exit以后可有选择地指定一个数位做为返回状态。
后语:你们以为有用的话,star一下,而后能够随意分享给须要的人,重点是加颗星星哦,加颗星星哦,加颗星星哦。