find命令
find命令可以用来遍历文件目录
基本形式 find pathname -option [-print -exec]
pathname:要查找的文件目录,.代表当前目录
查找完成后可以执行的action:
- -print打印到标准输出
- -exec:对有匹配的文件执行指定的参数命令,{}来代表查到的当前的文件名,一般格式为
- -exec commod {} \;最后要加分号 option主要有:
- -name按文件名查找
- -user按属主查找
- -group按文件组查找
- -type 按文件类型查找
grep命令可以按行查找文件并匹配,其命令格式为 grep [option] patterns [files]
option常用:
-i 忽略大小写
-l 只显示文件名
组合起来就可以实现在一个目录下搜索含有某个特定字符串的文件
find .|grep -rl “pattern”
文本操作1
- 分隔一个字符串用cut命令:
cut -d 分隔符 -f 选取的编号
如cut -d . -f 1 filename ,.要转义,意思是以点为分隔符并取第一个显示 - grep -rE pattern file
当pattern需要指定多个条件时需要指定E选项,pattern可以使用正则表达式,其中.代表任意一个字符,代表前面的任意重复,.才代表任意字符,?代表前面的0或一个重复。()需要转义,<>不需要 - find 可以指定-maxdepth来指定遍历的深度,0代表只遍历当前目录,-type可以指定遍历的类型
例如find pattern -maxdepth 0 -type d则查找当前目录下的符合pattern的子目录 - sed命令过滤出文本的某一行
sed -n “2p” 过滤出文件的第二行,可使用管道做进一步处理 - tee -a file 可以添加到文件内容并打印到控制台
- scp username@ip:filepath loalpath(必须已存在,指定目录会默认原来的名字,也可以指定文件名)
一个用expect自动输入scp的例子1234567expect -c "spawn scp tong@192.168.70.193:$sapkpath sapkdir/expect {\"*assword\" { send \"passw0rd\r\"; }\"yes/no\" { send \"yes\r\" }}expect eof"
关于expect命令的使用小结
shell脚本中的expect命令可谓是自动化作业的利器,最近深入学习了一下,在使用的过程中遇到一些问题,在解决问题的基础上阐述expect的使用。
一般在脚本中使用expect -c “cmd”来使用expect来完成交互,这里在使用的过程中遇到了一个非常常见但很难想明白的问题,比如包括cmd的是单引号还是双引号,以前写过单引号和双引号的区别,单引号表示纯文本,而双引号中有些特殊的符号如:$ `` \代表特殊的含义,也就是说在双引号中$引用脚本外的变量,``执行命令,而且双引号在双引号中要转义。说和expect -c的联系,当expect -c ‘cmd’时推荐使用单引号(除非你想用到外面的变量),因为如果使用了双引号,$引用的全部是外面的变量,不会用到里面的,比如
上面的语法是一种叫tcl的语法
下面介绍一下:
变量赋值: set variable value
if语句:
if { condition } { #必须放在这个后面,不然报错 注意空格
}
for { init} {conditon } {incre } {
dosomething
}
while {conditon}{
dosomething
}
[ expr $var+1]基本计算
sed命令总结
sed命令作为一个流式编辑器,处理文本是把好手。下面是个人总结
基本命令格式 sed option(-f,-n) script file
- 选项:
-f代表后面跟script文件,所有的命令都放在script文件中,每一行代表一个命令,多行命名时可以 写成一个脚本文件
另多行命令可以通过分号隔开
-n代表不立即打印,而通过p命令打印 - script:脚本命令是sed命令的关键可以总结为两个个部分:定址(行址)+命令
定址有两种方法:行寻址和模式寻址,
1.行寻址,指定单行或范围,范围用逗号相隔如第二行到最后行:2,$
2.模式寻址:匹配寻址,可以用正则表达式,其中.代表任意字符,代表前面的重复0或多次,?代表重复0或一次,.代表匹配任意字符,使用方法/pattern/,例如:/dog.*/
注意这个定址是定行址,作用于同一行的组合命令用{}包裹,如2,${cmd1;cmd2} - 命令:
1.替换:
s/pattern/replacement/flag,
flag:数字,g,p,w.
数字代表列址,默认为1,g为全局替换,p打印,w file写入文件
pattern可以用正则表达式,默认替换每一行的第一个,指定替换行的第几个用flag指定
2.删除命令d
3.插入命令:在前插入i\content,在后附加a\content
4.修改命令:c\content
其他命令:
p打印,=打印行号
n当前匹配的下一行,N将下一行读入模式空间处理,将两行看成一行
文本操作2
- grep:
文本过滤工具,可以用正则表达式搜索匹配的内容,注意?+{ | ()需要转义,其他不需要
基本格式grep option pattern file
常用option:
n打印行号,E扩展表达式,可以多个匹配规则,r递归搜索文件(常用于文件搜索) - sed:多功能文本编辑,见上文
- cut:文件单行切边功能
cut -d delimiter -f field
field举例:cut -d “ “ -f 2以空格分隔的第二个
cut -d “ “ -f 2,5以空格分隔的第二个和第五个的组合
cut -d “ “ -f 2-5以空格分隔的从第二个到第五个
cut -d “ “ -f 2- 以空格分隔的第二个到最后 - wc:可以查看文件的相关信息,行数,单词数,字符数
内存管理相关命令
uptime命令查看系统运行情况
df查看磁盘使用情况
free查看内存使用情况
ps查看进程情况