liunx笔记汇总

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

  1. 分隔一个字符串用cut命令:
    cut -d 分隔符 -f 选取的编号
    如cut -d . -f 1 filename ,.要转义,意思是以点为分隔符并取第一个显示
  2. grep -rE pattern file
    当pattern需要指定多个条件时需要指定E选项,pattern可以使用正则表达式,其中.代表任意一个字符,代表前面的任意重复,.才代表任意字符,?代表前面的0或一个重复。()需要转义,<>不需要
  3. find 可以指定-maxdepth来指定遍历的深度,0代表只遍历当前目录,-type可以指定遍历的类型
    例如find pattern -maxdepth 0 -type d则查找当前目录下的符合pattern的子目录
  4. sed命令过滤出文本的某一行
    sed -n “2p” 过滤出文件的第二行,可使用管道做进一步处理
  5. tee -a file 可以添加到文件内容并打印到控制台
  6. scp username@ip:filepath loalpath(必须已存在,指定目录会默认原来的名字,也可以指定文件名)
    一个用expect自动输入scp的例子
    1
    2
    3
    4
    5
    6
    7
    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’时推荐使用单引号(除非你想用到外面的变量),因为如果使用了双引号,$引用的全部是外面的变量,不会用到里面的,比如

1
2
3
4
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查看进程情况

坚持原创技术分享,您的支持将鼓励我继续创作!