SHELL
查看所支持的shell: chsh -l
查看当前用户的shell: echo $SHELL
切换
1:临时 直接执行 /bin/sh exit 返回上一级 Ctrl +d 是注销就结束了
2:永久 chsh ――》新的替换的shell
bash的特点
1:交互式
2:命令的历史功能 (history) 若想再执行某一行的命令按 (!数字)
3:命令的补全 tab键 两次tab键是以xx为开头的全部的词命令
4:通配符 * ? 【1-9】 【!(取反)1-9】
5:前台后台切换 ps -aux 查看运行的任务(越在前的任务越大越难)
运行的任务如果比较大可以在后台运行
bg -1 后台 fg -1 前台
Ctrl+c 停止运行的任务 jobs 查看停止运行的任务
6:特殊字符 “”(弱引用) ‘’(强引用) ``(命令取代)
7.输入输出重定向
0 标准输入
1 标准输出
2 标准出错
“ &> (表示所有的输出)” 等同于 “ = 2>&1”
可以发邮件:mail root -s 邮件名 0< 邮件文档
8.命令别名
alias find10=`find / -size +10M` 定义别名
find10 也就是find / -size +10M:执行find10这自动收索大于10M的文件
unalias find10 取消别名定义find10
clear 是清屏
环境变量
查看本地环境变量:set
echo $PATH 查看当前环境变量(变量与变量之间用“:”隔开)
更改环境变量 PATH=$PATH:后面加环境变量
1.本地变量 (只真对当前的shell来使用局部生效)
2.环境变量 (对所有的都会生效)
export(输出) A 把本地变量A变为环境变量
3. 特殊变量 (echo $? 若返回的数是0则正常其他的数是不正常)
a 位置变量 在脚本中:$0(文件名) $1(第一个参数) $2(第二个参数)
b 状态变量
环境文件
系统环境文件 在 /etc/profile 和 /etc/bashrc
个人环境文件 在 ~/.bash_profile id -un 显示用户名
和~/bashrc
umask权限掩码{0(所有者)2(组)2(用户)} 临时更改umask:umask 0nn
永久的更改 vim /etc/bashrc 编辑权限设置
最高权限-umask=实际权限
文件最高权限 666
目录最高权限 777
算数运算
let A=1+1 或者 A=$[1+1] 或者A=$((1+1))
查看结果:echo $A
以脚本的形式算数运算命令: bc (针对整数)
进去以后 scale(精度)=n(数字) 针对有小数点的计算
也可以这样直接写命令:echo "scale=2;5/2" |bc 求5/2的值
判断式
test expression
test 1 -gt(大于) 2
echo $? 判断1是否大于2 (除了0代表对其他的数都是错的)
或者这样: [ 表达式 ]
[ 1 -gt 2 ]
echo $? 判断1是否大于2
对于数字比较
大于 -gt
大于等于 -ge
小于 -lt
小于等于 -le
等于 -eq
不等于 ! 数字 -eq 数字
字符串比较
大于 > (一对[ \> ]中间加转义符 两队[ ] 可以不加转义符
小于 <
等于 = 恒等于 == 注意:等号两边有空格
关于对象的
-f 文件
-e 存在
-d 目录
-L 连接
-r 读取
-x 执行
与是-a 或是-o (两个判断式:与和或)
编写一个脚本:判断用户是否存在,存在显示“ok" 不存在则显示"not ok"
编写一个脚本:判断用户是否存在结果用颜色高亮显示
编写一个脚本:用控制语句(if)编写一个脚本:判断用户是否存在结果用颜色高亮显示
短路操作符
&&(与) (两个语句) ||(或)
grep "^user1\>" /etc/passwd && echo "the account is exist " ||echo "the account is not exist"
在/etc/passwd下收索user1,如果存在显示the account is exist否则显示the account is not exist
grep "^user1\>" /etc/passwd &>/dev/null && echo "the account is exist " ||echo "the account is not exist"
在/etc/passwd下收索user1,如果存在显示the account is exist否则显示the account is not exist,并将收索结果放置/dev/null中
控制语句
选择
1.单选
if [ ];then
.....
fi
2.双选
if [ ];then
..
else
..
fi
用脚本编写添加一个用户(但是不能用useradd)
3.多选
if [ ];then
....
elif [ ];then
...
elif [ ];then
....
fi
用控制语句编写一个脚本:判断输入XX是一个文件呢?是一个目录呢?还是一个连接符呢?
用控制语句编写一个脚本:运行时提示输入帐号,判断该帐号是否存在 ,如果存在显示该用户的shell 和该用户的家目录,以及该用户密码是否设置
4:case 变量 in
变量值1)
.......;;
变量值2)
......;;
变量值3)
....;;
*)
....;;
esac
编写一个脚本:当输入XX判断它在哪里和类型?
循环
1:for 变量 in 变量值;do
........
done
ping在一段网段中那一台主机存在,那一台不存在
编写一个脚本:从1到100的和是多少?
编写一个脚本:从1到100之间的偶数和是多少?
编写一个脚本:从1到100之间的奇数和是多少?
2:while [条件];do
.........
done
编写一个脚本:从1到100的和是多少?
编写一个脚本:从1到100之间的偶数和是多少?
3:while read LINE;do
..........
done <(输入重定向) 文件名
编一个脚本:列出/etc/passwd中有多少行列出来并在前面加上序号
编一个脚本:输入一个目录列出其中的东西,并说明它是一个文件或者目录或者连接符
编一个脚本:调出登录的有哪些普通用户账号并在前面加上序号
4:until [条件];do
............
done
编写一个脚本:从1到100的和是多少?