Linux 常用命令(三)

作者:小徐

制作时间:20180601

联系方式:xiaoxubigdata@163.com

10 网络管理工具

10.1 curl 命令

10.1.1 命令详解

curl 命令支持在线下载功能,使用方便,它支持,S,等协议,还支持PUT,POST,COOKIES,认证授权等操作。

10.1.2 参数说明

详细的参数请使用curl --help查看,下面简单的介绍常用的参数

-a : 上传文件时附加目标文件

-A: 设置用户的代理发送给服务器

-b: cookie 字符串或文件读取位置

-C :断电续传操作

-d :使用的post方式上传数据

-e:查看来源的网站

-f:连接失败时不显示链接的错误信息

10.1.3 常用命令

10.1.3.1 读取并保存网页

以下是下载网页

# curl

<! DOCTYPE html>

<!-- STATUS ok --><html><head>

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

</body></html>

以下是保存网页

# curl >> baidu.tet

10.1.3.2 下载文件

执行以下的操作可以在改文件夹下看到有1.jpg文件,如果去掉-o的话就会保存与服务器上一样的文件

# curl -o 1.jpd s://img-blog.csdn.net/20180427105113813?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hmZzAyMTg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 43669 100 43669 0 0 24220 0 0:00:01 0:00:01 --:--:-- 24206

10.1.3.3 批量下载文件

以下的下载文件从001--201的文件

$ curl -O

[1/201]: ://cgi2.tky.3web.ne.jp/~zzh/001.JPG --> 001.JPG

--_curl_--://cgi2.tky.3web.ne.jp/~zzh/001.JPG

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 288 0 288 0 0 50 0 --:--:-- 0:00:05 --:--:-- 69

[2/201]: ://cgi2.tky.3web.ne.jp/~zzh/002.JPG --> 002.JPG

--_curl_--://cgi2.tky.3web.ne.jp/~zzh/002.JPG

100 288 0 288 0 0 4000 0 --:--:-- --:--:-- --:--:-- 4000

[3/201]: ://cgi2.tky.3web.ne.jp/~zzh/003.JPG --> 003.JPG

--_curl_--://cgi2.tky.3web.ne.jp/~zzh/003.JPG

100 288 0 288 0 0 4235 0 --:--:-- --:--:-- --:--:-- 4235

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

10.1.3.4 浏览上的文件

格式为: curl -u name:passwd

# curl -u 1.linuxidc.com:www.linuxidc.com

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 1111 0 1111 0 0 987 0 --:--:-- 0:00:01 --:--:-- 1015drw-rw-rw- 1 user group 0 Jan 1 17:44 .

drw-rw-rw- 1 user group 0 Jan 1 17:44 ..

drw-rw-rw- 1 user group 0 Feb 1 2014 2007 LinuxIDC.com

drw-rw-rw- 1 user group 0 Feb 1 2014 2008 LinuxIDC.com

drw-rw-rw- 1 user group 0 Feb 1 2014 2009 LinuxIDC.com

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

或使用 curl 的格式

$ curl ://1.linuxidc.com:www.linuxidc.com@1.linuxidc.com

% Total % Received % Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed

100 1111 0 1111 0 0 1580 0 --:--:-- --:--:-- --:--:-- 1580drw-rw-rw- 1 user group 0 Jan 1 17:44 .

drw-rw-rw- 1 user group 0 Jan 1 17:44 ..

drw-rw-rw- 1 user group 0 Feb 1 2014 2007 LinuxIDC.com

drw-rw-rw- 1 user group 0 Feb 1 2014 2008 LinuxIDC.com

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

10.1.3.5 上传文件

上传的选项是-T

上传的格式为$ curl -T local_file_path -u name:passwd

# curl -T /home/xiaoxu -u 1.linuxidc.com:www.linuxidc.com ://1.linuxidc.com/tmp

10.1.3.6 上传

上传的命令选项是-T,格式是curl -T localfile address

# curl -T local_file_path ://

10.2 finger 命令

10.2.1 命令详解

finger主要是显示用户的一些信息

10.2.2 参数说明

-l:列出改账户的详细信息

-m:查看该用户的详细信息,排除真实姓名除外

-s:列出该用的账号信息,包括用户的登录终端的时间,闲置时间,登录时间及地址

-p:列出该账号的详细信息,用户的专属目录等,

10.2.3 常用命令

10.2.3.1 查看当前系统用户的信息

$ finger -l

Login: xiaoxu Name: xiaoxu

Directory: /home/xiaoxu Shell: /bin/bash

On since Thu Jun 7 19:21 (CST) on :0 from :0 (messages off)

No mail.

No Plan.

10.2.3.2 查看详细信息,除了用户信息除外

$ finger -s

Login Name Tty Idle Login Time Office Office Phone

xiaoxu xiaoxu *:0 Jun 7 19:21 (:0)

10.3 命令

10.3.1 命令参数

为系统与远程服务器常用传送文件命令

10.3.2 参数说明

-d:开启debug模式

-t:启动包跟踪模式

-v : 显示指令处理过程

-g:关闭本地主机文件名称支持特殊字符的扩充特性

-n:不适用自动登录

-i:关闭互动模式

10.3.3 常用命令

>cd: 同UNIX的CD命令.

>cd up: 返回上一级目录.

>chmod: 改变远端主机的文件权限.

>close: 终止远端的进程,返回到命令状态, 所有的宏定义都被删除.

>delete: 删除远端主机中的文件.

>mdelete [remote-files] 删除一批文件.

>mget [remote-files] 从远端主机接收一批文件至本地主机.

>mkdir directory-name 在远端主机中建立目录.

>mput local-files 将本地主机中一批文件传送至远端主机.

>open host [port] 重新建立一个新的连接.

>put local-file [remote-file] 将本地一个文件传送至远端主机中.

>status: 显示当前的状态.

>system: 显示远端主机系统类型.

10.4 ifconfig 命令

10.4.1 命令详解

Ifconfig命令主要查看系统上的网卡的属性信息

10.4.2 参数说明

add : 设置网络设备IPv6的IP地址

del :删除网络设备Ip6的IP地址

down :关闭制定的网络的设备

up : 启动制定的网络设备

IP :制定网络设备的IP地址

mtu : 设置网络的mtu信息

10.4.3 常用命令

10.4.3.1 查看本机的网卡及IP

# ifconfig

10.4.3.2 关闭某个网卡

enp0s8 是网卡的名字

# ifconfig enp0s8 down

10.4.3.3 启动某块网卡

# ifconfig enp0s8 up

10.4.3.4 设置传送单元

# ifconfig eth0 mtu 1500

10.5 netstart命令

10.5.1 命令详解

netstart命令主要查看网络的一些信息,例如网络的链接,路由器,接口状态等信息

10.5.2 参数说明

-r, --route 显示路由表

-i, --interfaces display interface table

-g, --groups display multicast group memberships

-s, --statistics display networking statistics (like SNMP)

-M, --masquerade display masqueraded connections

-v, --verbose 显示详细信息

-W, --wide don't truncate IP addresses

-n, --numeric 不解析名称

--numeric-hosts 不解析主机名

--numeric-ports 忽略端口名称

--numeric-users 忽略用户名

-N, --symbolic resolve hardware names

-e, --extend 显示更多信息

-p, --programs display PID/Program name for sockets

-o, --timers display timers

-c, --continuous continuous listing

-l, --listening display listening server sockets

-a, --all display all sockets (default: connected)

-F, --fib display Forwarding Information Base (default)

-C, --cache display routing cache instead of FIB

-Z, --context display SELinux security context for sockets

10.5.2 常用命令

10.5.2.1 查看所有的打开的端口

$ netstat -a|head -n 5

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 localhost:mysql 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:hostmon 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN

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

10.5.2.2 列出所有 tcp 端口

$ netstat -at|head

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 localhost:mysql 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:hostmon 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN

tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN

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

10.5.2.3 列出所有 udp 的端口

$ netstat -au|head

Proto Recv-Q Send-Q Local Address Foreign Address State

udp 0 0 0.0.0.0:46997 0.0.0.0:*

udp 0 0 localhost:domain 0.0.0.0:*

udp 0 0 0.0.0.0:bootpc 0.0.0.0:*

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

10.5.2.4 列出所有的监听端口

$ netstat -l|head

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 localhost:mysql 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:hostmon 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN

tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN

tcp6 0 0 [::]:hostmon [::]:* LISTEN

10.5.2.5 按照端口查找程序相关的信息

$ sudo netstat -nltp|grep 22

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

1312/sshd

tcp6 0 0 :::22 :::* LISTEN

1312/sshd

10.5.2.6 常用带参数命令

$netstat -lt : 列出所有监控剪口

$netstat -lt 列出所有监听 tcp 端口

$netstat -lu 列出所有监听 udp 端口

$netstat -lx 列出所有监听 UNIX 端口

$netstat -s 显示所有端口

$netstat -st 显示 TCP 的端口

$netstat -su 显示 UDP 的端口

10.6 ping 命令详解

10.6.1 命令详解

ping 命令主要检测主机是否能正常提供网络服务

10.6.2 参数说明

-n : 只输出数值

-q:不显示指令的过程,开头和结尾的相关的信息除外

-v:详细显示指令的执行过程

-d:详细显示使用Socket的SO_DEBUG功能

10.6.3 常用命令

10.6.3.1 检查与外网是否能通

# ping

正在 Ping www.a.shifen.com [61.135.169.125] 具有 32 字节的数据:

来自 61.135.169.125 的回复: 字节=32 时间=10ms TTL=53

来自 61.135.169.125 的回复: 字节=32 时间=6ms TTL=53

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

10.7 rcp 命令

10.7.1 命令详解

scp 命令主要是从远程主机上复制文件或目录

10.7.2 参数说明

-r:递归处理,制定文件夹与文件夹下的文件一块处理

-p:保留远程机器上的文件的属性,包括文件的属性,所有者,所属权组,时间等。

