bash 脚本笔记
来源:互联网 发布:若风淘宝店服装店网址 编辑:程序博客网 时间:2024/04/28 21:39
1. sh 参数
$*
输入了什么参数
$#
输入了多少个参数
$1
输入的第一个参数,依此类推,直到 $9
$?
上一次的执行结果
$*
为”1 2 3”(一起被引号包住)
$@
为”1” “2” “3”(分别被包住)
$#
为3(参数数量)
2. 文件测试
- [ -d target ] target 是否是 目录
- [ -f target ] 是否是文件
- [ -e target ] 是否存在(目录和文件都适用)
- [ -x target ] 可执行文件
- [ -n “target” ] 是否为null,用双引号把变量名括
3. 数值型比较
//变量赋值时,”=” 左右两边不能有空格 age=30 if [ $ -ge 20] then echo“age is bigger than 20” else echo“age is less than 20” fi // ---others----- –eq(equals) –ne(not equal) -gt( greater than) -lt(lessthan) -ge(greater or equal than) -le(less than or equal )
eg:
bootpercent= df –hT | grep “sda1” | awk “{print $6}” | cut –d "%" –f1 if [$bootpercent –ge 80 ];then echo "percent is bigger than 80,warning!!!" else echo "percent is less than 80" fi
4. 字符串比较
```bash# "=" 需要空格[ str1= str2 ] # str 是否为空[ -z str ]```
5. 逻辑条件测试
&& ||
if
If [ $age–ge 30 ];then echo "great than 30" elif [ $age –ge 40 ];then echo “great then 40” else echo “50” fi
case
#`` 里面是命令:今天周几 week= `date +%w` case$week in : start): echo“start” ;; stop): echo“stop” ;; *): Echo “other” ;; esac
6. 循环条件测试
while
num=3while [ $num –ge 0 ]do echo$num num=$(($num-1)) # ‘=’左边的num不需要$ ?done echo$num
for
for i in ` cat /var/user.txt`do echo$i echo123 | passwd –stdin $idone
7. shift:传入的参数左移
num=0while [ $# -gt 0 ]do num=$((num+ $1)) shiftdone echo $num
8. find
find/etc/ -perm 755 –type f# 跟find /etc –perm 755 | find –type f 不是一样,切记find /etc –user rootfind /etc –iname 'user*' | xargs rm –f
9. awk
# $0->整行,$1->第一列# NR(Number Row):行号# NF(Number Field):列号cat/etc/passwd | awk –F ":" '{if(NR==3)print $1,$4}' ->打印第三行的第一个和第四个字段cat/etc/passwd | awk –F 'END{print NR}' ->总共多少行cat/etc/passwd | awk –F ‘END{print NF}’ ->总共多少列cat/etc/passwd | awk –F “:” ‘{if(){print $1”\t”$4}}’cat/etc/passwd | awk ‘$1 ~/192.168.10.1/ {print $0 } ’ -> ~ 匹配,!~ 不匹配
10.sed
# p -> print, d-> deletecat/etc/passwd | sed –n '5'p –> 打印第五行cat/etc/passwd | sed '3,6'd -> 打印删除3-6行之后的内容cat/etc/passwd | sed '/bash/' p -> 打印匹配bash 的行cat/etc/passwd | sed –n '1,/sync/'p -> 打印第一行到匹配sync的行cat/etc/passwd | sed –n '/root/,$'p -> 打印从匹配root 到结尾的所有行cat/etc/passwd | sed –n '3'p | awk –F ":" '{print $4}' –> 39%cat/etc/passwd | sed –n '3'p | awk –F ":" '{print int($4)}' –> 39
11. uniq 与 sort
uniq–c #统计连续的次数catfile | sort –t: -k1 –r # 以:为分隔符,取第一列,倒序排列
12. linux 启动流程
一:初始化阶段
- Grub 引导界面
- 识别硬件
- 初始化驱动
二:加载/etc/rc.d/rc.sysinit 系统初始化
- 进入欢迎界面
- 设置时钟
- 设置主机名
- 挂载文件系统
- 挂载光驱
- 进入3级别
- 启动虚拟内存
- 设置磁盘阵列
三:加载 /etc/rc.d/rc 进程管理脚本
- 设置防火墙
- 检测硬件变化
- 启动网络服务
- 启动3级别中允许启动的进程(/etc/rc.d/rc3.d中以S开头的服务名,S99以后就是登陆界面了)
- 进入登陆界面
13. 运行级别:(默认是3)
0
: halt
1
: singlemode user
2
: multiuser without NFS
3
: full multiuser
4
: unused
5
: X11 ( 3 with 图形界面)
6
: reboot (所以,重启的话reboot,还可以 init 6)
查看运行级别 runlevel
14. 如何设置服务脚本在某个级别下开启或者关闭(以sshd为例)
- 查看sshd 服务在所有级别下的开关状态
chkconfig –list sshd - sshd 在 3 级别下开启/关闭
chkconfig –level 3 sshd on/off 将自己的服务脚本改造成标准的rpm脚本
cp sshd /etc/init.d
在 xxx 中添加:#chkconfig:2345 90 20
(90为开机的顺序,20为关机的顺序,数值越大,优先级越高,自定义的脚本开机应较晚5,关机较早)#descrption: xxx server daemon
通过service 把自定义脚本进行开启和关闭
service xxx start|stop|restart- 通过chkconfig把自定义脚本设置为开机启动
chkconfig xxx on/off
15. 原格式输出字符以及调用其他脚本
menu.sh
# Cat 的 heredoc使用方法# cat << eof aaaaaaaaaaaaaa bbbbbbbbbbbbb cccccccccccccccc eof
# 引用 menu.sh. menu.sh
16. 设置颜色
# \033[ 设置颜色的标志,30 前底色,47 背景色,0m 还原echo –e "\033[30;47m $str \033[0m"
0 0
- bash 脚本学习笔记
- bash 脚本笔记
- bash脚本笔记随记
- 高级Bash脚本编程指南学习笔记
- <<高级Bash脚本编程>> 学习笔记
- 安卓学习笔记--bash脚本
- 安卓学习笔记--bash脚本
- linux笔记-bash脚本编程(上)
- linux笔记-bash脚本编程(中)
- Bash脚本笔记一:清除log文件
- bash 脚本
- bash脚本
- bash脚本
- bash脚本
- bash脚本
- bash脚本
- BASH脚本
- bash脚本
- 很好的一篇设置Eclipse的文章
- oepnwrt中文开发手册
- 64位linux系统下编译int32_t
- GDSOI2008鱼肉炸弹
- 【原创分享】动态新增行和删除行
- bash 脚本笔记
- 慕课网视频下载方法
- Spring任务调度实战之Timer
- mysql 中key 指的是索引
- 我哥说的是对的
- Java计算工作小时数的方法(修正版)
- Java 分支结构
- 算法研究之快速排序java版
- c语言字符串分割函数(strtok())