Linux 系统中存在的常用特殊变量如: $$ $# $* $@ $? $n($0,$1,$2,$3......)
一、$$ 表示当前运行的进程号 pid。
二、$# 表示脚本传入的参数总个数。
三、 $* 和$@都表示所有参数集合,区别在于当$*和$@被引号单独引起来时,$@仍然表示参数集合,$*则变成所有参数拼接成的字符串以空格分开。
四、$? 表示当前脚本执行到变量处时的返回值,0 表示正常,其他表示异常
五、$n 表示传入的参数,$0 表示脚本名称,$1表示第一个参数,$2表示第二个参数以此类推。
--综合实验脚本 vim test.sh
#!/bin/bash #__author__: cpy echo "该脚本名称为:$0" echo "当前脚本运行的PID为:$$" echo "当前脚本共传入: $# 个参数" echo "当前脚本传入参数的列表以@表示为: $@" echo "当前脚本传入参数的列表以*表示为: $*" echo "当前脚本传入参数遍历结果以@表示如下:" for a in $@ do echo $a done echo "当前脚本传入参数遍历结果以*表示如下:" for b in $* do echo $b done echo "当前脚本传入参数遍历结果以@表示并用引号单独引起时如下:" for i in "$@" do echo $i done echo "当前脚本传入参数遍历结果以*表示并用引号单独引起时如下:" for x in "$*" do echo $x done echo "脚本传入第一个参数为$1,第二个参数为$2,第三个参数为:$3" echo "一切正常时返回值为: $?" ps -ef |grep "不存在的进程" |grep -v "grep" echo "找不到指定进程时,返回值为:$?"
--传入参数执行脚本 sh test.sh 123 456 789
-- 执行结果如下:
grep:文本搜索匹配
语法: grep -[option] "paratemer" files -c :count 统计条目数,以行为单位 -n :number 输出及行号及匹配内容 -v :反向匹配,除此之外 -i: 不区分大小写匹配 -l: 列出包含文本的文件
sed:文本搜索匹配修改
p:打印,一般配合 -n使用 示例:sed -n ‘/str/p’ file : 输出匹配行,不加-n 则匹配字段打印两遍 d:删除 示例:sed ‘/str/d’ file : 打印file中删除包含str的行后的内容 sed ‘^d’ file :打印删除首行的内容 sed ‘$d’ file:打印删除尾行的内容 sed ‘nd’ file : 打印删除第n行后的内容 sed ‘n,md’ file : 打印删除第n行到第m行后的内容 s:替换 示例:sed ‘s/str1/str2/g’ file :打印出把str1 替换成str2 的结果,”/” 可以是任意特殊不冲突字符。 例如:sed ‘s%str1%str2%g’ file或 sed ‘s/str1/&str2/’ file:打印出把匹配的str1的内容后面添加str2的结果 -e: 叠加编辑,多重编辑 示例:sed -e ‘1,5d’ -e ‘s/str1/str2/g’ file : 打印出 将file文件1至5行删除后剩余内容str1 替换成str2 的内容 -i:不打印修改文件 上面的内容除p外全部适用,在之前加入-i 后直接将文件本身进修改,且不打印。
awk:awk可作为一门专门处理文本内容的脚本,功能强大,效率极高
NR: 当前记录数,可以看做一个自增的ID NF:该记录字段总数 $0: 当前记录 $1:第一个字段,以此类推 -F:指定分隔符 printf: 格式化打印 BEGIN{xxx} END{yyy}:循环执行xxx 语句后,输出yyy 完整示例: awk '{if ($1 ~/^Jan/) {print $0}}' /var/log/messages|awk -F ':' '{print $2}' |awk '{print NR,NF,$1,$NF}' |awk 'BEGIN {sum=0} \ {sum+=$1}END {printf "第一个字段值相加的结果为:%d\n",sum}'
-- ESC 代表"未编辑状态"
-- : 代表 "设置状态"
增:
i:未编辑状态下,在光标前插入 a:未编辑状态下,在光标后插入 ^:未编辑状态下,光标移动到行首 $:未编辑状态下,光标移动到行尾
删:
dd:未编辑状态下,删除光标所在行 n,md:设置状态下,删除n到m行
改:
yy:未编辑模式下,复制光标所在行 pp: 未编辑模式下,粘贴到光标所在行下一行 n,m copy z: 冒号开始设置模式下,拷贝n-m行至z行 %s/str1/str2/g : 将str1 替换成str2 g是全文替换,不加g则替则逐个替换 “/” 可以换成任何不与系统冲突的特殊符号 #: 行首加#号表示注释该行 :<<! Str !:多行注释
查:
set number: 设置模式下,显示行号 /str: 设置模式下,高亮显示str,支持正则表达式 number:设置模式下,自动寻找到number行
存:
X: 保存退出,修改则重新编译,修改文件时间。不修改则不变 w:保存 q:退出