#########shell脚本命令####

1.diff

diff file file1 ####比较两个文件的不同

-c ####显示周围的行

-u ####按照一格式统一输出生成补丁

-r ####比较两个文件的不同

patch file file.path ####打补丁

-b ####备份原文件

mnt]# diff westos westos.new -c ###显示周围行

*** westos2016-11-22 04:04:37.782657053 -0500

--- westos.new2016-11-22 04:05:02.900657053 -0500

***************

*** 1 ****

--- 1,4 ----

+ file

westos

+ linux

+

[ mnt]# diff westos westos.new -u ###显示详细情况

--- westos2016-11-22 04:04:37.782657053 -0500

+++ westos.new2016-11-22 04:05:02.900657053 -0500

@@ -1 +1,4 @@

+file

westos

+linux

+

[ mnt]# diff -u westos westos.new > westos.path ###生成补丁

[ mnt]# ll

total 12

-rw-r--r--. 1 root root 7 Nov 22 04:04 westos

-rw-r--r--. 1 root root 19 Nov 22 04:05 westos.new

-rw-r--r--. 1 root root 135 Nov 22 04:07 westos.path

[ mnt]# yum install patch -y ###安装打补丁软件

Loaded plugins: langpacks

Package patch-2.7.1-8.el7.x86_64 already installed and latest version

Nothing to do

[ mnt]# patch westos westos.path ###打补丁

patching file westos

[ mnt]# ll

total 12

-rw-r--r--. 1 root root 18 Nov 22 04:18 westos

-rw-r--r--. 1 root root 18 Nov 22 04:15 westos.new

-rw-r--r--. 1 root root 133 Nov 22 04:16 westos.path

[ mnt]# vim westos

[ mnt]# patch -b westos westos.new

patch: **** Only garbage was found in the patch input.

[ mnt]# patch -b westos westos.path

patching file westos

[ mnt]# ll

total 16

-rw-r--r--. 1 root root 18 Nov 22 04:19 westos

-rw-r--r--. 1 root root 18 Nov 22 04:15 westos.new

-rw-r--r--. 1 root root 7 Nov 22 04:18 westos.orig

-rw-r--r--. 1 root root 133 Nov 22 04:16 westos.path

2.grep

grep 关键字符 文件|目录 ###在文件或目录中查找含有关键字的行

grep -i ####忽略大小写

-n ###显示关键字所在的行

-c ###显示过滤结果的行数

-v ###反向过滤

-E “关键字1|关键字2” ###过滤多个关键字

-r 目录 ###在目录中查找含有关键字的文件

注意:^关键字 ###以关键字开头

关键字$ ###以关键字结尾

[ mnt]# grep root passwd ###找出passwd文件中含有root的行

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

test:root:test

root:test:root

test:ROOT:root

[ mnt]# grep ^root passwd ##找出passwd文件中以root开头的行

root:x:0:0:root:1125.www.qixoo.qixoo.com/root:/bin/bash

root:test:root

[ mnt]# grep root$ passwd ##找出passwd文件中以root结尾的行

root:test:root

test:ROOT:root

[ mnt]# grep -i root passwd ##忽略大小写

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

test:root:test

root:test:root

test:ROOT:root

[ mnt]# grep -n root passwd ###找出关键字所在的行数

1:root:x:0:0:root:/root:/bin/bash

10:operator:x:11:0:operator:qkxue.net/root:/sbin/nologin

15:test:root:test

16:root:test:root

17:test:ROOT:root

[ mnt]# grep -v root$ passwd ##找出不以root结尾的行

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

test:root:test

[ mnt]# grep -i root passwd | grep -E "^root|root$" ##找出以root开头或结尾,不分大小写的行

root:x:0:0:root:/root:/bin/bash

root:test:root

test:ROOT:root

[ mnt]# grep -i root passwd | grep -E "^root|root$" -v ##找出不以root开头或结尾的行

operator:x:11:0:operator:/root:/sbin/nologin

test:root:test

