文章目录
[隐藏]

一、vi命令

1、快速删除

清空当前编辑文件

在命令模式下,首先执行 gg
这里是跳至文件首行
再执行 dG
这样就清空了整个文件!

删除光标至行尾的内容 d$

2、多行编辑

在命令模式下,按Ctrl+v进入Visual-Block 模式,移动光标选择多行,如果删除按d即可删除多行,如果在行首插入,按Shift+i即可在多行插入,注释代码或取消注释非常有用。

二、文本处理

1、grep

利用grep提取进程号并杀死该进程

ps aux|grep tomcat |grep -v grep|awk ‘{print $2}’|xargs kill -9
注意:grep -v grep去掉结果中grep的进程结果
查看配置文件中配置项,去掉#注释及空格
sed ‘/ *#/d; /^ *$/d’ /etc/ceilometer/ceilometer.conf

2、egrep

查看配置文件中配置项,去掉#注释及空格

egrep -v ‘^#|^$’ /etc/nova/nova.conf

3、sed

替换文件中内容项
sed -i -e ‘s#ONBOOT=no#ONBOOT=yes#g’ /etc/sysconfig/network-scripts/ifcfg-eth0
如果用变量表示替换内容,需注意,sed命令使用单引号的情况下,使用'”$var”‘引用、sed命令使用双引号的情况下,使用$var直接引用
item1=”ONBOOT=no”
item2=”ONBOOT=no”
单引号:sed -i -e ‘s#'”${item1}”‘#'”${item2}”‘#g’ /etc/sysconfig/network-scripts/ifcfg-eth0
双引号:sed -i -e ‘s#${item1}#${item2}#g’ /etc/sysconfig/network-scripts/ifcfg-eth0

4、cut

cut用于字符串截取 cut -d “.” -f1-3
-f 点分截取,前3个段
# echo “192.168.200.1”|cut -d “.” -f1-3
192.168.200

-d \| 指定分割符|
# echo “hello|world”|cut -d \| -f2
world
-b、-c、-f分别表示字节、字符、字段

5、find

找到包含特定内容的文件
在某个路径下查找所有包含“hello abcserver”字符串的文件。
find /etc -name “*” | xargs grep “hello abcserver”

find .|xargs grep x
删除指定日期之前的文件
find /tmp -ctime +60 -type f -delete
#find /tmp -mtime +30 -type f -name *.sh[ab] -exec rm -f {} \;
假如在一个目录中保留最近30天的文件,30天前的文件自动删除
#find /tmp -mtime +30 -type f -name *.sh[ab] -exec rm -f {} \;
/tmp  –设置查找的目录;
-mtime +30 –设置时间为30天前;
-type f –设置查找的类型为文件;
-name *.sh[ab] –设置文件名称中包含sha或者shb;
-exec rm -f –查找完毕后执行删除操作;
提示:将此命令写入crontab后即可自动完成查找并删除的工作

6、awk

文本处理
分隔符默认空格
echo”hello world”| awk ‘{print $1}’
hello
指定分隔符
echo “hello-world”| awk -F “-” ‘{print $1}’
hello

7、tee

既能把输出保存到文件中,又能在终端上看到输出内容,使用tee命令,下例将hosts文件保存到new-file中

三、正则表达式d

1、锚字符 ^ $

用来将模式锁定在数据流中的行首或行尾

行首匹配^

脱字符放到模式开头之外的其他位置,那么它就跟普通字符一样,不再是特殊字符

行尾匹配

组合匹配去除空白行

2、点号字符

点号用来匹配除换行符之外的任意单个字符。它必须匹配一个字符,如果在点号字符的位置没有字符,那么模式就不成立。

第五行因为.号位置没有字符,所有未能匹配。

实例一、修改配置文件

修改网卡的IP配置

 

四、Shell脚本相关

1、参数传递

$0为执行文件名,适用于./脚本、绝对路径脚本、bash 脚本等三种方式执行,. 脚本、source 脚本命令执行,输出“-bash”

$# 为传递给脚本的参数个数

$* 以“$1 $2 …. $n”输出所有参数

$@ 以“$1″ “$2” …. “$n”输出所有参数,在不使用””的情况下, 与$*是完全相同的,$@ 是分开的字串, $* 是一个字串,细致区别参考

$$ 脚本运行的当前进程号

$! Shell最后运行的后台Process的PID

$? 显示脚本最后的退出状态,0表示无错误,其他值表示不同的错误标记,一些退出码(exit status,或exit code)的约定:

2、执行方式

“bash 脚本”  “./脚本” “绝对路径的方式”执行等三种方法执行shell脚本,现行的shell会开启一个子shell环境,去执行shell脚本,后两种必须要有执行权限才能够执行,
“. 脚本” “ source 脚本”这两种方式让shell脚本在现行的shell中执行,不会创建子进程,而是在父进程中直接执行。例如下面例子,test.sh脚本中只有exit命令,. test.sh脚本执行时会直接退出终端。

3、重定向输出

参考:http://viplin.blog.51cto.com/241472/99568

30 19 * * * /usr/bin/**dcon.sh > /dev/null 2>&1

这里的/dev/null 2>&1 代表将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃,

command > file 2>file 与command > file 2>&1区别:

  • 首先~command > file 2>file 是将命令所产生的标准输出信息和错误的输出信息送到file 中.command > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道;
  • 而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容;
  • 从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法。

五、文件压缩与解压

参考:http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html

1、.tar

解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)

2、.gz

解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
gzip 命令
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
语法:gzip [选项] 压缩(解压缩)的文件名该命令的各选项含义如下:
-c 将输出写到标准输出上,并保留原有文件。-d 将压缩文件解压。-l 对每个压缩文件,显示下列字段: 压缩文件的大小;未压缩文件的大小;压缩比;未压缩文件的名字-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。-t 测试,检查压缩文件是否完整。-v 对每一个压缩和解压的文件,显示文件名和压缩比。-num 用指定的数字 num 调整压缩的速度,-1 或 –fast 表示最快压缩方法(低压缩比),-9 或–best表示最慢压缩方法(高压缩比)。系统缺省值为 6。指令实例:
gzip *% 把当前目录下的每个文件压缩成 .gz 文件。gzip -dv *% 把当前目录下每个压缩的文件解压,并列出详细的信息。gzip -l *% 详细显示例1中每个压缩的文件的信息,并不解压。gzip usr.tar% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。

3、.tar.gz 和 .tgz

解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName

4、.bz2

解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName

5、.tar.bz2

解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName

6、.bz

解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知

7、.tar.bz

解压:tar jxvf FileName.tar.bz
压缩:未知

8、.Z

解压:uncompress FileName.Z
压缩:compress FileName

9、.tar.Z

解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName

10、.zip

解压:unzip FileName.zip
压缩:zip FileName.zip DirName

11、.rar

解压:rar x FileName.rar
压缩:rar a FileName.rar DirName

12、.lha

解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName

13、.rpm

解包:rpm2cpio FileName.rpm | cpio -div

14、.deb

解包:ar p FileName.deb data.tar.gz | tar zxf –

15、sEx

.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!