shell学习资料

shell编程:一些shell命令的集和

1.shell脚本的作用、

1.shell命令

实现以下功能:

  1. 用户主目录下创建一个文件夹23041/day1 mkdir -p ~/23041/day1

  2. 进入用户目录下的23041/day1

    cd ~/23041/day1

  3. 创建一个文件1.txt

    touch 1.txt

2.shell脚本 后缀名为.sh. 

2. shell语法

1. 和C语言比较

  1. 都属于计算机语言

  2. C语言是编译性语言(编译器gcc),强类型语言,数据类型比较多

  3. shell语言是解释性语言,弱类型语言

2. shell开发过程

  1. 创建一个后缀为.sh的文件

    touch 1.sh

  2. 编辑.sh文件

  3. 修改文件权限

    chmod -x 1.sh

  4. 运行文件

3. 变量

1. 用户自定义变量

1. 变量名的命名规范

  1. 由数字,字母和下划线组成,首字母不能为数字

  2. 不能为关键字或保留字

  3. 尽量见名知意,尽量大写

2. 变量名的语法规则

2.位置参数既命令行参数

3. 预定义变量

$# :包含命令行参数的个数

$@ :包含所有命令行参数

$* :包含所有命令行参数

$$:包含正在执行进程的ID号

$?:包含前一个命令的退出状态,正常退出是0(真),反之为非0值(假)

ps -ef 查看所有进程及其D(进程号),系统时间,命令详细目录,执行者等

ps aux 除了可显示-ef所有内容之外,还可显示CPU及内存占用率,进程状态

4. 环境变量

4. hell中的程序和语句

1. 说明性语句 注释

# shell中的注释

2. 功能性语句

1. 键盘读入变量值 read (标准输入)

2. 算术运算命令 expr

expr主要用于简单的整数运算

3. test命令:字符串、整数、文件属性

  1. 字符串

    s1 = s2 测试两个字符串的内容是否完全一样

    s1 !=s2 测试两个字符串的内容是否有差异

    -z s1 测试字符串的长度是否为0

    -n s1 测试s1字符串的长度是否不为0

  1. 整数

    a -eq b 测试a与b是否相等 (equal)

    a -ne b 测试a与b是否不相等

    a -gt b 测试a是否大于b (great)

    a -ge b 测试a是否大于等于b

    a -lt b 试a是否小于b (little)

    a -le b 测试a是否小于等于b

  1. 文件属性

    7种文件:

    普通文件 d 目录文件 l 链接文件 p 管道文件 s 套接字(socket)文件 c:字符设备文件 b:块设备文件

    -d name 测试name是否为一个目录

    -f name 测试name是否为普通文件

    -L name 测试name是否为链接文件

    -r name 测试name是否存在且可读

    -w name 测试name是否存在且可写

    -x name 测试name是否存在且为可执行

    -s name 测试name文件是否存在且其长度不为0

    f1 -nt f2 测试文件f1是否比文件f2更新

    f1 -ot f2 测试文件s1是否比文件f2更旧

3. 结构性语句

1. 选择结构

1.单分支结构

if  表达式
then    命令表
fi

2. 双分支结构

if  表达式
then    命令表1
else    命令表2
fi

3.多分支结构

if  表达式1
then    命令表1
elif    表达式2
then    命令表2
elif    表达式3
then    命令表3
··········
elif    表达式n
then    命令表n
else    命令表n+1
fi

case    字符串常量   in  #测试字符串是否等于模式
        模式1)
                命令表1
                ;;      #类似于break
        模式2)
                命令表2
                ;;
        模式3)
                命令表3
                ;;
        ···············
        模式n)
                命令表n
                ;;
esca

2.循环结构

1. for循环

  1. 带列表的for循环

    for 变量名 in  列表
    do
        命令表
    done

  2. 不带列表foe循环

  1. 类似C语言的for语句

2. while 循环

while   命令或表达式
do
        命令表
done

5.函数

函数的定义

方式一

function_name()
{
​
}

方式二

function	function_nzme()
{

}

function	add()
{
SUM=`expr $1+$2` # $1是你传进来的第1个参数,$2是你传进来的第2个参数
return $SUM		#返回结果
}

函数的调用

方式一

SUM=`functio_name	参数列表`(和函数名之间用空格隔开)
echo	$SUM
#调用add函数的时候
SUM=`add 23 45`
echo	$SUM

方式二

SUM=`functio_name	参数列表`(和函数名之间用空格隔开)
ADD	23	25
echo	$?	#  $?表示上一个命令的退出状态

案例

案例一:

请输入一个文件,判断它是否是普通文件,如果是普通文件,判断它是否有写的权限,如果有写的权限,向文件中写入"hello world"如果文件没有写的权限,给它添加写权限后,写入"hello world"

案例二:

请输入想要下载的文件的名字,让用户确认下是否下载这个软件[Y/N/Q]。 Y(YES|Yes|yes|y|Y):正在下载软件,N:取消下载软件,Q退出

案例三:LinuxOS p169 8-23

案例四:

  1. 判断用户的主目录下是否有file-dir或者dir-dir目录如果这两个目录存在,询问用户是否删除这两个目录,如果用户输入的是Y,将这两个目录删除,重新创建这两个目录如果用户输入的是N,退出程序。如果上述的两个目录不存在,创建这两个目录。

  2. 请用户输入一个路径,将这个路径下的文件拷贝到file-dir将这个路径下的目录拷贝到dir-dir.

  3. 统计拷贝的文件和目录的个数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值