[ mnt]# grep root -r /etc/ -n ###找出/etc/目录下含有root的文件并显示所在行数

/etc/pki/ca-trust/extracted/README:6:root CA certificates.

/etc/pki/ca-trust/extracted/java/README:11:root CA certificates.

Binary file /etc/pki/ca-trust/extracted/java/cacerts matches

/etc/pki/ca-trust/extracted/openssl/README:12:root CA certificates.

/etc/pki/ca-trust/extracted/pem/README:15:root CA certificates.

/etc/pki/tls/certs/make-dummy-cert:11:echo

/etc/pki/tls/openssl.cnf:332:dir= ./demoCA# TSA root directory

###grep正则表达式###

3.cut

cut ###截取字符

cut -d 分隔符 ###指定分隔符

cut -c 1-4 ###显示指定的字符

cut -f 1,5 ###显示指定的列

[ mnt]# cat passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

test:root:test

root:test:root

test:ROOT:root

[ mnt]# cut -d ":" -f 1,3 passwd ##截取第一,三列

root:0

bin:1

daemon:2

adm:3

lp:4

sync:5

shutdown:6

halt:7

mail:8

operator:11

games:12

ftp:14

nobody:99

dbus:81

test:test

root:root

test:root

[ mnt]# cut -d ":" -f 1-3 passwd ##截取1到3列

root:x:0

bin:x:1

daemon:x:2

adm:x:3

lp:x:4

sync:x:5

shutdown:x:6

halt:x:7

mail:x:8

operator:x:11

games:x:12

ftp:x:14

nobody:x:99

dbus:x:81

test:root:test

root:test:root

test:ROOT:root

[ mnt]# cut -c 2-5 passwd ##截取第2到第5个字符的列

oot:

in:x

aemo

dm:x

p:x:

ync:

hutd

alt:

ail:

pera

ames

tp:x

obod

bus:

est:

oot:

est:

[ mnt]# cut -c 2,5 passwd ##截取第2,5个字符所在的列

o:

ix

ao

dx

p:

y:

hd

a:

a:

pa

as

tx

od

b:

e:

o:

e:

例子:

用命令, 只显示出eth0的ip.

[ mnt]# ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.25.28.11 netmask 255.255.255.0 broadcast 172.25.28.255

inet6 fe80::5054:ff:fe00:1c0b prefixlen 64 scopeid 0x20<link>

ether 52:54:00:00:1c:0b txqueuelen 1000 (Ethernet)

