今天领头羊发了邮件过来,要学习下分析网络包的过程,里面有个.sh文件,不是很懂,今天开始了解下。
一些特殊符号
'string' 单引号,用于保持引号内所有字符的字面值,即引号里面是什么就是什么,例如 echo '\\' 输出\\
\"string\" 表示双引号"",若引号中有特殊字符的话可能就当作特殊字符处理了,不再是原来的字面值,例如 echo "\\" 输出\
`command` 倒引号,单引号括住的是单一字串,倒引号括住的是一系列命令,如fdv=`date+5F` echo \"Todat $fdv\" 在倒引号4内的data+%F会被视为指令,执行的结果会带入fdv变量中去
\<,\> 用于正则表达式中,表示单词边界,例如在testicle文件中查找the这个单词,使用grep '\<the\>' testfile,这样就会避免找到例如there这样有the前缀的单词
** 幂运算,2**3表示2的3次方
* 匹配0个或多个任意字符,包括null
? 匹配一个任意字符,不包括null
[若干字符] 匹配方括号中的任意一个字符
| 管道,连接上一个指令的输出,作为下一个指令的输入
: 在bash中这是一个内建指令,意思是什么事都不干,但返回状态值0
; 担任连续指令的功能,例如 cd ~/backup;mkdir startup;cp ~/.* startup/.
;; 专用在case的选项中
# 1、在行头表示注释符;2、在命令行中,或者如"#"、\#等,就变成一般符号
/ 1、代表路径;2、代表除法运算
\\ 1、放在指令前,有取消aliases的作用;2、放在特殊符号前,则该特殊符号的作用消失;3、放在指令最末端,表示指令连接下一行
^ 代表行的开头位置,在[]中也代表“非”
\ 转义字符
\' 单引号
\" 双引号
\\ 反斜杠
\0 空
\a 警告
\b 退格
\f 换页
\n 换行
\r 加车
\t 水平制表符
\v 垂直制表符
$vat/${var} 变量取代
$() 算数代换
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项可超过9个
$# 这个程式的参数个数, 比方说 a.sh aaa mmm nnn , 则在a.sh里,$#为3,$1则为第一个参数值
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用
:- 缺省值
:= 指定缺省值
:? 变量是否存在检查
:+ 覆盖缺省值
:n 替换部分字符串
输入输出重导向
cmd>file 把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件,使用bash的noclobber选项可以防止复盖原有文件。
cmd>>file 把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面。
cmd<file 使用cmd命令从file读入
cmd<<test 从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用<<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容。
参考:https://blog.csdn.net/waqwn/article/details/52061128
另外摄入输出重定向的详细内容可参考:
https://www.cnblogs.com/st-jun/p/7772678.html
https://www.cnblogs.com/zhangjiansheng/p/6528246.html