当登录到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