实验六:Linux Shell及vi/vim使用

385 阅读3分钟

实验六:Linux Shell及vi/vim使用

vi/vim简单使用,在命令模式下的保存,删除,查找命令。

Shell变量,运算符,分支,循环,传递参数,函数的使用系统相关信息

vi/vim

包含三种模式命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

命令模式

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

保存

:wq 保存并退出

删除

x 删除当前光标所在处的字符

查找

 ?text 查找text,按n健查找下一个,按N健查找前一个

使用vim进入命令模式

image-20211018230308957

使用i进入输入模式

image-20211018230355273

键入内容,按下esc退出输入模式

image-20211018230514584

退出保存

image-20211018230547358

查看内容

image-20211018230637678

Shell

Shell 既是一个连接用户和 Linux 内核的程序,又是一门管理 Linux 系统的脚本语言。

变量

定义

Shell 支持以下三种定义变量的方式:

variable=value
variable='value'
variable="value"

使用

在变量名前面加美元符号$即可

echo $author
echo ${author}

image-20211018231449221

删除

unset variable_name

image-20211018231730866

运算符

双小括号 (( )) 是 Bash Shell 中专门用来进行整数运算的命令,它的效率很高,写法灵活。

注意:(( )) 只能进行整数运算,不能对小数(浮点数)或者字符串进行运算。

((表达式))

image-20211018232150345

Shell 算术运算符一览表

算术运算符说明/含义
+、-加法(或正号)、减法(或负号)
*、/、%乘法、除法、取余(取模)
**幂运算
++、--自增和自减,可以放在变量的前面也可以放在变量的后面
!、&&、||逻辑非(取反)、逻辑与(and)、逻辑或(or)
<、<=、>、>=比较符号(小于、小于等于、大于、大于等于)
==、!=、=比较符号(相等、不相等;对于字符串,= 也可以表示相当于)
<<、>>向左移位、向右移位
~、|、 &、^按位取反、按位或、按位与、按位异或
=、+=、-=、*=、/=、%=赋值运算符,例如 a+=1 相当于 a=a+1,a-=1 相当于 a=a-1

使用变量进行运算

let i=1
let i+=9
echo $i

image-20211020124303569

分支

if-elseif-else结构

if condition1 then
    command1
elif condition2 then 
    command2
else
    commandN
fi

示例:

a=10
b=20
if [ $a == $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
elif [ $a -lt $b ]
then
   echo "a 小于 b"
else
   echo "没有符合的条件"
fi

创建并编辑文件:

image-20211020130359533

image-20211020130414212

执行:

image-20211020130824765

循环

for 循环

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

示例:

for item in 1 2 3 4 5
do
    echo "This is item$item"
done

执行:

image-20211020131319245

传递参数

脚本内获取参数的格式为:$n。n代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推.

还可以对参数进行处理:

参数处理说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。 如""用「"」括起来的情况、以"*"用「"」括起来的情况、以"1 22 … n"的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@相同,但是使用时加引号,并在引号中返回每个参数。如"*相同,但是使用时加引号,并在引号中返回每个参数。 如"@"用「"」括起来的情况、以"1""1" "2" … "$n" 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

示例:

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "参数数量:$#";
echo "第一个参数为:$1";
echo "以一个单字符串显示所有向脚本传递的参数:$*";

无参数:

image-20211020133106248

带参数:

image-20211020133119366

函数的使用

格式:

[ function ] funname [()]
{
    action;
    [return int;]
}
  1. 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
  2. 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255
  3. 函数返回值在调用该函数后通过 $? 来获得

示例:

fun(){
    echo "Type in two numbers to add"
    echo "first: "
    read num1
    echo "second: "
    read num2
    echo "The sum of $num1 and $num2 is $(($num1+$num2))"
    return $(($num1+$num2))
}
fun
echo "fun excute end, the sum is $? "

image-20211020141352872