用户体系
- useradd username管理
- /home/username 创建目录
- /etc/passwd
- /etc/shadow 用户密码相关的文件
- id
- userdel username -r (加了-r 会删除对应家目录)
- usermod -d 可以修改用户家目录的位置userod -d /home/w1 w(usermod -g group2 user2)
- change 修改用户的生命周期
- groupadd groupdel(useradd -g group1 user2)
- su - username 临时用户切换
- sudo 管理员授权给普通用户 。root用户可以通过visudo 来添加命令的授权
- /etc/passwd
wilson:x:1000:1000::/home/wilson:/bin/bash :x(x代表切换用户需要输入密码,为空则不需要密码):uid:gid:comment:家目录位置:用户登录后的命令解释器 (如果设置为 /sbin/nologin 则用户不能登录)
管道和重定向
- 管道和管道符
- 管道和信号一样,也是进程通信的方式之一
- 匿名管道(管道符)是Shell 编程经常用到的通信工具
- 管道符是“|”,将前一个命令执行结果传递给后面的命令
- 重定向
- 一个进程默认会打开标准输入,标准输出,错误输出三个文件描述符
- 输入重定向符号“<”
- 输出重定向符号“>”(清空输入),“>>”(追加),“2>”(仅输出错误内容),"&>"(输出所有内容)
以上脚本会生成一个新文件,文件里包含一行I am xx的字符#!/bin/bash cat > /path/to/a/file << EOF I am $USER EOF
变量的赋值
-
交互式变量赋值 read var
-
变量名=变量值
a=123(等号两边不能有空格)
-
使用let为变量赋值
let a=10+20(不建议,因为bash的计算性能非常差)
-
将命令赋值给变量
l=ls
-
将命令结果赋值给变量,使用$()或者``
letc=$(ls -l /etc)
-
变量值由空格等特殊字符可以包含在“ ”或‘ ’中
-
输出变量的内容使用 $进行引用 例如 echo $var
-
变量的引用
${变量名}
$变量名
-
如果是需要在变量输出结果后面追加内容,则需要使用第一种,否则会识别成别的变量名称
-
变量的默认作用范围(只在自己的范围内有效)
-
使用source 或 . 在当前环境下执行 .sh 脚本
- 变量的导出
- export(可以将变量导出,让子进程读取到变量)
- 变量的导出
- unset
- 变量的导出
- 系统环境变量
- 环境变量:每个Shell打开都可以获得到的变量
- set(查看更多变量–预定义便利和话环境变量) env(查看所有的环境变量)
- 仅查看某一个变量 echo $USER
- $PS1 控制台日志输出格式
- $? 上一条命令是否正确执行【返回0正确执行,1执行异常】 $$ pid $0当前进程的名称
- 参数位置 $1 $2 …… ${10}
- 环境变量:每个Shell打开都可以获得到的变量
- 数组类型
- 定义数组:IPTS=( 10.0.0.1 10.0.0.2 )
- 括号和内容直接有空格,以空格来分隔各个元素
- 显示数组的所有元素
- echo ${IPTS[@]}
- 显示数组元素的个数
- echo ${#IPTS[@]}
- 显示数组的第一个元素
- echo ${IPTS[0]}
- 定义数组:IPTS=( 10.0.0.1 10.0.0.2 )
-
特殊字符:一个字符不仅有字面意义,还有元意(meta-meaning)
#
注释- ; 分号 ——分隔语句
- \ 转义符号
- “和‘引号
- ” 双引号 对变量不完全引用
- ’ 单引号 对变量进行完全引用
- `反引号——可以执行一条命令
-
运算符(shell 只是支持整数运算)
- 赋值运算符
- = 赋值
- unset 取消赋值
- expr 进行运算赋值
- 符号和运算符要有空格
- 算数运算符
- 数字常量
- 双圆括号
- (( a++))
- 赋值运算符
-
特殊符号
- 引号
- ‘完全引用
- “不完全引用
- `执行命令
- 括号
- ()(()) $()
- 单独使用圆括号会产生一个shell
- 数组初始化也是用圆括号 IPS=( 21.23 23.23 )
- [] [[]]
- 用来做测试
>
<
输入和输出- echo {0…9} 输出0到9 的数字
- && ||
- & 后台运行
- ()(()) $()
vim、sed、awk编辑器
- vim 是全文本编辑器 sed、awk是行编辑器
- sed awk 是非交互式的文本编辑
- sed awk 是对文本一行一行的处理
- sed 的介绍
- 将文件以行为单位读取到内存(模式空间)
- 使用sed的每个脚本对该行进行操作
- 处理完成后输出该行