10.7.3 常用命令

10.7.3.1 从远程主机上下载文件

以下命令是从的机器上下载jdk1.8到本地的/home下

# scp -r

或写成,.表示把文件放在当前在目录下

# scp -r

10.7.3.2 把文件传送到远程的机器上

# scp -r

10.8 nmon使用

10.8.1 命令详解

nmon命令可以对系统上的信息进行图标的展示,其中系统的信息包括CPU,内存,网络等指标

10.8.2 参数说明

c = CPU 统计数据

m =内存

j =文件系统

d =磁盘输入/输出信息

n =网络方面的统计数字

V =虚拟内存

r =系统信息

N =NFS

k =内核信息

t =消耗资源最多的进程

. =只显示忙碌的磁盘/进程

v : 详细模式

-f 这是nmon必选参数,并且必须放在第一个,就是输出文件的意思

-s 表示nmon采样的频率单位为秒;

-c 表示nmon采样的次数;

-t 输出top process

10.8.3 常用命令

下载请到 链接:://pan.baidu.com/s/1nvE3fUL 密码:5hao 如果无法下载请联系作者。或使用以下命令进行安装。

ubuntu安装sudo apt-get install nmon

other安装sudo yum install nmon

10.8.3.1 使用说明

# nmon

选择选项进入不同的模式,同时按住Ctrl+c退出当前界面

其他的请使用nmon -hep 查看使用帮助

10.8.3.2使用案例

$ nmon -F test-nmon.nmon -t -s 15 -c 40

查看工具下载:

://download.csdn.net/download/xfg0218/9956899

10.9 nload 软件的使用

10.9.1 命令详解

nload命令主要是查看网卡的一些信息,包括从网卡发送与接收的流量等信息

10.9.2 参数说明

-a:这个好像是全部数据的刷新时间周期,单位是秒,默认是300.

-i:进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s.

-m:不显示流量图,只显示统计数据。

-o:出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s.

-t:显示数据的刷新时间间隔,单位是毫秒,默认500。

-u:设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!

h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.

H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.

-U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)!

Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换。

10.9.3 常用命令

10.9.3.1安装nload命令

查看当前yum中的软件

# yum list|grep ncurses

安装ncurses

# yum install -y ncurses*

安装c++

# yum -y install gcc make gcc-c++ openssl-devel

下载nload

s://sourceforge.net/projects/nload/?source=typ_redirect

解压nload

# tar -zxvf nload-0.7.4.tar.gz

编译nload

# cd nload-0.7.4

# ./configure

# make && make install

查看帮助

# nload --help

10.10 iftop软件的使用

10.10.1 命令详解

iftop命令可以实时的查看网络的信息,能把每一个的请求的网络的信息打印出来。

10.10.2 参数详解

iftop: display bandwidth usage on an interface by host

Synopsis: iftop -h | [-npbBP] [-i interface] [-f filter code] [-N net/mask]

-h display this message

-n don't do hostname lookups

-N don't convert port numbers to services

-p run in promiscuous mode (show traffic between other

hosts on the same network segment)

-b don't display a bar graph of traffic

-B Display bandwidth in bytes

-i interface listen on named interface

-f filter code use filter code to select packets to count

(default: none, but only IP packets are counted)

-F net/mask show traffic flows in/out of network

-P show ports as well as hosts

-m limit sets the upper limit for the bandwidth scale

-c config file specifies an alternative configuration file

iftop, version 0.17

copyright (c) 2002 Paul Warren <pdw@ex-parrot.com> and contributors

E)、参数详解

TX:发送流量

RX:接收流量

TOTAL:总流量

Cumm:运行iftop到目前时间的总流量

peak:流量峰值

rates:分别表示过去 2s 10s 40s 的平均流量

10.10.3 常用命令

安装iftop命令,环境需要的软件

# yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel

iftop下载

# wget ://www.ex-parrot.com/%7Epdw/iftop/download/iftop-0.17.tar.gz

安装并编译

# tar -zxvf iftop-0.17.tar.gz

# cd iftop-0.17

# ./configure

# make && make install

10.11 iotop 命令使用

10.11.1 命令详解

Iotop主要不同用户占用网络的一些信息

10.11.2 参数说明

Options:

--version show program's version number and exit

-h, --help show this help message and exit

-o, --only only show processes or threads actually doing I/O

-b, --batch non-interactive mode

-n NUM, --iter=NUM number of iterations before ending [infinite]

-d SEC, --delay=SEC delay between iterations [1 second]

-p PID, --pid=PID processes/threads to monitor [all]

-u USER, --user=USER users to monitor [all]

-P, --processes only show processes, not all threads

-a, --accumulated show accumulated I/O instead of bandwidth

-k, --kilobytes use kilobytes instead of a human friendly unit

-t, --time add a timestamp on each line (implies --batch)

-q, --quiet suppress some lines of header (implies --batch)

10.11.3 常用命令

# yum install iotop

# iotop

10.12 dstat 命令使用

10.12.1 命令详解

此命令可以图形化的形式查看磁盘,cpu,网络的一些信息

10.12.2 参数详解

dstat -h 查看帮助,请详细查看参数,其中一下参数比较重要:

-c, --cpu enable cpu stats

-d, --disk enable disk stats

-m, --mem enable memory stats

-n, --net enable network stats

-p, --proc enable process stats

10.12.3 常用命令

# dstat

# dstat -m

10.13 bwm-ng 命令使用

10.13.1 命令详解

此命令主要能查看电脑上每块网卡的详细上传与下载的详细信息

10.13.2 参数说明

Options:

-t, --timeout <msec> displays stats every <msec> (1msec = 1/1000sec)

default: 500

-d, --dynamic [value] show values dynamically (Byte KB or MB)

-a, --allif [mode] where mode is one of:

0=show only up (and selected) interfaces

1=show all up interfaces (default)

2=show all and down interfaces

-I, --interfaces <list> show only interfaces in <list> (comma separated), or

if list is prefaced with % show all but interfaces

in list

-S, --sumhidden [value] count hidden interfaces for total

-A, --avglength <sec> sets the span of average stats (Default 30s)

-D, --daemon [value] fork into background and daemonize

-h, --help displays this help

-V, --version print version info

Input:

-i, --input <method> input method, one of: proc disk

-f, --procfile <file> filename to read raw data from. (/proc/net/dev)

--diskstatsfile <file> filename to read diskstats (Linux 2.6+) from. (/proc/diskstats)

--partitionsfile <file> filename to read diskstats (Linux 2.4) from. (/proc/partitions)

Output:

-o, --output <method> output method, one of:

plain, curses, curses2, csv, html

-u, --unit <value> unit to show. one of bytes, bits, packets, errors

-T, --type <value> type of stats. one of rate, max, sum, avg

-C, --csvchar <char> delimiter for csv

-F, --outfile <file> output file for csv and html (default stdout)

-R, --htmlrefresh <num> meta refresh for html output

-H, --htmlheader show <html> and <meta> frame for html output

-c, --count <num> number of query/output for plain & csv

-N, --ansiout disable ansi codes for plain output

(ie 1 for one single output)

10.13.3 常用命令

bwm-ng安装

Ubuntu 安装

# sudo apt-get install bwm-ng

执行bwm-ng

# sudo bwm-ng

可以看出每个网卡网络流量的信息

10.14 网络分析抓包工具wireshark-qt

10.14.1 命令详解

此命令可以根据界面分析出网络中的一些详细的信息

10.14.2 参数说明

请使用$ sudo wireshark --help查看帮助的详细信息

10.14.3 常用命令

安装wireshark-qt

Ubuntu 安装

$ sudo apt install wireshark-qt

使用wireshark

$ sudo wireshark

10.15 smem 可视化显示Linux内存使用情况

10.15.1 命令详解

smem命令主要可以以图表的形式展示内存的使用情况,方便制作表格统计信息

10.15.2 参数说明

Usage: smem [options]

Options:

-h, --help show this help message and exit

-H, --no-header disable header line

-c COLUMNS, --columns=COLUMNS

columns to show

-t, --totals show totals

-R REALMEM, --realmem=REALMEM

amount of physical RAM

-K KERNEL, --kernel=KERNEL

path to kernel image

-m, --mappings show mappings

-u, --users show users

-w, --system show whole system

-P PROCESSFILTER, --processfilter=PROCESSFILTER

process filter regex

-M MAPFILTER, --mapfilter=MAPFILTER

map filter regex

-U USERFILTER, --userfilter=USERFILTER

user filter regex

-n, --numeric numeric output

-s SORT, --sort=SORT field to sort on

-r, --reverse reverse sort

-p, --percent show percentage

-k, --abbreviate show unit suffixes

--pie=PIE show pie graph

--bar=BAR show bar graph

-S SOURCE, --source=SOURCE

/proc data source

RSS(Resident set size),使用top命令可以查询到,是最常用的内存指标,表示进程占用的物理内存大小。但是,将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。

PSS(Proportional set size)会更准确一些,它将共享内存的大小进行平均后,再分摊到各进程上去。

USS(Unique set size )是PSS中自己的部分,它只计算了进程独自占用的内存大小,不包含任何共享的部分。

10.15.3 常用命令

10.15.3.1 安装软件

apt安装

# sudo apt-get install smem

yum安装

# sudo yum install smem python-matplotlib

10.15.3.2 查看非root下查看信息

下使用smem,它能够显示当前用户运行的所有进程的内存使用情况,并按照PSS的大小进行排序。

10.15.3.3 使用root用户查看信息

以下是可以查看root的信息

10.15.3.4 使用柱形图表显示

以下查看了PSS,USS,RSS的占用情况,-U 是用户的信息

10.15.3.5 使用扇形图表显示

以下查看了PSS的详细信息

11 系统工具管理

11.1 cat 命令

11.1.1 命令详解

cat命令主要把文件的内容打印到控制台上

11.1.2 参数说明

-n:在打印内容时带内容进行行数编号,对空行有显示

-b:和-n类似,只不过再显示时对数据行有空行的不显示

-s:把两行空行替换成一行空行进行显示

-e:等价于”-ve”选项

11.1.3 常用命令

11.1.3.1 查看文件中的内容

在以下的内容中可以看出中间有一行或两行的空格的数据

$ cat catTest.log

1

2

3

4

5

6

11.1.3.2 不统计空格行的显示

$ cat -b catTest.log

1 1

2 2

3 3

4 4

5 5

6 6

11.1.3.3 显示空格的显示

$ cat -n catTest.log

1 1

2 2

3

4 3

5

6

7 4

8 5

9 6

11.1.3.4 把两行空格显示成一行空格

$ cat -s catTest.log

1

2

3

4

5

6

11.1.3.5 查看文件的前几行与后几行数据

一般的cat查看数据前几上与后几行都是与tail和head组合使用的

# cat catTest.log |tail -n 2

5

6

# cat catTest.log |head -n 2

1

2

11.1.3.6 查看数据的中间行的数据

test.log 文件是从1到100的数据值,tail -n +5是从head -n 10到开始向上查5行数据

$ cat test.log |head -n 10|tail -n +5

5

6

7

8

9

10

*********

11.1.3.7

11.2 cal 命令

11.2.1 命令详解

日历命令,可以显示当月日历、当年日历、指定月份年份的日历等

11.2.2 命令参数

-j : 以当年的第一天开始计算,显示当天是第几天数

-y : 以星期的格式显示月历

-jy : 以一月一日起的天数显示全年日历

11.2.3 常用命令

11.2.3.1 查看当前的日历

查看当前月的日历

# cal

六月 2018

日 一 二 三 四 五 六

1 2

3 4 5 6 7 8 9

10 11 12 13 14 15 16

17 18 19 20 21 22 23

24 25 26 27 28 29 30

11.2.3.2 查看当前是滴今年的第几天

# cal -j

六月 2018

日 一 二 三 四 五 六

152 153

154 155 156 157 158 159 160

161 162 163 164 165 166 167

168 169 170 171 172 173 174

175 176 177 178 179 180 181

11.2.3.3 查看当前一年的天数信息

# cal -jy

2018

一月 二月

日 一 二 三 四 五 六 日 一 二 三 四 五 六

1 2 3 4 5 6 32 33 34

7 8 9 10 11 12 13 35 36 37 38 39 40 41

14 15 16 17 18 19 20 42 43 44 45 46 47 48

21 22 23 24 25 26 27 49 50 51 52 53 54 55

28 29 30 31 56 57 58 59

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

11.3 date命令

11.3.1 命令详解

显示系统的时间或日期

11.3.2 参数说明

%H 小时(以 00-23 来表示)。

%I 小时(以 01-12 来表示)。

%K 小时(以 0-23 来表示)。

%l 小时(以 0-12 来表示)。

%M 分钟(以 00-59 来表示)。

%P AM 或 PM。

%r 时间(含时分秒,小时以 12 小时 AM/PM 来表示)。

%s 总秒数。起算时间为 1970-01-01 00:00:00 UTC。

%S 秒(以本地的惯用法来表示)。

%T 时间(含时分秒,小时以 24 小时制来表示)。

%X 时间(以本地的惯用法来表示)。

%Z 市区。

%a 星期的缩写。

%A 星期的完整名称。

%b 月份英文名的缩写。

%B 月份的完整英文名称。

%c 日期与时间。只输入 date 指令也会显示同样的结果。

%d 日期(以 01-31 来表示)。

%D 日期(含年月日)。

%j 该年中的第几天。

%m 月份(以 01-12 来表示)。

%U 该年中的周数。

%w 该周的天数,0 代表周日,1 代表周一,异词类推。

%x 日期(以本地的惯用法来表示)。

%y 年份(以 00-99 来表示)。

%Y 年份(以四位数来表示)。

%n 在显示时,插入新的一行。

%t 在显示时,插入 tab。

MM 月份。

DD 日期。

hh 小时。

mm 分钟。

11.3.3 常用命令

11.3.3.1 查看当前的日期

# date

2018年06月 8日 15:56:47

11.3.3.2 手动同步系统时间

# date -s "2016-09-27 16:40:30"

以下是把设置的时间写入到磁盘

# clock -w

# hwclock -w

使用网络同步时间

# ntpdate asia.pool.ntp.org 或

# ntpdate 210.72.145.44

11.3.3.3 设置中国区域的时区

查看时区

# cat /etc/sysconfig/clock

ZONE="America/Los_Angeles"

手动设置时区

# tzselect

Please identify a location so that time zone rules can be set correctly.

Please select a continent or ocean.

1) Africa

2) Americas

3) Antarctica

4) Arctic Ocean

5) Asia

6) Atlantic Ocean

7) Australia

8) Europe

9) Indian Ocean

10) Pacific Ocean

11) none - I want to specify the time zone using the Posix TZ format.

#? 5

Please select a country.

1) Afghanistan 18) Israel 35) Palestine

2) Armenia 19) Japan 36) Philippines

3) Azerbaijan 20) Jordan 37) Qatar

4) Bahrain 21) Kazakhstan 38) Russia

5) Bangladesh 22) Korea (North) 39) Saudi Arabia

6) Bhutan 23) Korea (South) 40) Singapore

7) Brunei 24) Kuwait 41) Sri Lanka

8) Cambodia 25) Kyrgyzstan 42) Syria

9) China 26) Laos 43) Taiwan

10) Cyprus 27) Lebanon 44) Tajikistan

11) East Timor 28) Macau 45) Thailand

12) Georgia 29) Malaysia 46) Turkmenistan

13) Hong Kong 30) Mongolia 47) United Arab Emirates

14) India 31) Myanmar (Burma) 48) Uzbekistan

15) Indonesia 32) Nepal 49) Vietnam

16) Iran 33) Oman 50) Yemen

17) Iraq 34) Pakistan

#? 9

Please select one of the following time zone regions.

1) east China - Beijing, Guangdong, Shanghai, etc.

2) Heilongjiang (except Mohe), Jilin

3) central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.

4) most of Tibet & Xinjiang

5) west Tibet & Xinjiang

#? 1

The following information has been given:

China

east China - Beijing, Guangdong, Shanghai, etc.

Therefore TZ='Asia/Shanghai' will be used.

Local time is now: Sat Dec 31 22:25:15 CST 2016.

Universal Time is now: Sat Dec 31 14:25:15 UTC 2016.

Is the above information OK?

1) Yes

2) No

#? 1

You can make this change permanent for yourself by appending the line

TZ='Asia/Shanghai'; export TZ

to the file '.profile' in your home directory; then log out and log in again.

Here is that TZ value again, this time on standard output so that you

can use the /usr/bin/tzselect command in shell scripts:

Asia/Shanghai

把上海的时区写入到磁盘中,在写入时选择覆盖即可

# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# hwclock

# date

Sat Dec 31 23:09:50 CST 2016

11.3.3.4 按照指定的格式显示时间

按照年月日的格式显示时间

# date + "%Y%m%d”

在之前的基础上向上加5天

# date + "%Y%m%d” -d “5 day”

date +%Y%m%d #显示前天年月日

获取明天的日期

date "+%Y-%m-%d %H:%M:%S" -d "next-day"

date "+%Y-%m-%d %H:%M:%S" -d "next day"

date '+%Y-%m-%d %H:%M:%S' -d tomorrow

date +%Y%m%d -d "+1 day"

获取上一天的日期

date "+%Y-%m-%d %H:%M:%S" -d "last-day"

date "+%Y-%m-%d %H:%M:%S" -d "last day"

date "+%Y-%m-%d %H:%M:%S" -d yesterday

date +%Y%m%d -d "-1 day"

获取上一周的时间

date "+%Y-%m-%d %H:%M:%S" -d "-d next-week"

date "+%Y-%m-%d %H:%M:%S" -d "next-monday"

date "+%Y-%m-%d %H:%M:%S" -d next-thursday

获取下一个月的日期

date "+%Y-%m-%d %H:%M:%S" -d "next-month"

date +%Y%m%d -d "+1 month"

获取上一个月的日期

date "+%Y-%m-%d %H:%M:%S" -d "last-month"

date +%Y%m%d -d "-1 month"

获取下一年的日期

date "+%Y-%m-%d %H:%M:%S" -d "next-year"

date -d "+1 year" +%Y%m%d

获取上一年的日期

date "+%Y-%m-%d %H:%M:%S" -d "last-year"

date +%Y%m%d -d "-1 year"

11.3.3.5 shell 中引用时间格式

以下的引号是tab键上面的`符号

#!bin/sh

testdata=`date +"%Y%m%d" -d "5 day"`

echo $testdata

$ sh testdata.sh

20180613

11.3.3.6 把Unix时间戳转化为date格式

生成unix时间

# date +%s

1528945885

把unix时间转化为date时间

# date -d@1528945885

2018年 06月 14日 星期四 11:11:25 CST

11.4 echo 命令

11.4.1 命令详解

echo 命令主要在控制台打印先关的输出信息

11.4.2 参数说明

-n 不要在最后自动换行

-e 若字符串中出现以下字符,必须加-e参数,则特别加以处理,否则他部门就会把以下字符当做字符输出

\a 发出警告声

\b 删除前一个字符

\c 最后不加上换行符号

\f 换行但光标仍旧停留在原来的位置

\n 换行且光标移至行首

\r 光标移至行首,但不换行

\t 插入 tab

\v 与\f 相同

\\ 插入\字符

\nnn 插入 nnn(八进制)所代表的 ASCII 字符

–help 显示帮助

–version 显示版本信息

11.4.3 常用命令

11.4.3.1 在控制台打印输出信息

# echo “this a test”

this a test

11.4.3.2 处理特殊字符

# echo -e “this a test \t test ”

this a test test

11.5 free命令

11.5.1 命令详解

此命令主要显示系统的内存的情况

11.5.2 参数说明

-b 以Byte为单位显示内存使用情况。

-k 以KB为单位显示内存使用情况。

-m 以MB为单位显示内存使用情况。

-o 不显示缓冲区调节列。

-s<间隔秒数> 持续观察内存使用状况。

-t 显示内存总和列。

-V 显示版本信息。

11.5.3 常用命令

11.5.3.1 以可读的形式显示内存的情况

以下命令是比较常用的,可以简单的显示内存的使用情况

# free -h

total used free shared buff/cache available

Mem: 2.9G 2.0G 206M 62M 739M 724M

Swap: 2.0G 68M 1.9G

# free -b

total used free shared buff/cache available

Mem: 3147272192 2158833664 210280448 67772416 778158080 753848320

Swap: 2147479552 71303168 2076176384

11.6 rpm命令

11.6.1 命令详解

rpm 命令主要对软件包进行操作

11.6.2 参数说明

-a:查询所有套件

-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称

-c:只列出组态配置文件,本参数需配合"-l"参数使用

-d:只列出文本文件,本参数需配合"-l"参数使用

-e<套件档>或--erase<套件档>:删除指定的套件

-f<文件>+:查询拥有指定文件的套件

-h或--hash:套件安装时列出标记

-i:显示套件的相关信息

-i<套件档>或--install<套件档>:安装指定的套件档

-l:显示套件的文件列表

-p<套件档>+:查询指定的RPM套件档

-q:查询是否安装

-R:显示套件的关联性信息

-s:显示文件状态,本参数需配合"-l"参数使用

-U<套件档>或--upgrade<套件档>:升级指定的套件档

-v:显示指令执行过程

--nodeps:强制安装

-qi:查看软件的说明资料

-ivh:安装软件

-e:删除软件

-ql:查询该软件的所有的目录

-V:查询软件是否变更过

-Uvh:升级软件包(-U参数是告诉RPM先删除原先的版本,再安装新的版本)

--test:测试安装

11.6.3 常用命令

11.6.3.1 安装软件包

nodeps 参数说明去除依赖

# rpm -ivh vsd-2.0.5-16.e15.i386.rpm --nodeps

11.6.3.2 查找系统中安装的软件包

# rpm -qa | grep openjdk

11.6.3.3 卸载软件包

# rpm -e openjdk --nodeps

11.6.3.4 更新软件包

U是upgrade的意思

# rpm -U vsd-2.0.5-16.e15.i386.rpm

11.7 server命令

11.7.1 命令详解

server 命令主要对服务进行操作

11.7.2 参数说明

-h:显示帮助信息

-status-all:显示所有的服务的状态

11.7.3 常用命令

11.7.3.1 查看网络的状态

# server network status

# server network restart

11.8 shutdown命令

11.8.1 命令介绍

shutdown 主要操作计算机的关闭程序,并把该消息通知给其他的用户,也可以用作重启机器。

11.8.2 参数说明

-t:设置在几秒内进行关闭程序

-r : 关闭后重启机器

-k:把关机的警告传递给其他的用户,并不会关闭机器

-h:关闭计算机后重启

-H:强制关机

-f:关闭计算机时不做fsck动作(检查linux系统中的保存文档)

-F:关闭计算机强制做fsck动作

time:设置关机时间

message:把消息传送给所有用户的信息

11.8.3 常用命令

11.8.3.1 立刻关机命令

# shutdown -h now

11.8.3.2 立刻重启机器

# shutdown -r

11.8.3.3 制定时间关闭机器并把消息传送给所有用户

# shutdown +5 "system willshutdown after 5 minutes"

11.8.3.4 十分钟之后关机

# shutdown -h +10

11.8.3.5 等于立马关机

# halt

11.8.3.6 重启命令

# reboot

11.9 su命令

11.9.1 命令介绍

此命令主要改变用户的身份角色

11.9.2 参数说明

-m,-p:改变用户身份,但不改变环境变量的信息

-f 或--fast 适用于 csh 与 tsch,使 shell 不用去读取启动文件

-s<shell>或--shell=<shell> 指定要执行的 shell

-f 或--fast 适用于 csh 与 tsch,使 shell 不用去读取启动文件

11.9.3 常用命令

11.9.3.1 切换到root用户

# su root

11.9.3.2 切换用户身份但不改变环境变量

# su -m tourist

bash-4.2$

11.10 sync命令

11.10.1 命令介绍

此命令主要把内存的缓冲区的信息写入到磁盘

11.10.2 参数说明

--help:显示帮助;

--version:显示版本信息。

11.10.3 常用命令

11.10.4 执行清楚内存的缓存

#sync

# echo 1 > /proc/sys/vm/drop_caches

# echo 2 > /proc/sys/vm/drop_caches

# echo 3 > /proc/sys/vm/drop_caches

11.11 uname命令

11.11.1 命令介绍

此命令主要显示系统的详细信息

11.11.2 参数说明

-a或--all:显示全部的信息

-m或--machine:显示系统类型

-n或-nodename:显示在网络上的主机名称

-r或--release:显示操作系统的发行编号

-s或--sysname:显示操作系统名称

-v:显示操作系统的版本

-p或--processor:输出处理器类型或"unknown"

-i或--hardware-platform:输出硬件平台或"unknown"

-o或--operating-system:输出操作系统名称

11.11.3 常用命令

11.11.3.4 显示系统详细的信息

#uname -a

Linux localhost.localdomain 3.8.13-55.1.6.el7uek.x86_64 #2 SMP Wed Feb 11 14:18:22 PST 2015 x86_64 x86_64 x86_64 GNU/Linux

3.8.13-55.1.6.el7uek.x86_64 : 代表系统的编号

x86_64:系统的类型

11.11.3.5 查看系统类型

x86_64 代表64系统,i686代表32操作系统

# uname -m

x86_64

11.11.3.6 查看主机的名字

# uname -n

localhost.localdomain

11.11.3.7 查看系统的发行编号

# uname -r

3.8.13-55.1.6.el7uek.x86_64

11.12 uptime命令

11.12.1 命令介绍

此命令主要显示系统的负载情况

11.12.2 参数说明

-p : 按照格式显示系统运行的时间

-s : 显示系统开始统计时间

-V:显示此命令的版本

11.12.3 常用命令

11.12.3.1 查看运行时长

# uptime -p

up 1 hour, 33 minutes

11.12.3.2 显示此命令的版本

# uptime -V

uptime from procps-ng 3.3.10

11.13 useradd命令

11.13.1 命令介绍

此命令主要对系统添加用户

11.13.2 参数说明

-c --comment COMMENT:加上备注文字

-d, --home-dir HOME_DIR 指定用户登入时的启始目录

-e, --expiredate EXPIRE_DATE 指定帐号的有效期限

-f, --inactive INACTIVE 指定在密码过期后多少天即关闭该帐号

-g, --gid GROUP 指定用户所属的群组

-m, --create-home 自动建立用户的登入目录

-M :--no-create-home不要自动建立用户的登入目录

-r, --system 建立系统帐号

-s, --shell SHELL 指定用户登入后所使用的shell

-u, --uid UID 指定用户id

11.13.3 常用命令

11.13.4 创建系统用户

# useradd xiaozhang

11.13.5 创建一个新用户给设定时间

# useradd -f 1 xiaozhang

11.14 userdel命令

11.14.1 命令介绍

此命令主要删除系统上的用户信息

11.14.2 参数说明

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件。

11.14.3 常用命令

11.14.3.1 删除系统上的用户

# userdel xiaozhang

11.14.3.2 删除与该用户相关的文件

以下是删除该用户病删除该用户相关的文件

# userdel -r xiaozhang

11.15 vi命令

11.15.1 命令介绍

vi此命令主要对系统上文件进行编辑,此命令分为命令模式、插入模式、末行模式

11.15.2 参数说明

11.15.2.1 全部参数详解

a:在当前字符后添加文本

A:在行末添加文本

i:在当前字符前插入文本

I:在行首插入文本

o:在当前行后面插入一空行

O:在当前行前面插入一空行

:wq 保存并推出

:w 将制定的文件保存起来

:q! 不保存而强制退出

:w!:在命令模式下,执行强制存盘操作

:q:在命令模式下,执行退出vi操作

:q!:在命令模式下,执行强制退出vi操作

:e文件名:在命令模式下,打开并编辑指定名称的文件

:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件

:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例

:set number:在命令模式下,用于在最左端显示行号。

:set nonumber:在命令模式下,用于在最左端不显示行号。

永久显示行号需要修改配置文件在~/.vimrc 中输入 set nu 即可

命令行模式下使用 ?user_id 进行高亮显示

11.15.2.2 不同模式下的命令详解

11.15.2.2.1 命令模式常用命令

向右移动 --> l

向左移动 --> h

向下移动 --> j

向上移动 --> k

删除光标所在位置的字符 --> x

删除光标所在的行 --> dd(敲 d 两次)

保存当前修改并退出 --> ZZ

撤销上一步操作 --> u

移动光标到行首 --> 0 (数字 0)

移动光标到行末 --> $

移动光标到当前页最顶行 --> H

移动光标到当前页最底行 --> L

向前翻一页(Page Up) --> Ctrl + f

向后翻一页(Page Down) --> Ctrl + b

复制当前行的数据 --> yy

粘贴已经复制的数据 --> p

把当前行第一次出现的 old 字符串替换成 new 字符串 --> :s/old/new

把当前行出现的所有 old 字符串替换陈 gnew 字符串 --> :s/old/new/g

把文件中出现的所有 old 字符串替换陈 gnew 字符串 --> :%s/old/new/g

退出并保存 --> ZZ

在行首插入制定的关键字:%s/^/01

在行尾插入制定的关键字:%s/$/02

在指定的行数内插入内容:4,6s/^/01 或 :4,6s/$/01

11.15.2.2.2 插入模式常用命令

在光标 左侧输入正文[常用] --> i

在光标 右侧输入正文[常用] --> a

在光标所在行的 下一行增添新行 --> o

在光标所在行的 上一行增添新行 --> O

在光标 所在行的开头输入正文 --> I

在光标 所在行的末尾输入正文 --> A

11.15.2.2.3 末行模式

保存文件 [常用] --> w

将当前文件的内容保存到 file 文件 --> w file

保存文件并退出 vi 编辑器[常用] --> wq

读取 file 文件的内容,插入当前光标所在行的后面 --> r file

退出 vi 编辑器(如果当前文件有改动,则无法退出) --> q

强制退出 vi 编辑器(不保存修改)[常用] --> q!

11.15.2.3 移动光标的操作

vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。

  按「ctrl」+「b」:屏幕往"后"移动一页。

  按「ctrl」+「f」:屏幕往"前"移动一页。

  按「ctrl」+「u」:屏幕往"后"移动半页。

  按「ctrl」+「d」:屏幕往"前"移动半页。

  按数字「0」:移到文章的开头。

按数字「gg」:移到文章的开头。

  按「G」:移动到文章的最后。

  按「$」:移动到光标所在行的"行尾"。

  按「^」:移动到光标所在行的"行首"

  按「w」:光标跳到下个字的开头

  按「e」:光标跳到下个字的字尾

  按「b」:光标回到上个字的开头

按「dG」:光标回到首行快速删除所有内容

按「#l」:光标移到该行的第#个位置,如:5l,56l。

11.15.2.4 删除文字操作

「x」:每按一次,删除光标所在位置的"后面"一个字符。

「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。

「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。

「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。

「dd」:删除光标所在行。

「#dd」:从光标所在行开始删除#行。

11.15.2.5 复制操作

11.15.2.5.1 单行复制

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

「#yw」:复制#个字到缓冲区

「yy」:复制光标所在行到缓冲区。

「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。

「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。

使用shift + v 键可以快速复制当前行的内容

11.15.2.5.2 多行复制

按住 v + 方向键或ghjk 选择复制的内容

y : 复制选中的内容

p : 粘贴选中的内容

11.15.2.6 替换操作

「r」:替换光标所在处的字符。

「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

11.15.2.7 回复到上一次操作

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。

11.15.2.8 更改操作

「cw」:更改光标所在处的字到字尾处

「c#w」:例如,「c3w」表示更改3个字

11.15.2.9 跳到制定的行

「ctrl」+「g」列出光标所在行的行号。

「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

11.15.2.10 在行首插入制定的内容

查看测试数据

# cat xiaoxu_test.log

a

b

c

d

e

F

在每一行的数据前面添加制定的内容

在命令行的模式下操作一下命令即可

:%s/^/ xiaoxu

查看数据

# cat xiaoxu_test.log

xiaoxu a

xiaoxu b

xiaoxu c

xiaoxu d

xiaoxu e

xiaoxu f

在指定的行数插入内容

:4,6s/^/ 01

查看数据

# cat xiaoxu_test.log

xiaoxu d 01 02

xiaoxu e 01 02

aoxu f 01 02

01xiaoxu d 01 02

01xiaoxu e 01 02

01iaoxu f 01 02

11.15.2.11 在行尾插入制动的内容

查看数据

# cat xiaoxu_test.log

xiaoxu a

xiaoxu b

xiaoxu c

xiaoxu d

xiaoxu e

xiaoxu f

在命令模式下执行一下命令

:%s/$/ 01

查看数据

# cat xiaoxu_test.log

xiaoxu a 01

xiaoxu b 01

xiaoxu c 01

xiaoxu d 01

xiaoxu e 01

xiaoxu f 01

在指定的行数插入内容

:4,6s/$/ 02

查看数据

# cat xiaoxu_test.log

xiaoxu a 01

xiaoxu b 01

xiaoxu c 01

xiaoxu d 01 02

xiaoxu e 01 02

xiaoxu f 01 02

11.15.3.12 快速切换到行的首与尾

Shift + { 光标移至段落结尾 或 Shift + 9

Shift + } 光标移至段落开头 或 Shift + 0

11.15.3 常用命令

11.15.3.1 打开一个文件

# vi test.log

11.15.3.2 打开多个文件

# vi test1.log test2.log

11.16 yum命令

11.16.1 命令介绍

此命令主要用于在系统上安装卸载软件,yum源的配置如下

搜狐 yum 源:

://mirrors.sohu.com/help/centos.html

中科大源:

s://lug.ustc.edu.cn/wiki/mirrors/help/centos

163 yum 源:

://mirrors.163.com/.help/CentOS5-Base-163.repo

://mirrors.163.com/.help/CentOS6-Base-163.repo

11.16.2 参数说明

-h:显示帮助信息

-y:对所有的提问都回答"yes"

-c:指定配置文件

-q:安静模式

-v:详细模式

-d:设置调试等级(0-10)

-e:设置错误等级(0-10)

-R:设置yum处理一个命令的最大等待时间

-C:完全从缓存中运行,而不去下载或者更新任何头文件

11.16.3 常用命令

11.16.3.1 安装命令

yum install 全部安装

yum install package1 安装指定的安装包 package1

yum groupinsall group1 安装程序组 group1

11.16.3.2更新和升级

yum update 全部更新

yum update package1 更新指定程序包 package1

yum check-update 检查可更新的程序

yum upgrade package1 升级指定程序包 package1

yum groupupdate group1 升级程序组 group1

11.16.3.3 查找和显示

yum info package1 显示安装包信息 package1

yum list 显示所有已经安装和可以安装的程序包,使用@标记

yum list package1 显示指定程序包安装情况 package1

yum groupinfo group1 显示程序组 group1 信息 yum search string 根据关键字 string 查找安装包

11.16.3.4删除程序

yum remove &#124; erase package1 删除程序包 package1

yum groupremove group1 删除程序组 group1

yum deplist package1 查看程序 package1 依赖情况

11.16.3.5清除缓存

yum clean packages 清除缓存目录下的软件包

yum clean headers 清除缓存目录下的 headers

yum clean oldheaders 清除缓存目录下旧的 headers

yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件

包及旧的 headers

11.16.3.6重新生成缓存

yum clean all 清楚所有缓存

yum makecache 重新生成缓存

11.16.3.7 自动回答"yes"

# yum install -y expect

# yes|yum install expect

11.17 ll & ls命令

11.17.1 命令介绍

此命令主要查看系统上的文件的属性,例如文件的大小,所属组,所属用户等

11.17.2 参数说明

-a:显示隐藏文件

-l:使用长列表模式

-h:按照格式显示文件的大小

-S:按照文件的大小进行排序

--block-size:按照制定的大小显示文件

-g:按照文件的组目录显示文件

-n:打印 UID 和 和 GID

--color:不带颜色打印

-i:显示文件的索引信息

-p:增加斜线标记目录

-r:按照反转排序

-R:递归显示文件的属性

--sort=extension:扩展名排序

-t:按照时间列出文件的信息

~:列出主目录

--version:列出版本号

11.17.3 常用命令

11.17.3.1 列出文件或者目录

$ ls

dome1 dome.txt seq1.log seq.log

11.17.3.2长清单模式

$ ls -l

总用量 1106500

drwxr-xr-x 2 xiaoxu xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9581483 12 月 15 17:13 seq.log

11.17.3.3显示文件大小

$ ls -lh

总用量 1.1G

drwxr-xr-x 2 xiaoxu xiaoxu 4.0K 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu xiaoxu 1.1G 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9.2M 12 月 15 17:13 seq.log

$ ls -si

总用量 1106500

17963573 4 dome1 17306566 4 dome.txt 17301593 1097132 seq1.log

17301692 9360 seq.log

11.17.3.4 排序文件大小

$ ls -lhS

总用量 1.1G

-rw-r--r-- 1 xiaoxu xiaoxu 1.1G 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9.2M 12 月 15 17:13 seq.log

drwxr-xr-x 2 xiaoxu xiaoxu 4.0K 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

11.17.3.5以M为单位显示文件的大小

$ ls -l --block-size=M

总用量 1081M

drwxr-xr-x 2 xiaoxu xiaoxu 1M 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 1M 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu xiaoxu 1072M 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 10M 12 月 15 17:13 seq.log

11.17.3.6查看隐藏文件

$ ls -a

. .. dome1 dome.txt seq1.log seq.log

11.17.3.7只差看当前目录下的文件夹

$ ls -d */

dome1/

11.17.3.8不打印所有者信息

$ ls -g

总用量 1106500

drwxr-xr-x 2 xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu 9581483 12 月 15 17:13 seq.log

11.17.3.9不打印组信息

$ ls -lG

总用量 1106500

drwxr-xr-x 2 xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu 9581483 12 月 15 17:13 seq.log

11.17.3.10打印 UID 和 和 GID

$ ls -n

总用量 1106500

drwxr-xr-x 2 1000 1000 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 1000 1000 36 11 月 20 15:25 dome.txt

-rw-r--r-- 1 1000 1000 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 1000 1000 9581483 12 月 15 17:13 seq.log

11.17.3.11不带颜色打印

$ ls --color=never

dome1 dome.txt seq1.log seq.log

11.17.3.12 打印每个文件的索引号

$ ls -li

总用量 1106500

17963573 drwxr-xr-x 2 xiaoxu xiaoxu 4096 12 月 15 17:14 dome1

17306566 -rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

17301593 -rw-r--r-- 1 xiaoxu xiaoxu 1123456788 12 月 15 17:13 seq1.log

17301692 -rw-r--r-- 1 xiaoxu xiaoxu 9581483 12 月 15 17:13 seq.log

11.17.3.13增加 / ( 斜线) 标记目录

$ ls -p

dome1/ dome.txt seq1.log seq.log

11.17.3.14排序时反转顺序

$ ls -r

seq.log seq1.log dome.txt dome1

11.17.3.15递归列出子目录

$ ls -R

.:

dome1 dome.txt seq1.log seq.log

./dome1:

seq.log

11.17.3.16扩展名排序

$ ls --sort=extension

dome1 seq1.log seq.log dome.txt

$ ls -lX

总用量 1106500

drwxr-xr-x 2 xiaoxu xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9581483 12 月 15 17:13 seq.log

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

11.17.3.17通过修改时间列出

$ ls -lt

总用量 1106500

drwxr-xr-x 2 xiaoxu xiaoxu 4096 12 月 15 17:14 dome1

-rw-r--r-- 1 xiaoxu xiaoxu 1123456788 12 月 15 17:13 seq1.log

-rw-r--r-- 1 xiaoxu xiaoxu 9581483 12 月 15 17:13 seq.log

-rw-r--r-- 1 xiaoxu xiaoxu 36 11 月 20 15:25 dome.txt

11.17.3.18列出你的主目录

$ ls ~

*********

11.17.3.19查看 LS 的版本

$ ls --version

ls (GNU coreutils) 8.26

Copyright (C) 2016 Free Software Foundation, Inc

11.18 awk命令

11.18.1命令介绍

此命令主要处理系统上的文件

11.18.2参数说明

11.18.2.1变量

常用内置变量

$0 当前所有的字段

$0 - $n 系统的内置变量,当前第 n 个字段

NF 输入来记录的分隔符(默认的是空格)

NR 行号

FS : field separator,读取文件本时,所使用字段分隔符

RS : Record separator,输入文本信息所使用的换行符

OFS : Output Filed Separator,文件分隔符

ORS:Output Row Separator,行分隔符

外置变量

awk -v n="test" 'BEGIN{print n}'

- v :传参的参数

11.18.2.2操作符

关系操作符:< , > , <= , >= , == , != , ~ , !~

~ : 表示匹配的意思

!~ : 表示不匹配的意思

例如:# awk -F":" '$7 ~ /^\/bin/{print $0}' /etc/passwd

# awk -F":" '$7 !~ /^\/bin/{print $0}' /etc/passwd

布尔操作符:&& , || , !

11.18.2.3 print与printf的区别

print : 直接输出变量值或给定的字符串

Printf: 可以实现格式化输出

# awk -F":" '{printf($1,$2)}' /etc/passwd

11.18.3 常用命令

11.18.3.1基本语法

# awk ‘pattern + action’ {filename}

11.18.3.2书写格式

命令行模式

# awk -F":" '{print $1}' /etc/passwd

文本模式

# vi testAwk.sh

#!/usr/bin/awk

BEGIN{FS=”:”}

{print $1}

11.18.3.3 awk流程控制

11.18.3.1流程条件

实例一

#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwdno

pk

No

***********

实例二

#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwd

$NF :是表示最后一个单词的记录

while 语句

实例一

#awk -F":" '{i=1;while(i<=NF){print(i,$i);i++}{print " "}}' /etc/passwd

实例二

# awk -F":" '{for(i=1;i<=NF;i++){print(i,$i)}{print " "}}' /etc/passwd

11.18.3.2流程数组

#awk -F":" '{a[$NF]++}END{for(i in a){print i":"a[i]}}' /etc/passwd

算数函数

int(x) : 返回 X 的整数部分的值

sqrt(x) : 返回 x 的平方根

rand() : 返回伪随机数 r,其中 0<=r<1

srand : 建立 rand()新的种子数,如果没有制定就用当天的时间

算数函数

sub(),gsub() : 替换函数

Index(s,t) : 返回子串 t 在字符串 s 中的位置,如果没有则返回 0

length(s) : 返回字符串长度,当没有给出 s 时,返回$0 的长度

match(s,a,seq) : 使用 seq 将字符串 s 分解到数组 a 中,默认 seq 伪 FS

sub(),gsub() : 替换函数

Index(s,t) : 返回子串 t 在字符串 s 中的位置,如果没有则返回 0

length(s) : 返回字符串长度,当没有给出 s 时,返回$0 的长度

match(s,a,seq) : 使用 seq 将字符串 s 分解到数组 a 中,默认 seq 伪 FS

自定义函数

# awk 'function sum(n,m){total=n+m;return total}BEGIN{print sum(5,8)}'

11.18.3.4 awk实战

取获取IP地址

# ifconfig wlp3s0 | grep -w "inet" | awk '{print $2}'

获取制定搜索内容的上一个位置

#cat empnametitle.txt

KLSLAL

XXXXXXXXXXO

Doe

CEO

Jason Smith

IT Manager

Raj Reddy

Sysadmin

Anand Ram

Developer

Jane Miller

Sales Manager

# awk '/Manager/{print s}{s=$0}' empnametitle.txt

查找制定字段的运行时间

# ps -ef|grep java | awk '{print $7}'

00:00:00

对每一个分隔符添加相对应的字符

# nl passwd | awk -F":" '{print $1 "*****" $7}'| head -n 5

1 root*****/bin/bash

2 daemon*****/usr/sbin/nologin

3 bin*****/usr/sbin/nologin

4 sys*****/usr/sbin/nologin

5 sync*****/bin/sync

# $ nl passwd | awk 'BEGIN{FS=":";OFS="****"}{print $1,$7}' | head -n 5

1 root****/bin/bash

2 daemon****/usr/sbin/nologin

3 bin****/usr/sbin/nologin

4 sys****/usr/sbin/nologin

5 sync****/bin/sync

记录当前的 field 个数

$ nl passwd | awk 'BEGIN{FS=":";OFS="****"}{print $1,$7,NF}' | head -n 5

1 root****/bin/bash****7

2 daemon****/usr/sbin/nologin****7

3 bin****/usr/sbin/nologin****7

4 sys****/usr/sbin/nologin****7

5 sync****/bin/sync****7

打印出第三行等于0的用户信息

# awk -F: '{if($3==0) print}' /etc/passwd

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

统计某一列的总和

# cat xiaoxu.txt |awk -F ',' 'BEGIN{sum=0}{sum=sum+$1}END{print sum}'

268090

获取制定行的数据

# awk 'NR == 1 || NR == 2{print $0 " = " NR}' dfg.txt

aaa = 1

1111 = 2

按照文件中的长度获取制定信息

# cat dfg.txt

aaa

1111

32332

223

1111

aaa

# cat dfg.txt |awk '{if( length($0) < 5 ) {print length($0) " = " $0}}'

3 = aaa

4 = 1111

3 = 223

4 = 1111

3 = aaa

# cat 1.txt |awk '{if ( $1%3 == 0 ) { print $1}}'|head -n 3

3

6

9

11.18.3.5 分割字段的值并查看

# echo "dd|vbfg|wcx|wdwf|dfd"|awk -F '|' '{for(i=1;i<=NF;i++){ if ( i < 3 ) { print i " = " $i } continue }}'

1 = dd

2 = vbfg

或写成

# vi fileSplitSheel.sh

#!bin/bash

# 分隔符

soh=`echo 1 | awk '{printf("%c", $1)}'`

# sed -i -e 's/|/'$soh'/g' $1

for readFile in `cat $1`;

do

echo $readFile|awk -F "$soh" '{for(i=1;i<=NF;i++){print i,"= " $i}}'

echo "--------------------------"

done

11.19 sort命令

11.19.1命令介绍

此命令主要是对系统上的文件进行排序操作

11.19.2参数说明

-f:忽略大小写的差异,例如A与a视为编码相同;

-b:忽略最前面的空格符部分;

-M:以月份的名字来排序,例如JAN,DEC等等的排序方法;

-n:使用『纯数字』进行排序(默认是以文字型态来排序的);

-r:反向排序

-u:就是uniq,相同的数据中,仅出现一行代表;

-t:分隔符,默认是用[tab]键来分隔;

-k:以那个区间(field)来进行排序的意思

-o:对数据进行重定向

-g:按照常规数值排序

11.19.3常用命令

11.19.3.1准备数据

# vi test.log

aa1

bb3

cc2

ab4

ba1

de2

ef6

dfd7

11.19.3.2对数据进行排序

# vi source.log

google:110:5000

baidu:100:5000

guge:50:3000

sohu:100:4500

11.19.3.3对数据进行正序排序

默认的是按照第一列的字符串字典排序

# sort source.log

baidu:100:5000

google:110:5000

guge:50:3000

sohu:100:4500

默认的是按照第一个单词进行排序

11.19.3.4对数据进行倒叙排序

# sort -r source.log

sohu:100:4500

guge:50:3000

google:110:5000

baidu:100:5000

或使用一下方法

# seq 5|tac

5

4

3

2

1

tac 倒序排序

11.19.3.5对数据去重

# sort -u source.log

baidu:100:5000

google:110:5000

guge:50:3000

sohu:100:4500

11.19.3.6把排序完的数据进行重新保存

# sort source.log -o source.log

# catsource.log

baidu:100:5000r

google:110:5000

guge:50:3000

sohu:100:4500

-o参数不会对之前的数据进行清空

11.19.3.7按照第一个字段排序

# sort -t ':' -k 1 source.log

baidu:100:5000

google:110:5000

guge:50:3000

sohu:100:4500

-t:表示分隔符

-k:标志制定那个字段进行排序

11.19.3.8按照多个字段排序

# sort -n -t ':' -k 2 -k3 source.log

guge:50:3000

sohu:100:4500

baidu:100:5000

google:110:5000

-n:是按照数字排序

11.19.3.9第三个字段按照降序排序

# sort -n -t ':' -k 2 -k 3 rsource.log

guge:50:3000

baidu:100:5000

sohu:100:4500

google:110:5000

-k3r:表示降序排序

或者这样写

sort -t ':' -k 2 n -k 3 nrsource.log

guge:50:3000

baidu:100:5000

sohu:100:4500

google:110:5000

11.19.3.10按照第一个单词第二个字母排序

# sort-t':'-k1.2source.log

baidu:100:5000

sohu:100:4500

google:110:5000

guge:50:3000

11.19.3.11 多列排序

以下是按照第二列数值排倒序,第三列正序

# sort- t ':' -n -k 2r -k 3 source.log

11.20 wc命令

11.20.1 命令介绍

此命令主要对文本做一些操作,例如文本的统计,计算

11.20.2 参数说明

-c或--bytes或——chars:只显示Bytes数

-l或——lines:只显示列数

-w或——words:只显示字数

-L:打印最长的行数

-m:打印字数统计

11.20.3 常用命令

11.20.3.1 查看文件的详细信息

# wc 20180613.log

行数 单词数 字节数 文件名

147487 2135477 42753253 20180613.log

11.20.3.2 查看文件的行数

# wc -l 20180613.log

行数 文件名

147487 20180613.log

11.20.3.3 打印文件中最长的行数

# wc -L 20180613.log

行数 文件名

611 20180613.log

11.20.3.4 统计文件单词数

# wc -w 20180613.log

字数 文件名

2135477 20180613.log

11.21 grep 命令

11.21.1 命令介绍

grep是一种强大的文本搜索工具,是文本处理的一种很好的一种工具

11.21.2 参数说明

-c:统计符合条件的字符串出现的总行数。

-E:支持扩展正则表达式。

-i:忽略字符大小写。

-n:在显示匹配到的字符串前面加上行号。

-v:显示没有”搜索字符串”内容的那一行。

-l:列出文件内容中有搜索字符串的文件名称。

-o:只输出文件中匹配到的部分。

–color=auto:将匹配到的字符串高亮出来。

-a:匹配行的最后一行

-b:匹配行的前一行

-c:匹配行的前后各一行

-x : 只匹配一行的数据

-F :模式是一组新行分离的固定字符串

-f:从文件中获取数据

11.21.3 常用命令

11.21.3.1 过滤关键字

一下是过滤为streamsets的进程的信息,比较常用

# ps -ef|grep streamsets

11.21.3.2 忽略字符大小写过滤关键字

# cat test.log |grep -i "d"

ddd

ddd

drvbgqa

DDDDESCFT

GGRGDDD

DWAZCW

11.21.3.3统计匹配的个数

-c 命令按照大小写匹配

# cat test.log |grep -c "d"

3

数据为

ddd

ddd

drvbgqa

11.21.3.4在匹配的数据上显示行号

# cat test.log |grep -i -n "d"

3:ddd

10:ddd

11:drvbgqa

12:DDDDESCFT

13:GGRGDDD

14:DWAZCW

11.21.3.5查看不包含的行的数据

# cat test.log |grep -v "d"

DDDDESCFT

GGRGDDD

DWAZCW

11.21.3.6输出匹配到数据的前后几行

--- 是分割线,此命令比较常用

# cat test.log |grep -C 2 "d"

2

333

ddd

2342

654

---

95

1

ddd

drvbgqa

DDDDESCFT

GGRGDDD

11.21.3.7 匹配出带有特殊字符文本

# vi replace-char.sh

#!bin/bash

soh=`echo 1 | awk '{printf("%c", $1)}'`

stx=`echo 2 | awk '{printf("%c", $1)}'`

etx=`echo 3 | awk '{printf("%c", $1)}'`

eot=`echo 4 | awk '{printf("%c", $1)}'`

enq=`echo 5 | awk '{printf("%c", $1)}'`

ack=`echo 6 | awk '{printf("%c", $1)}'`

bel=`echo 7 | awk '{printf("%c", $1)}'`

bs=`echo 8 | awk '{printf("%c", $1)}'`

cat $1 |grep -a -E $soh'|'$stx'|'$etx'|'$eot'|'$enq'|'$ack'|'$bel'|'$bs

11.21.3.8 过滤文本中的中文

数据样例:

# cat 1.txt

21312

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

过滤带有中文的行(包括中文的标点符号)

# cat 1.txt |grep [^\u4E00-\u9FA5]

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

过滤出非中文的行数

# cat 1.txt |grep -Pv [^\u4E00-\u9FA5]

21312

3232434654634

11.21.3.9 获取两个文件相同与不同的数据

查看两个文件的数据

# cat a.txt

123456

123

456

123456789

3456

87

abcd

# cat b.txt

123

456

7890

sddded123

dcdef

12345

67890

获取连个文件的相同部分

# grep -xFf a.txt b.txt

123

456

获取连个文件的不相同部分

# grep -vxFf a.txt b.txt

7890

sddded123

dcdef

12345

67890

11.22 paste 命令

11.22.1 命令详解

paste可以简单的理解为把两个文件的内容按列合并。默认的分隔符是tab,如果想改变请使用-d参数

11.22.2 参数说明

-d : tab之外的分隔符,例如:@等

-s: 将每个文件合并成行而不是按行粘贴。

11.22.3 常用命令

11.22.3.1 按照tab合并两个文件

# seq 10 >> test.log

# seq 10 >> test1.log

# paste test.log test1.log

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 10

11.22.3.2 按照文件内容粘贴

# paste -s test.log test1.log

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

11.23 timeout 命令

11.23.1 命令详解

此命令主要看命令的任务的控制等。

11.23.2 参数说明

-k 如果命令在发送初始信号后长时间运行,也发送一个杀死信号。

-s 指定要在超时发送的信号,指定要在超时信号上发送的信号可以是一个类似于“HUP”的名称,或者是一个信号列表中的“kill -L”号

--help 查看帮助

--version 查看版本

s 代表秒。

m 代表分钟。

h 代表小时。

d 代表天。

例如: 3s 代表3秒

11.23.3 常用命令

ubuntu 上安装命令

sudo apt-get install timelimit

11.23.3.1 对命令进行定时

# timeout 3s ping

PING www.a.shifen.com (119.75.216.20) 56(84) bytes of data.

64 bytes from 119.75.216.20: icmp_seq=1 ttl=55 time=5.62 ms

64 bytes from 119.75.216.20: icmp_seq=2 ttl=55 time=11.3 ms

64 bytes from 119.75.216.20: icmp_seq=3 ttl=55 time=7.26 ms

# timeout 3 ping

PING www.a.shifen.com (119.75.216.20) 56(84) bytes of data.

64 bytes from 119.75.216.20: icmp_seq=1 ttl=55 time=5.62 ms

64 bytes from 119.75.216.20: icmp_seq=2 ttl=55 time=11.3 ms

64 bytes from 119.75.216.20: icmp_seq=3 ttl=55 time=7.26 ms

11.24 xargs 命令

11.24.1 参数详解

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。

11.24.2 命令参数

-a file 从文件中读入作为sdtin

-t 表示先打印命令,然后再执行

-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了

-s num 命令行的最好字符数,指的是xargs后面那个命令的最大命令行字符数

-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符

-x exit的意思,主要是配合-s使用。

-P 修改最大的进程数,默认是1

11.24.3 常用命令

生成数据

# seq 10>> test.log

多行数据变成一行输出

# cat test.log|xagrs

1 2 3 4 5 6 7 8 9 10

把数据变成多行2列的形式

# cat test.log |xargs -n2

1 2

3 4

5 6

7 8

9 10

定义分隔符形式

# echo "nameXname1Xname2X" |xargs -dX

name name1 name2

注意以上已经把分隔符去掉了

结合-n与-d的使用

# echo "nameXname1Xname2Xname3X" |xargs -dX -n2

name name1

name2 name3

# echo "1@2@3@4" |xargs -d @

1 2 3 4

11.25 uniq 命令

11.25.1 参数详解

去命令主要是删除或显示重复的行与删除

11.25.2 命令参数

-c 在输出行前面加上每行在输入文件中出现的次数

-d 仅显示重复行

-u 仅显示不重复的行

11.25.3 常用命令

准备数据

# cat xiaoxu.log

sds

wdwd

www

sds

wdwdw

dd

dd

edcf

edcf

tg

rfgt

rf

rf

rf

11.25.3.1 显示重复的行

# uniq -d xiaoxu.log

dd

edcf

rf

11.25.3.2 显示单词的出现次数

# uniq -c xiaoxu.log

1 wdwdw

2 dd

2 edcf

1 tg

1 rfgt

3 rf

11.25.3.3 显示不重复的行

# uniq -u xiaoxu.log

sds

wdwd

www

sds

wdwdw

tg

rfgt

11.25.3.4 去除文本中含有字母与数字的情况

原始数据

# cat dfg.txt

aaa

1111

32332

223

1111

aaa

不排序去重

# uniq dfg.txt

aaa

1111

32332

223

1111

aaa

排序之后去重

# sort dfg.txt |uniq

1111

223

32332

aaa

# head -n 2 1.txt

1

2

3

4

5

11.26 sed 命令

11.26.1 命令详解

sed是一种流处理编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。使用此命令能够快速的处理复杂的文本。

11.26.2 命令参数

-n : 读取下一行到模式空间,安静的模式

-N : 追加下一行到模式空间

:a : 定义标签a

ba:返回标签a

ta :如果执行成功则返回标签a

ta:如果执行不成功则返回a

-e : 直接在命令列模式上进行sed的动作操作

-f : 直接将sed的动作写在一个文件内

-i:直接修改读取文件中的内容,而不是输出到终端

p :列印,亦即将某个选择的数据印出

a :新增

c :取代

d :删除第一行

i :插入

s :替换

2,$:删除第二行到末尾行的内容

2i:在第二行前插入文本内容

3a:在第3行后插入文本内容

正则匹配及分组

模式-n s/x/y/g:每行的范围内(g),将所有的x替换成y

模式s/x/y/3g:每行的范围内第3个匹配值的开始,将所有的x替换成y

模式 -n 's/^M//' 或 sed -i 's/\r$//g' 把其他的编码转换为unix编码

删除注释和空行 sed '/ *#/d; /^ *$/d'

删除行头尾空格 sed 's/^[ \t]*//;s/[ \t]*$//'

11.26.3 常用命令

11.26.3.1复制数据的前一行

$ nl passwd |sed '1p'

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

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

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

××××××××××××××××××××××××

11.26.3.2删除制定的行

$ nl passwd |sed '1d'

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

3 bin:x:2:2:bin:/bin:/usr/sbin/nologin

4 sys:x:3:3:sys:/dev:/usr/sbin/nologin

××××××××××××××××××××××××

11.26.3.3显示第一行到第二行

$ nl passwd |sed -n '1,2p'

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

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

只显示第三行

$ nl passwd | sed -n '3p'

3 bin:x:2:2:bin:/bin:/usr/sbin/nologin

11.26.3.4在第二行后面添加一行信息

$ nl passwd |sed '2a add print .....'

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

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

add print .....

3 bin:x:2:2:bin:/bin:/usr/sbin/nologin

11.26.3.5删除地2行到第五行,病替换成相对应的字符

$ nl passwd |sed '2,5c add string .....'

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

add string .....

6 games:x:5:60:games:/usr/games:/usr/sbin/nologin

11.26.3.6搜索信息做操作

所有出来并显示

$ nl passwd |sed -n '/daemon/p'

2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

29 avahi-autoipd:x:110:115:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false

30 usbmux:x:111:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false

搜索出来直接删除

$ nl passwd |sed -n '/daemon/d'

Awk

搜索出来病执行替换,q只结束符

$ nl passwd |sed '/daemon/{s/daemon/blueshell/;q}'

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

2 blueshell:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

11.26.3.7获取本地的IP

$ ifconfig wlp3s0|sed -n '/netmask/p' | awk -F" " '{print $2}'

11.26.3.8 把文件转换为unix编码

$ sudo sed -n 's/^M//g' passwd

11.27.3.9 替换文本中双引号与单引号问题

# sed -i -e -n ‘s/\”//g’ fileName

11.28.3.10 删除注释和空行

原始数据

# cat 1.txt

# 21312

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

4545

gfhgth

发个人工343dddfed

份饭43fgfgrg

替换掉后的数据

# sed '/ *#/d; /^ *$/d' 1.txt

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

4545

gfhgth

发个人工343dddfed

份饭43fgfgrg

11.28.3.11 删除行首与尾空格

原始数据

# cat 1.txt

# 21312

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

4545

gfhgth

发个人工343dddfed

份饭43fgfgrg

替换掉的数据格式

# sed 's/^[ \t]*//;s/[ \t]*$//' 1.txt

# 21312

3232434654634

的南方人,dfejfdefe

ifej低分蜂飞蝶舞,ijsdwi

叠加法,节点杰尔夫

13132324,3321

4545

gfhgth

发个人工343dddfed

份饭43fgfgrg

11.28.3.12 制定某行做替换

# nl 1.txt |sed '19c --------'

18 dgreeff@qq.com

--------

11.28.3.13 在文件末尾添加一行内容

# sed '$a\ xiaoxu' 1.txt

3435443242@qq.com

xiaoxu

注意$a 是在文本的尾行添加,斜杠\是制表符

11.28.3.14 删除文本中的空行

# sed '/^$/d' 1.txt

1212,1213,23

35:dede:\dfdf

3d,sfsd

*********

11.28.3.15 把文件命替换成大写

# nl *.txt | sed 's/\w\+/\U&/'

11.27 awk 命令

11.27.1 命令详解

它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。

11.27.2 命令参数

11.27.2.1 变量

常用内置变量

$0 当前所有的字段

$0 - $n 系统的内置变量,当前第n个字段

NF 输入来记录的分隔符(默认的是空格)

NR 行号

FS : field separator,读取文件本时,所使用字段分隔符

RS : Record separator,输入文本信息所使用的换行符

OFS : Output Filed Separator,文件分隔符

ORS:Output Row Separator,行分隔符

外置变量

awk -v n="test" 'BEGIN{print n}'

- v :传参的参数

11.27.2.2 操作符

关系操作符:< , > , <= , >= , == , != , ~ , !~

~ : 表示匹配的意思

!~ : 表示不匹配的意思

例如:[root@hadoop1 /]# awk -F":" '$7 ~ /^\/bin/{print $0}' /etc/passwd

[root@hadoop1 /]# awk -F":" '$7 !~ /^\/bin/{print $0}' /etc/passwd

布尔操作符:&& , || , !

11.27.2.3 print与printf的区别

print : 直接输出变量值或给定的字符串

Printf: 可以实现格式化输出

11.27.2.4 算数函数

算数函数

int(x) : 返回X的整数部分的值

sqrt(x) : 返回x的平方根

rand() : 返回伪随机数r,其中0<=r<1

srand : 建立rand()新的种子数,如果没有制定就用当天的时间

算数函数

sub(),gsub() : 替换函数

Index(s,t) : 返回子串t在字符串s中的位置,如果没有则返回0

length(s) : 返回字符串长度,当没有给出s时,返回$0的长度

match(s,a,seq) : 使用seq将字符串s分解到数组a中,默认seq伪FS

sub(),gsub() : 替换函数

Index(s,t) : 返回子串t在字符串s中的位置,如果没有则返回0

length(s) : 返回字符串长度,当没有给出s时,返回$0的长度

match(s,a,seq) : 使用seq将字符串s分解到数组a中,默认seq伪FS

11.27.3 常用命令

11.27.3.1 书写格式

# vi testAwk.sh

#!/usr/bin/awk

BEGIN{FS=”:”}

{print $1}

11.27.3.2 判断条件

实例一

#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwdno

pk

No

***********

实例二

#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwd

$NF :是表示最后一个单词的记录

11.27.3.3 while语法

实例一

#awk -F":" '{i=1;while(i<=NF){print(i,$i);i++}{print " "}}' /etc/passwd

实例二

# awk -F":" '{for(i=1;i<=NF;i++){print(i,$i)}{print " "}}' /etc/passwd

11.27.3.4 快速匹配查找

前后匹配查找

# seq 1 30 | awk '/3/ {print}'

3

13

23

30

不匹配制定的关键字的查找

# seq 1 30 | awk '!/3/ {print}'

1

2

4

5

6

7

8

9

10

11

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

其余的模式都可以使用'&&'或者'||'运算符组合,前者表示逻辑与,后者表示逻辑或:

# seq 1 40 | awk '/3/&&/1/ {print}'

13

31

# seq 1 10 | awk '/3/||/1/ {print}'

1

3

10

11.27.3.5 把多行按照制定分隔符

# cat test.txt

1

2

3

4

5

6

7

8

9

10

# sed 'H;$!d;${x;s/^\n//;s/\n/,/g}' test.txt

1,2,3,4,5,6,7,8,9,10

以上标红的是分隔符

11.28 watch 命令

11.28.1 命令详解

此命令可以输出结果到标准设备上,用于周期或定时执行任务,watch缺省每2秒运行一下程序。

11.28.2 命令参数

-n:指定指令执行的间隔时间(秒)

-d:高亮显示指令输出信息不同之处

-t:不显示标题

11.28.3 常用参数

11.28.3.1 显示默认的定时

# watch du -sh

Every 2.0s: du -sh Tue Jul 10 10:41:50 2018

8.0K .

第一行的显示多长时间刷新,执行的命令是什么,第二行的是Tue Jul 10 10:41:50 2018是执行命令的时间。

11.28.2 设置时间来显示命令

# watch -d -n 2 date

Every 2.0s: date Tue Jul 10 10:52:23 2018

Tue Jul 10 10:52:23 EDT 2018

-n 2 : 代表2S执行一次时间。

-d : 代表把当前执行的高亮显示出来。

11.28.3 把头部信息去掉

# watch -d -n 2 -t date

Tue Jul 10 10:57:48 EDT 2018

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

浅析data:image/png;base64的应用

4182
来自专栏沃趣科技

看各路神仙如何大战MySQL insecure warning报警有感

一、问题由来 mysql在5.6.5上开始在命令行中直接填入用户密码会提示错误,例如: $./mysql -h10.10.30.18 -uwoqutech -p...

4358
来自专栏落影的专栏

编译与链接过程的思考

前言 最近遇到一个错误,如下 ? 在解决过程中,回顾了很多知识,于是有了这篇文章。 关键词:预处理、编译、汇编、链接、动态链接库、静态链接库、真机调...

4929
来自专栏圣杰的专栏

事件总线知多少(2)

源码路径:Github-EventBus 事件总线知多少(1) 事件总线知多少(2) 1.引言 之前的一篇文章事件总线知多少(1),介绍了什么是事件总线...

2307
来自专栏FreeBuf

AutoIt木马又一发:暗藏神秘照片

AutoIt是一个自动化的Windows界面交互的脚本语言,具有很高的灵活性和较低的学习曲线。由于AutoIt解释器本身属于合法程序,黑客可以把恶意代码藏在脚本...

2929
来自专栏偏前端工程师的驿站

.Net魔法堂:log4net详解

一、作用                              提供一个记录日志的框架,可以将日志信息记录到文件、控制台、Windows事件日志和数据库(M...

2639
来自专栏偏前端工程师的驿站

.Net魔法堂:log4net详解

一、作用                              提供一个记录日志的框架,可以将日志信息记录到文件、控制台、Windows事件日志和数据库(M...

2065
来自专栏章鱼的慢慢技术路

使用Go语言+Protobuf协议完成一个多人聊天室

之前用纯逻辑垒完了一个可登入登出的在线多人聊天室(代码仓库地址),这次学习了Protobuf协议,于是想试着更新下聊天室的版本。

1243
来自专栏娱乐心理测试

一个 JS 库就能解决小程序跨页传递事件消息和数据

由于微信小程序 wx.navigateBack 方法并不支持返回传值,导致页面在返回后,不能方便地即时更新数据。

1874
来自专栏农夫安全

docker小试牛刀之bash_shellshock漏洞复现

漏洞名称 bash_shellshock • 首先,问题起因于一个命令ENV。 • 原型: • env [OPTION]...[NAME=VALUE]......

2938

扫码关注云+社区