shell常用命令:
history | wc -l //查看当前用户记录的历史命令条数
history | tail //查看最近执行的10条命令
!12 //重新执行历史命令列表中的第12条操作
alias cp='cp -i' //别名定义
使用>重定向到文件
ls -ld /etc/ > a.txt //使用>重定向会将原有的内容覆盖掉,如有文件内用通常用>>追加重定向
2> //将错误输出信息输出
2>> //实现错误输出追加到文件
&> //正确,错误都将输出
| //可以将前一个命令的输出交给另一条命令处理,在另一个命令中可以依次使用
例如:
ls -l /etc | wc -l
shell脚本格式:
例如:
vim /opt/bash.sh
#!/bin/bash
ceho "Hello World"
[root@shell~] bash /opt/bash.sh
Hello World
- [root@svr5 ~]# vim location.sh
- #!/bin/bash
- echo $0 //脚本的名称
- echo $1 //第一个参数
- echo $2 //第二个参数
- echo $* //所有参数
- echo $# //所有的综合
- echo $$ //当前进程的进程号
- echo $? //上一个程序的返回状态码
[root@svr5 ~]# chmod +x location.sh
环境变量PS1表示Shell环境的一级提示符,即命令行提示符(\u 用户名、\h 主机名、\W 工作目录、\$ 权限标识):
- [root@svr5 src]# echo $PS1 //查看默认的一级提示
- [\u@\h \W]\$
- [root@svr5 src]#PS1='hehe#' //修改一级提示
- hehe# //更改结果
- hehe# PS1='[\u@\h \W]\$ ' //恢复原有设置
- [root@svr5 src]#
环境变量PS2表示二级提示符,出现在强制换行、at任务编辑等场合:
- [root@svr5 ~]# echo $PS2 //查看默认的二级提示
- >
- [root@svr5 src]# cd \ //强制换行,观察提示符效果
- > /root/
- [root@svr5 ~]# PS2='=> ' //手动修改二级提示
- [root@svr5 ~]# cd \ //再次验证提示符效果
- => ~
- [root@svr5 ~]# PS2='> ' //恢复原有设置
查看系统变量
使用env可查看所有环境变量:
- [root@svr5 src]# env
- HOSTNAME=svr5.tarena.com
- SHELL=/bin/bash
- HISTSIZE=1000
- SSH_CLIENT=192.168.4.110 59026 22
- OLDPWD=/root
- SSH_TTY=/dev/pts/0
- USER=root
- .. ..
一行执行多条命令的情况
- # A && B //仅当A命令执行成功,才执行B命令
- # A || B //仅当A命令执行失败,才执行B命令
- # A ; B //执行A命令后执行B命令,两者没有逻辑关系
- # A && B || C //思考?
1)-eq 比较两个数是否相等。
- [root@svr5 ~]# X=20 //定义一个测试变量
- [root@svr5 ~]# [ $X -eq 20 ] && echo "相等" || echo "不相等"
- 相等
- [root@svr5 ~]# [ $X -eq 30 ] && echo "相等" || echo "不相等"
- 不相等
2)-ne 比较两个数是否不相等。
- [root@svr5 ~]# X=20 //定义一个测试变量
- [root@svr5 ~]# [ $X -ne 20 ] && echo "不等于" || echo "等于"
- 等于
- [root@svr5 ~]# [ $X -ne 30 ] && echo "不等于" || echo "等于"
- 不等于
3)-gt 比较前面的整数是否大于后面的整数。
- [root@svr5 ~]# X=20 //定义一个测试变量
- [root@svr5 ~]# [ $X -gt 10 ] && echo "大于" || echo "否"
- 大于
- [root@svr5 ~]# [ $X -gt 20 ] && echo "大于" || echo "否"
- 否
- [root@svr5 ~]# [ $X -gt 30 ] && echo "大于" || echo "否"
- 否
4)-ge 比较前面的整数是否大于或等于后面的整数。
- [root@svr5 ~]# X=20 //定义一个测试变量
- [root@svr5 ~]# [ $X -ge 10 ] && echo "大于或等于" || echo "否"
- 大于或等于
- [root@svr5 ~]# [ $X -ge 20 ] && echo "大于或等于" || echo "否"
- 大于或等于
- [root@svr5 ~]# [ $X -ge 30 ] && echo "大于或等于" || echo "否"
- 否
5)-lt 比较前面的整数是否小于后面的整数。
- [root@svr5 ~]# X=20 //定义一个测试变量
- [root@svr5 ~]# [ $X -lt 10 ] && echo "小于" || echo "否"
- 否
- [root@svr5 ~]# [ $X -lt 20 ] && echo "小于" || echo "否"
- 否
- [root@svr5 ~]# [ $X -lt 30 ] && echo "小于" || echo "否"
- 小于
6)-le 比较前面的整数是否小于或等于后面的整数。
- [root@svr5 ~]# X=20 //定义一个测试变量
- [root@svr5 ~]# [ $X -le 10 ] && echo "小于或等于" || echo "否"
- 否
- [root@svr5 ~]# [ $X -le 20 ] && echo "小于或等于" || echo "否"
- 小于或等于
- [root@svr5 ~]# [ $X -le 30 ] && echo "小于或等于" || echo "否"
- 小于或等于
1)-e 判断对象是否存在(不管是目录还是文件)
- [root@svr5 ~]# [ -e "/usr/" ] && echo "存在" || echo "不存在"
- 存在
- [root@svr5 ~]# [ -e "/etc/fstab" ] && echo "存在" || echo "不存在"
- 存在
- [root@svr5 ~]# [ -e "/home/nooby" ] && echo "存在" || echo "不存在"
- 不存在
2)-d 判断对象是否为目录(存在且是目录)
- [root@svr5 ~]# [ -d "/usr/" ] && echo "是目录" || echo "不是目录"
- 是目录
- [root@svr5 ~]# [ -d "/etc/fstab" ] && echo "是目录" || echo "不是目录"
- 不是目录
- [root@svr5 ~]# [ -d "/home/nooby" ] && echo "是目录" || echo "不是目录"
- 不是目录
3)-f 判断对象是否为文件(存在且是文件)
- [root@svr5 ~]# [ -f "/usr/" ] && echo "是文件" || echo "不是文件"
- 不是文件
- [root@svr5 ~]# [ -f "/etc/fstab" ] && echo "是文件" || echo "不是文件"
- 是文件
- [root@svr5 ~]# [ -f "/home/nooby" ] && echo "是文件" || echo "不是文件"
- 不是文件
4)-r 判断对象是否可读
此测试对root用户无效,无论文件是否设置r权限,root都可读:
- [root@svr5 ~]# cp /etc/hosts /tmp/test.txt //复制一个文件做测试
- [root@svr5 ~]# chmod -r /tmp/test.txt //去掉所有的r权限
- [root@svr5 ~]# [ -r "/tmp/test.txt" ] && echo "可读" || echo "不可读"
- 可读 //root测试结果仍然可读
切换为普通用户,再执行相同的测试,结果变为“不可读”:
- [zengye@svr5 ~]$ [ -r "/tmp/test.txt" ] && echo "可读" || echo "不可读"
- 不可读
5)-w 判断对象是否可写
此测试同样对root用户无效,无论文件是否设置w权限,root都可写:
- [root@svr5 ~]# chmod -w /tmp/test.txt //去掉所有的w权限
- [root@svr5 ~]# ls -l /tmp/test.txt //确认设置结果
- ---------- 1 root root 33139 12-11 10:43 /tmp/test.txt
- [root@svr5 ~]# [ -w "/tmp/test.txt" ] && echo "可写" || echo "不可写"
- 可写
切换为普通用户,可以正常使用-w测试:
- [zengye@svr5 ~]$ ls -l /tmp/test.txt
- ---------- 1 root root 33139 12-11 10:52 /tmp/test.txt
- [zengye@svr5 ~]$ [ -w "/tmp/test.txt" ] && echo "可写" || echo "不可写"
- 不可写
6)-x 判断对象是否具有可执行权限
这个取决于文件本身、文件系统级的控制,root或普通用户都适用:
- [root@svr5 ~]# chmod 644 /tmp/test.txt //重设权限,无x
- [root@svr5 ~]# ls -l /tmp/test.txt //确认设置结果
- -rw-r--r-- 1 root root 33139 12-11 10:52 /tmp/test.txt
- [root@svr5 ~]# [ -x "/tmp/test.txt" ] && echo "可执行" || echo "不可执行"
- 不可执行
- [root@svr5 ~]# chmod +x /tmp/test.txt //添加x权限
- [root@svr5 ~]# [ -x "/tmp/test.txt" ] && echo "可执行" || echo "不可执行"
- 可执行
下次再分享相关shell基础的操作命令,希望能帮助大家谢谢