linux 基础 shell脚本命令
#########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
[ 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脚本命令的更多相关文章
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
- Linux通过Shell脚本命令修改密码不需要交互
交互方式修改密码 1. ssh 远程到主机: 2. 切换到root账号: [一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,然后新密码要满足复杂度才OK]: 3. pas ...
- Linux基础-Shell脚本
任务一目标:自动部署.初始配置.并启动nginx反向代理服务 把任务拆分来看-自动部署部分,就是先下载安装Nginx 首先建立一个很NB霸气的目录还有一个同样NB霸气的.sh文件 /NBshell/M ...
- Linux执行shell脚本方式及区别&命令后台运行
Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/
- (转)Linux基础------Shell数值计算的几种方法
Linux基础------Shell数值计算的几种方法 原文:http://blog.csdn.net/fu_wayne/article/details/21620639 在Linux下总会遇到数值计 ...
- 常用shell脚本命令
常用shell脚本命令 1.显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2.删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' f ...
- 《Linux基础知识及命令》系列分享专栏
<Linux基础知识及命令>系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂.本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级 ...
- shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式
shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式 1.sort命令 概述: Linux sort命令用于将文本文件内容加以排序. sort命令可针对文本文件的内容,以行为单 ...
- 使用C#给Linux写Shell脚本(下篇)
在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...
随机推荐
- 【分布式协调器】Paxos的工程实现-Cocklebur状态转移
集群中的主机经过选举过程由Looking状态变为了Leadering或Following状态.而这些状态之间转移的条件是什么呢?先来个直观的,上状态图. 图 4.1 Cocklebur选举过程中的状态 ...
- JVM内存管理------GC算法精解(复制算法与标记/整理算法)
本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...
- javascript面试题(一)
答案和解析在问题下一行,为白色字体 单选题 1.以下哪条语句会产生运行错误:(a) A.var obj = ();//语法错误 B.var obj = [];//创建数组 C.var obj = {} ...
- MVC 中的 ispostback
总之呢就是在MVC中试下 ispostback那种效果, 环境就是:登录验证loinger, if (Request.HttpMethod == "POST"){} 没理解透彻 源 ...
- [jQuery EasyUI系列] 创建增删改查应用
一.数据收集并妥善管理数据是网络应用共同的必要.CRUD允许我们生产页面列表并编辑数据库记录. 本文主要演示如何使用jQuery EasyUI实现CRUD DataGrid. 将使用到的插件有: da ...
- Easyui表单,文本框,下拉菜单三级联动练习代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 【转】如何建立一个样式新颖的CSS3搜索框
在线演示 搜索框大概是web开发中最常用的UI元素之一,我想基本没有必要去介绍如何使用它.无论是网站还是web应用,都会为了增强用户体验而添加它,那么你是不是也想过设计一个别致的搜索框? 在今天的文章 ...
- iOS开发遇到的错误 -- Label显示多行文字导致宽度和高度的问题
Label的宽度问题 注意:UILabel下面需要设置preferredMaxLayoutWidth ,设置了autolayout和numberofline的UIlabel才显示多行 label宽度的 ...
- 【UOJ #17】【NOIP 2014】飞扬的小鸟
http://uoj.ac/problem/17 dp,注意细节. #include<cstdio> #include<cstring> #include<algorit ...
- SSD固态硬盘的闪存芯片颗粒介绍
固态硬盘凭借其存取速率超快等自身优势,被越来越多的电脑爱好者所青睐,并迅速普及到了广大用户的电脑中,因为固态硬盘与传统机械硬盘相比,确实在运行效率等方面有了质的提升,这里先了解一些评判固态硬盘优劣的知 ...