RX packets 1899 bytes 165993 (162.1 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 1244 bytes 292701 (285.8 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[ mnt]# ifconfig eth0 | grep inet |grep inet6 -v| cut -d " " -f 10

172.25.28.11

[ mnt]# ifconfig eth0 | grep inet |grep inet6 -v| awk -F " " ‘{print $2}‘

172.25.28.11

#####sort#######

sort ####排序

-n ####纯数字排序

-u ####去冗余

-|uniq -c ####去冗余并统计冗余次数

-t ####值定分隔符

-k ####指定列

[ mnt]# cat westos

1

1

2

2

4

5

2

65

2

12

43

[ mnt]# sort westos ·###排序

1

1

12

2

2

2

2

4

43

5

65

[ mnt]# sort -n westos ###纯数字排序

1

1

2

2

2

2

4

5

12

43

65

[ mnt]# sort -nr westos ###纯数字排倒序

65

43

12

5

4

2

2

2

2

1

1

[ mnt]# sort -nru westos ###纯数字排倒序去冗余

65

43

12

5

4

2

1

[ mnt]# cat westos

0:1

3:1

2:2

5:2

2:4

7:5

a:2

e:65

v:2

4:12

2:43

[ mnt]# sort -n -t : -k 2 westos ###第二列按纯数字顺序排列

0:1

3:1

2:2

5:2

a:2

v:2

2:4

7:5

4:12

2:43

e:65

####uniq#####

sort file |uniq -c #####去冗余并统计冗余次数

-d #####显示冗余行

-u #####显示唯一行

[ mnt]# sort -n westos |uniq -c ###去冗余行并统计次数

2 1

4 2

1 4

1 5

1 12

1 43

1 65

[ mnt]# sort -n westos |uniq -u ####显示唯一行

4

5

12

43

65

[ mnt]# sort -n westos |uniq -d ####显示冗余行

1

2

####sed#####

sed ‘s/原字符/替换字符/g‘ file ####替换字符

sed -e ‘策略一‘ -e ‘策略二‘ file ####替换多种字符

sed -i file ####把转换后的内容输入到指定文件

sed ‘3,5s/原字符/替换字符/g‘ ####3-5行替换

sed xd ####屏蔽指定行

sed xp ####复制指定行

sed -n xp ####值显示指定行

[ mnt]# cat passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

[ mnt]# sed ‘s/sbin/hello/g‘ passwd ### 替换sbin为hello

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/hello/nologin

daemon:x:2:2:daemon:/hello:/hello/nologin

adm:x:3:4:adm:/var/adm:/hello/nologin

lp:x:4:7:lp:/var/spool/lpd:/hello/nologin

sync:x:5:0:sync:/hello:/bin/sync

[ mnt]# cat passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

[ mnt]# sed -e ‘s/sbin/hello/g‘ -e ‘s/nologin/westos/g‘ passwd ####替换sbin为hello,nologin为westos

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/hello/westos

daemon:x:2:2:daemon:/hello:/hello/westos

adm:x:3:4:adm:/var/adm:/hello/westos

lp:x:4:7:lp:/var/spool/lpd:/hello/westos

sync:x:5:0:sync:/hello:/bin/sync

shutdown:x:6:0:shutdown:/hello:/hello/shutdown

[ mnt]# cat passwd ####(passd文件内容并没改变)

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

[ mnt]# sed -e ‘s/sbin/hello/g‘ -e ‘s/nologin/westos/g‘ -i passwd #####替换后保存内容到passwd

[ mnt]# cat passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/hello/westos

daemon:x:2:2:daemon:/hello:/hello/westos

adm:x:3:4:adm:/var/adm:/hello/westos

lp:x:4:7:lp:/var/spool/lpd:/hello/westos

sync:x:5:0:sync:/hello:/bin/sync

shutdown:x:6:0:shutdown:/hello:/hello/shutdown

######awk#####

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析生成报告时,显得有为强大。

使用方法:awk ‘{pattern + action}‘ {filename}

[ mnt]# last -n 5

root pts/0 172.25.28.250 Wed Nov 23 05:32 still logged in

root pts/0 :0 Wed Nov 23 05:32 - 05:32 (00:00)

root :0 :0 Wed Nov 23 05:32 still logged in

(unknown :0 :0 Wed Nov 23 05:31 - 05:32 (00:00)

reboot system boot 3.10.0-123.el7.x Wed Nov 23 05:31 - 07:29 (01:57)

wtmp begins Thu Jul 10 18:18:02 2014

[ mnt]# last -n 5 | awk ‘{print $1}‘ ###值显示最近登陆的5个帐号($1表示第一个域,默认的域分隔符时空格键或tab键)

root

root

root

(unknown

reboot

[ mnt]# cat /etc/passwd | awk -F ‘:‘ ‘{print $1}‘ ###-F指定分隔符为‘:’

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

[ mnt]# cat /etc/passwd | awk -F ‘:‘ ‘{print $1 "\t" $7}‘ ###显示/etc/passwd账户及对应的shell,中间用tab键隔开

root/bin/bash

bin/sbin/nologin

daemon/sbin/nologin

adm/sbin/nologin

lp/sbin/nologin

[ mnt]# cat /etc/passwd | awk -F ‘:‘ ‘BEGIN {print "name shell"} {print $1 "," $7} END {print "blue,bin/nosh"}‘

name shell

root,/bin/bash

bin,/sbin/nologin

daemon,/sbin/nologin

adm,/sbin/nologin

. . .

student2,/bin/bash

student3,/bin/bash

blue,bin/nosh

[ ~]# awk -F: ‘/root/‘ /etc/passwd ###搜索/etc/passwd有root关键字的行

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

[ ~]# awk -F: ‘/^root/‘ /etc/passwd ###搜索开头是关键字root的行

root:x:0:0:root:/root:/bin/bash

[ ~]# awk -F: ‘/root$/‘ /etc/passwd

linux 基础 shell脚本命令的更多相关文章

  1. Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)

    I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量                env:环境变量 常用系统变量: path pwd lang home his ...

  2. Linux通过Shell脚本命令修改密码不需要交互

    交互方式修改密码 1. ssh 远程到主机: 2. 切换到root账号: [一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,然后新密码要满足复杂度才OK]: 3. pas ...

  3. Linux基础-Shell脚本

    任务一目标:自动部署.初始配置.并启动nginx反向代理服务 把任务拆分来看-自动部署部分,就是先下载安装Nginx 首先建立一个很NB霸气的目录还有一个同样NB霸气的.sh文件 /NBshell/M ...

  4. Linux执行shell脚本方式及区别&命令后台运行

    Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/

  5. (转)Linux基础------Shell数值计算的几种方法

    Linux基础------Shell数值计算的几种方法 原文:http://blog.csdn.net/fu_wayne/article/details/21620639 在Linux下总会遇到数值计 ...

  6. 常用shell脚本命令

    常用shell脚本命令 1.显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2.删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' f ...

  7. 《Linux基础知识及命令》系列分享专栏

    <Linux基础知识及命令>系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂.本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级 ...

  8. shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式

    shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式 1.sort命令 概述: Linux sort命令用于将文本文件内容加以排序. sort命令可针对文本文件的内容,以行为单 ...

  9. 使用C#给Linux写Shell脚本(下篇)

    在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...

随机推荐

  1. SQL基础之GROUPING

    1.grouping sets 记得前几天第一次接触grouping sets时,笔者的感觉是一脸懵逼. 后来一不小心看到msdn上对grouping sets的说明,顿时豁然开朗,其实groupin ...

  2. [MCSM] Slice Sampler

    1. 引言 之前介绍的MCMC算法都具有一般性和通用性(这里指Metropolis-Hasting 算法),但也存在一些特殊的依赖于仿真分布特征的MCMC方法.在介绍这一类算法(指Gibbs samp ...

  3. 深入理解OOP(二):多态和继承(继承)

    本文是深入浅出OOP第二篇,主要说说继承的话题. 深入理解OOP(一):多态和继承(初期绑定和编译时多态) 深入理解OOP(二):多态和继承(继承) 深入理解OOP(三):多态和继承(动态绑定和运行时 ...

  4. list转datatable

    /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...

  5. Entity Framework 出现 "此 ObjectContext 实例已释放,不可再用于需要连接的操作" 的错误

    原因 Entity的导航属性在View中使用,但是该Entity所在的Context已经在Controller中通过 using 释放掉:但是Entity又具有Deferred Query Evalu ...

  6. getContentResolver()内容解析者查询联系人、插入联系人

    首先,我们需要知道的两个Uri: 1.Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");//查到 ...

  7. C#中快速释放内存,任务管理器可查证

    先close() 再dispose() 之后=null 最后GC.Collect() 如: ms.Close();//关闭流,并释放与之相关的资源 ms.Dispose();//如果是流的话,默认只会 ...

  8. mvc4 ajax.beginform表单验证

    @{ Layout = null; } @model MvcApplication1.Models.User @using (Ajax.BeginForm("create", &q ...

  9. 使用Retrofit和Okhttp实现网络缓存。无网读缓存,有网根据过期时间重新请求 (转)

    使用Retrofit和Okhttp实现网络缓存,更新于2016.02.02原文链接:http://www.jianshu.com/p/9c3b4ea108a7 本文使用 Retrofit2.0.0-b ...

  10. [转]easyui 全部图标

    原文地址:http://blog.163.com/shexinyang@126/blog/static/136739312201491011492263/ 拿jquery-easyui-1.2.6举例 ...