shell脚本编写学习笔记一

本文介绍Linux系统的用户管理、文件权限配置及Shell脚本基础。覆盖了用户添加、删除、权限设置等内容,并深入讲解Shell脚本创建、变量赋值、流程控制等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当登录到linux系统中是,bash shell将作为登录的shell启动,登录shell将查找4个不同的启动文件处理其中的命令

》/etc/profile

》$HOME/.bash_profile

》$HOME/.bash_login

》$HOME/.profile

/etc/profile/文件是bash shell在系统上的主默认启动文件,在登录Linux系统时,bash将执行/etc/profile启动文件中的命令

启动bash shell而并没有登录系统,只有在命令行输入bash,启动了交互式的shell,交互式shell与登录shell不同。

交互式shell启动会检查bashrc文件

Linux的root用户是Linux系统管理员,它的UID始终为0,Linux系统为各种非实际用户的函数创建了大量的用户账号,称为系统账户

Linux将500以下的UID保留作为系统账户,

/etc/passwd文件包含了用户名和密码

/etc/shadow文件为Linux管理密码方式提供了更多的控制,只有根用户才能访问/etc/shadow文件

添加新用户使用命令

$/usr/sbin/useradd name

删除用户的命令

$/usr/sbin/userdel -r name

用户账户修改使用工具

usermod 编辑用户字段,以及指定主要和次要用户组成员

passwd 修改已有用户的密码

chpassswd 读取登录用户名和密码对文件,并更新密码

chage 修改密码的逾期日期

chfn  修改用户账户的注释信息

chsh 修改用户账户的默认shell

Linux用户账户对控制各种用户的安全性极为有效,但是他们在允许用户资源共享方面稍有欠缺。Linux使用用户组来保障资源共享的

安全性问题。

/etc/group文件包含关于系统所使用的各种用户组信息

创建用户组命令

$/usr/sbin/groupadd shared

文件权限 

使用umask命令创建任何文件或目录的默认权限

使用chmod修改创建一个文件和目录的权限设置

======================================================

shell脚本的基础知识

创建脚本文件

第一行必须指明所使用的shell

#!/bin/bash

以后出现的#为注释

反引号的使用(``)

shell脚本中一个最有用的功能是普通的反引号字符,反引号允许将shell命令的输出赋值给变量。

定向输出使用>

定向输入使用<

管道使用| ,管道传送链接命令以提供更详细的输出。

数字计算expr命令

shell中使用转意字符\来识别计算中的符号

在bash中,为一个变量指定一个数学值时,可以用美元符号和方括号($[openration])把数字等式括起来。

bash提供了计算器bc,可以进入shell计算状态。

退出脚本

为了向shell表明命令已经处理完毕,没条运行在shell中的命令都使用一个退出状态,这个退出状态是一个介于0和

255之间的整数值,当命令运行完成,命令就会把退出状态传递给shell

Linux提供$?特殊变量来保存最后一条命令执行结束的退出状态。

=======================================================

编辑shell脚本中使用结构化命令

最基本的结构化命令类型就是if-then语句

if-then-else命令来进行选择

if-then-elif-if嵌套fi语句

test命令来检测if-then语句中不同条件的方法

test比较数值

n1 -eq n2 检查n1是否等于n2                          n1 -le n2 检查n1是否小于或等于n2

n1 -ge n2 检查n1是否大于等于n2                  n1 -lt n2  检查n1是否小于n2

n1 -gt n2 检查n1是否大于n2                           n1 -ne n2 检查n1是否不等于n2

字符串比较

str1 = str2       是否相等            str1 > str2      是否大于

str1 != str2 是否不同                 -n str        检查str长度是否大于0

str1 < str2 是否小于                  -z str        str长度是否为0

test命令文件比较

-d   file                检查file是否存在并且是一个目录

-e file                  检查file是否存在

-f  file                  检查file是否存在并且是一个文件

-r  file                  检查file是否存在并且可读

-s file                  检查file是否存在并且不为空

-w file                 检查file是否存在并可写

-x  file                   检查file是否存在并且可执行

-O file                   检查file是否存在并且被当前用户拥有

-G file 

file1 -nt file2

file1 -ot file2

复合条件检查

[ condition ] && [ condition ] 布尔操作使用AND,符合两个条件

[ condition ]  || [ condition ]    布尔操作使用OR,任意一个为true

if-then中高级特征

双括号表示数学表达数         ((expression))

双方括号表示高级字符串处理函数[[ expression ]]

============================================================

case命令   case in       …… esac

for命令       for     in            do                commands    done


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值