您的位置:首页 > 运维架构 > Shell

liunx笔记汇总

2017-08-28 20:20 169 查看

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的例子

expect -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’时推荐使用单引号(除非你想用到外面的变量),因为如果使用了双引号,$引用的全部是外面的变量,不会用到里面的,比如

expect -c "
set i 1        //将不会打印出1,即便外面没有i的定义,而如果使用了单引号则不会出现这种问题
puts $i
"


上面的语法是一种叫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

1. 选项:

-f代表后面跟script文件,所有的命令都放在script文件中,每一行代表一个命令,多行命名时可以 写成一个脚本文件

另多行命令可以通过分号隔开

-n代表不立即打印,而通过p命令打印

2. script:脚本命令是sed命令的关键可以总结为两个个部分:定址(行址)+命令

定址有两种方法:行寻址和模式寻址,

1.行寻址,指定单行或范围,范围用逗号相隔如第二行到最后行:2,$

2.模式寻址:匹配寻址,可以用正则表达式,其中.代表任意字符,代表前面的重复0或多次,?代表重复0或一次,.代表匹配任意字符,使用方法/pattern/,例如:/dog.*/

注意这个定址是定行址,作用于同一行的组合命令用{}包裹,如2,${cmd1;cmd2}

3. 命令:

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查看进程情况
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell