作者:小徐
制作时间:20180601
联系方式:xiaoxubigdata@163.com
curl 命令支持在线下载功能,使用方便,它支持,S,等协议,还支持PUT,POST,COOKIES,认证授权等操作。
详细的参数请使用curl --help查看,下面简单的介绍常用的参数
-a : 上传文件时附加目标文件
-A: 设置用户的代理发送给服务器
-b: cookie 字符串或文件读取位置
-C :断电续传操作
-d :使用的post方式上传数据
-e:查看来源的网站
-f:连接失败时不显示链接的错误信息
以下是下载网页
# curl
<! DOCTYPE html>
<!-- STATUS ok --><html><head>
***************
</body></html>
以下是保存网页
# curl >> baidu.tet
执行以下的操作可以在改文件夹下看到有1.jpg文件,如果去掉-o的话就会保存与服务器上一样的文件
% 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
以下的下载文件从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
************************
格式为: 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
**************
上传的选项是-T
上传的格式为$ curl -T local_file_path -u name:passwd
# curl -T /home/xiaoxu -u 1.linuxidc.com:www.linuxidc.com ://1.linuxidc.com/tmp
上传的命令选项是-T,格式是curl -T localfile address
# curl -T local_file_path ://
finger主要是显示用户的一些信息
-l:列出改账户的详细信息
-m:查看该用户的详细信息,排除真实姓名除外
-s:列出该用的账号信息,包括用户的登录终端的时间,闲置时间,登录时间及地址
-p:列出该账号的详细信息,用户的专属目录等,
$ 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.
$ finger -s
Login Name Tty Idle Login Time Office Office Phone
xiaoxu xiaoxu *:0 Jun 7 19:21 (:0)
为系统与远程服务器常用传送文件命令
-d:开启debug模式
-t:启动包跟踪模式
-v : 显示指令处理过程
-g:关闭本地主机文件名称支持特殊字符的扩充特性
-n:不适用自动登录
-i:关闭互动模式
>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: 显示远端主机系统类型.
Ifconfig命令主要查看系统上的网卡的属性信息
add : 设置网络设备IPv6的IP地址
del :删除网络设备Ip6的IP地址
down :关闭制定的网络的设备
up : 启动制定的网络设备
IP :制定网络设备的IP地址
mtu : 设置网络的mtu信息
# ifconfig
enp0s8 是网卡的名字
# ifconfig enp0s8 down
# ifconfig enp0s8 up
# ifconfig eth0 mtu 1500
netstart命令主要查看网络的一些信息,例如网络的链接,路由器,接口状态等信息
-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
$ 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
*************
$ 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
*************
$ 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:*
***********************
$ 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
$ 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
$netstat -lt : 列出所有监控剪口
$netstat -lt 列出所有监听 tcp 端口
$netstat -lu 列出所有监听 udp 端口
$netstat -lx 列出所有监听 UNIX 端口
$netstat -s 显示所有端口
$netstat -st 显示 TCP 的端口
$netstat -su 显示 UDP 的端口
ping 命令主要检测主机是否能正常提供网络服务
-n : 只输出数值
-q:不显示指令的过程,开头和结尾的相关的信息除外
-v:详细显示指令的执行过程
-d:详细显示使用Socket的SO_DEBUG功能
# 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
****************
scp 命令主要是从远程主机上复制文件或目录
-r:递归处理,制定文件夹与文件夹下的文件一块处理
-p:保留远程机器上的文件的属性,包括文件的属性,所有者,所属权组,时间等。
以下命令是从的机器上下载jdk1.8到本地的/home下
# scp -r
或写成,.表示把文件放在当前在目录下
# scp -r
# scp -r
nmon命令可以对系统上的信息进行图标的展示,其中系统的信息包括CPU,内存,网络等指标
c = CPU 统计数据
m =内存
j =文件系统
d =磁盘输入/输出信息
n =网络方面的统计数字
V =虚拟内存
r =系统信息
N =NFS
k =内核信息
t =消耗资源最多的进程
. =只显示忙碌的磁盘/进程
v : 详细模式
-f 这是nmon必选参数,并且必须放在第一个,就是输出文件的意思
-s 表示nmon采样的频率单位为秒;
-c 表示nmon采样的次数;
-t 输出top process
下载请到 链接:://pan.baidu.com/s/1nvE3fUL 密码:5hao 如果无法下载请联系作者。或使用以下命令进行安装。
ubuntu安装sudo apt-get install nmon
other安装sudo yum install nmon
# nmon
选择选项进入不同的模式,同时按住Ctrl+c退出当前界面
其他的请使用nmon -hep 查看使用帮助
$ nmon -F test-nmon.nmon -t -s 15 -c 40
查看工具下载:
://download.csdn.net/download/xfg0218/9956899
nload命令主要是查看网卡的一些信息,包括从网卡发送与接收的流量等信息
-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:自定义监控的网卡,默认是全部监控的,使用左右键切换。
查看当前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
iftop命令可以实时的查看网络的信息,能把每一个的请求的网络的信息打印出来。
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 的平均流量
安装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
Iotop主要不同用户占用网络的一些信息
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)
# yum install iotop
# iotop
此命令可以图形化的形式查看磁盘,cpu,网络的一些信息
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
# dstat
# dstat -m
此命令主要能查看电脑上每块网卡的详细上传与下载的详细信息
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)
bwm-ng安装
Ubuntu 安装
# sudo apt-get install bwm-ng
执行bwm-ng
# sudo bwm-ng
可以看出每个网卡网络流量的信息
此命令可以根据界面分析出网络中的一些详细的信息
请使用$ sudo wireshark --help查看帮助的详细信息
安装wireshark-qt
Ubuntu 安装
$ sudo apt install wireshark-qt
使用wireshark
$ sudo wireshark
smem命令主要可以以图表的形式展示内存的使用情况,方便制作表格统计信息
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中自己的部分,它只计算了进程独自占用的内存大小,不包含任何共享的部分。
apt安装
# sudo apt-get install smem
yum安装
# sudo yum install smem python-matplotlib
下使用smem,它能够显示当前用户运行的所有进程的内存使用情况,并按照PSS的大小进行排序。
以下是可以查看root的信息
以下查看了PSS,USS,RSS的占用情况,-U 是用户的信息
以下查看了PSS的详细信息
cat命令主要把文件的内容打印到控制台上
-n:在打印内容时带内容进行行数编号,对空行有显示
-b:和-n类似,只不过再显示时对数据行有空行的不显示
-s:把两行空行替换成一行空行进行显示
-e:等价于”-ve”选项
在以下的内容中可以看出中间有一行或两行的空格的数据
$ cat catTest.log
1
2
3
4
5
6
$ cat -b catTest.log
1 1
2 2
3 3
4 4
5 5
6 6
$ cat -n catTest.log
1 1
2 2
3
4 3
5
6
7 4
8 5
9 6
$ cat -s catTest.log
1
2
3
4
5
6
一般的cat查看数据前几上与后几行都是与tail和head组合使用的
# cat catTest.log |tail -n 2
5
6
# cat catTest.log |head -n 2
1
2
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
日历命令,可以显示当月日历、当年日历、指定月份年份的日历等
-j : 以当年的第一天开始计算,显示当天是第几天数
-y : 以星期的格式显示月历
-jy : 以一月一日起的天数显示全年日历
查看当前月的日历
# 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
# 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
****************
显示系统的时间或日期
%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 分钟。
# date
2018年06月 8日 15:56:47
# date -s "2016-09-27 16:40:30"
以下是把设置的时间写入到磁盘
# clock -w
或
# hwclock -w
使用网络同步时间
# ntpdate asia.pool.ntp.org 或
# ntpdate 210.72.145.44
查看时区
# 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
按照年月日的格式显示时间
# 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"
以下的引号是tab键上面的`符号
#!bin/sh
testdata=`date +"%Y%m%d" -d "5 day"`
echo $testdata
$ sh testdata.sh
20180613
生成unix时间
# date +%s
1528945885
把unix时间转化为date时间
# date -d@1528945885
2018年 06月 14日 星期四 11:11:25 CST
echo 命令主要在控制台打印先关的输出信息
-n 不要在最后自动换行
-e 若字符串中出现以下字符,必须加-e参数,则特别加以处理,否则他部门就会把以下字符当做字符输出
\a 发出警告声
\b 删除前一个字符
\c 最后不加上换行符号
\f 换行但光标仍旧停留在原来的位置
\n 换行且光标移至行首
\r 光标移至行首,但不换行
\t 插入 tab
\v 与\f 相同
\\ 插入\字符
\nnn 插入 nnn(八进制)所代表的 ASCII 字符
–help 显示帮助
–version 显示版本信息
# echo “this a test”
this a test
# echo -e “this a test \t test ”
this a test test
此命令主要显示系统的内存的情况
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
以下命令是比较常用的,可以简单的显示内存的使用情况
# 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
rpm 命令主要对软件包进行操作
-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:测试安装
nodeps 参数说明去除依赖
# rpm -ivh vsd-2.0.5-16.e15.i386.rpm --nodeps
# rpm -qa | grep openjdk
# rpm -e openjdk --nodeps
U是upgrade的意思
# rpm -U vsd-2.0.5-16.e15.i386.rpm
server 命令主要对服务进行操作
-h:显示帮助信息
-status-all:显示所有的服务的状态
# server network status
# server network restart
shutdown 主要操作计算机的关闭程序,并把该消息通知给其他的用户,也可以用作重启机器。
-t:设置在几秒内进行关闭程序
-r : 关闭后重启机器
-k:把关机的警告传递给其他的用户,并不会关闭机器
-h:关闭计算机后重启
-H:强制关机
-f:关闭计算机时不做fsck动作(检查linux系统中的保存文档)
-F:关闭计算机强制做fsck动作
time:设置关机时间
message:把消息传送给所有用户的信息
# shutdown -h now
# shutdown -r
# shutdown +5 "system willshutdown after 5 minutes"
# shutdown -h +10
# halt
# reboot
此命令主要改变用户的身份角色
-m,-p:改变用户身份,但不改变环境变量的信息
-f 或--fast 适用于 csh 与 tsch,使 shell 不用去读取启动文件
-s<shell>或--shell=<shell> 指定要执行的 shell
-f 或--fast 适用于 csh 与 tsch,使 shell 不用去读取启动文件
# su root
# su -m tourist
bash-4.2$
此命令主要把内存的缓冲区的信息写入到磁盘
--help:显示帮助;
--version:显示版本信息。
#sync
# echo 1 > /proc/sys/vm/drop_caches
# echo 2 > /proc/sys/vm/drop_caches
# echo 3 > /proc/sys/vm/drop_caches
此命令主要显示系统的详细信息
-a或--all:显示全部的信息
-m或--machine:显示系统类型
-n或-nodename:显示在网络上的主机名称
-r或--release:显示操作系统的发行编号
-s或--sysname:显示操作系统名称
-v:显示操作系统的版本
-p或--processor:输出处理器类型或"unknown"
-i或--hardware-platform:输出硬件平台或"unknown"
-o或--operating-system:输出操作系统名称
#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:系统的类型
x86_64 代表64系统,i686代表32操作系统
# uname -m
x86_64
# uname -n
localhost.localdomain
# uname -r
3.8.13-55.1.6.el7uek.x86_64
此命令主要显示系统的负载情况
-p : 按照格式显示系统运行的时间
-s : 显示系统开始统计时间
-V:显示此命令的版本
# uptime -p
up 1 hour, 33 minutes
# uptime -V
uptime from procps-ng 3.3.10
此命令主要对系统添加用户
-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
# useradd xiaozhang
# useradd -f 1 xiaozhang
此命令主要删除系统上的用户信息
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
# userdel xiaozhang
以下是删除该用户病删除该用户相关的文件
# userdel -r xiaozhang
vi此命令主要对系统上文件进行编辑,此命令分为命令模式、插入模式、末行模式
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 进行高亮显示
向右移动 --> 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
在光标 左侧输入正文[常用] --> i
在光标 右侧输入正文[常用] --> a
在光标所在行的 下一行增添新行 --> o
在光标所在行的 上一行增添新行 --> O
在光标 所在行的开头输入正文 --> I
在光标 所在行的末尾输入正文 --> A
保存文件 [常用] --> w
将当前文件的内容保存到 file 文件 --> w file
保存文件并退出 vi 编辑器[常用] --> wq
读取 file 文件的内容,插入当前光标所在行的后面 --> r file
退出 vi 编辑器(如果当前文件有改动,则无法退出) --> q
强制退出 vi 编辑器(不保存修改)[常用] --> q!
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
按「ctrl」+「b」:屏幕往"后"移动一页。
按「ctrl」+「f」:屏幕往"前"移动一页。
按「ctrl」+「u」:屏幕往"后"移动半页。
按「ctrl」+「d」:屏幕往"前"移动半页。
按数字「0」:移到文章的开头。
按数字「gg」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的"行尾"。
按「^」:移动到光标所在行的"行首"
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「dG」:光标回到首行快速删除所有内容
按「#l」:光标移到该行的第#个位置,如:5l,56l。
「x」:每按一次,删除光标所在位置的"后面"一个字符。
「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
「dd」:删除光标所在行。
「#dd」:从光标所在行开始删除#行。
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。
使用shift + v 键可以快速复制当前行的内容
按住 v + 方向键或ghjk 选择复制的内容
y : 复制选中的内容
p : 粘贴选中的内容
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
查看测试数据
# 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
查看数据
# 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
Shift + { 光标移至段落结尾 或 Shift + 9
Shift + } 光标移至段落开头 或 Shift + 0
# vi test.log
# vi test1.log test2.log
此命令主要用于在系统上安装卸载软件,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
-h:显示帮助信息
-y:对所有的提问都回答"yes"
-c:指定配置文件
-q:安静模式
-v:详细模式
-d:设置调试等级(0-10)
-e:设置错误等级(0-10)
-R:设置yum处理一个命令的最大等待时间
-C:完全从缓存中运行,而不去下载或者更新任何头文件
yum install 全部安装
yum install package1 安装指定的安装包 package1
yum groupinsall group1 安装程序组 group1
yum update 全部更新
yum update package1 更新指定程序包 package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包 package1
yum groupupdate group1 升级程序组 group1
yum info package1 显示安装包信息 package1
yum list 显示所有已经安装和可以安装的程序包,使用@标记
yum list package1 显示指定程序包安装情况 package1
yum groupinfo group1 显示程序组 group1 信息 yum search string 根据关键字 string 查找安装包
yum remove | erase package1 删除程序包 package1
yum groupremove group1 删除程序组 group1
yum deplist package1 查看程序 package1 依赖情况
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件
包及旧的 headers
yum clean all 清楚所有缓存
yum makecache 重新生成缓存
# yum install -y expect
或
# yes|yum install expect
此命令主要查看系统上的文件的属性,例如文件的大小,所属组,所属用户等
-a:显示隐藏文件
-l:使用长列表模式
-h:按照格式显示文件的大小
-S:按照文件的大小进行排序
--block-size:按照制定的大小显示文件
-g:按照文件的组目录显示文件
-n:打印 UID 和 和 GID
--color:不带颜色打印
-i:显示文件的索引信息
-p:增加斜线标记目录
-r:按照反转排序
-R:递归显示文件的属性
--sort=extension:扩展名排序
-t:按照时间列出文件的信息
~:列出主目录
--version:列出版本号
$ ls
dome1 dome.txt seq1.log seq.log
$ 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
$ 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
$ 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
$ 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
$ ls -a
. .. dome1 dome.txt seq1.log seq.log
$ ls -d */
dome1/
$ 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
$ 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
$ 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
$ ls --color=never
dome1 dome.txt seq1.log seq.log
$ 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
$ ls -p
dome1/ dome.txt seq1.log seq.log
$ ls -r
seq.log seq1.log dome.txt dome1
$ ls -R
.:
dome1 dome.txt seq1.log seq.log
./dome1:
seq.log
$ 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
$ 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
$ ls ~
*********
$ ls --version
ls (GNU coreutils) 8.26
Copyright (C) 2016 Free Software Foundation, Inc
此命令主要处理系统上的文件
常用内置变量
$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 :传参的参数
关系操作符:< , > , <= , >= , == , != , ~ , !~
~ : 表示匹配的意思
!~ : 表示不匹配的意思
例如:# awk -F":" '$7 ~ /^\/bin/{print $0}' /etc/passwd
# awk -F":" '$7 !~ /^\/bin/{print $0}' /etc/passwd
布尔操作符:&& , || , !
print : 直接输出变量值或给定的字符串
Printf: 可以实现格式化输出
# awk -F":" '{printf($1,$2)}' /etc/passwd
# awk ‘pattern + action’ {filename}
命令行模式
# awk -F":" '{print $1}' /etc/passwd
文本模式
# vi testAwk.sh
#!/usr/bin/awk
BEGIN{FS=”:”}
{print $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
#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)}'
取获取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
# 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
此命令主要是对系统上的文件进行排序操作
-f:忽略大小写的差异,例如A与a视为编码相同;
-b:忽略最前面的空格符部分;
-M:以月份的名字来排序,例如JAN,DEC等等的排序方法;
-n:使用『纯数字』进行排序(默认是以文字型态来排序的);
-r:反向排序
-u:就是uniq,相同的数据中,仅出现一行代表;
-t:分隔符,默认是用[tab]键来分隔;
-k:以那个区间(field)来进行排序的意思
-o:对数据进行重定向
-g:按照常规数值排序
# vi test.log
aa1
bb3
cc2
ab4
ba1
de2
ef6
dfd7
# vi source.log
google:110:5000
baidu:100:5000
guge:50:3000
sohu:100:4500
默认的是按照第一列的字符串字典排序
# sort source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
默认的是按照第一个单词进行排序
# 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 倒序排序
# sort -u source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
# sort source.log -o source.log
# catsource.log
baidu:100:5000r
google:110:5000
guge:50:3000
sohu:100:4500
-o参数不会对之前的数据进行清空
# sort -t ':' -k 1 source.log
baidu:100:5000
google:110:5000
guge:50:3000
sohu:100:4500
-t:表示分隔符
-k:标志制定那个字段进行排序
# sort -n -t ':' -k 2 -k3 source.log
guge:50:3000
sohu:100:4500
baidu:100:5000
google:110:5000
-n:是按照数字排序
# 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
# sort-t':'-k1.2source.log
baidu:100:5000
sohu:100:4500
google:110:5000
guge:50:3000
以下是按照第二列数值排倒序,第三列正序
# sort- t ':' -n -k 2r -k 3 source.log
此命令主要对文本做一些操作,例如文本的统计,计算
-c或--bytes或——chars:只显示Bytes数
-l或——lines:只显示列数
-w或——words:只显示字数
-L:打印最长的行数
-m:打印字数统计
# wc 20180613.log
行数 单词数 字节数 文件名
147487 2135477 42753253 20180613.log
# wc -l 20180613.log
行数 文件名
147487 20180613.log
# wc -L 20180613.log
行数 文件名
611 20180613.log
# wc -w 20180613.log
字数 文件名
2135477 20180613.log
grep是一种强大的文本搜索工具,是文本处理的一种很好的一种工具
-c:统计符合条件的字符串出现的总行数。
-E:支持扩展正则表达式。
-i:忽略字符大小写。
-n:在显示匹配到的字符串前面加上行号。
-v:显示没有”搜索字符串”内容的那一行。
-l:列出文件内容中有搜索字符串的文件名称。
-o:只输出文件中匹配到的部分。
–color=auto:将匹配到的字符串高亮出来。
-a:匹配行的最后一行
-b:匹配行的前一行
-c:匹配行的前后各一行
-x : 只匹配一行的数据
-F :模式是一组新行分离的固定字符串
-f:从文件中获取数据
一下是过滤为streamsets的进程的信息,比较常用
# ps -ef|grep streamsets
# cat test.log |grep -i "d"
ddd
ddd
drvbgqa
DDDDESCFT
GGRGDDD
DWAZCW
-c 命令按照大小写匹配
# cat test.log |grep -c "d"
3
数据为
ddd
ddd
drvbgqa
# cat test.log |grep -i -n "d"
3:ddd
10:ddd
11:drvbgqa
12:DDDDESCFT
13:GGRGDDD
14:DWAZCW
# cat test.log |grep -v "d"
DDDDESCFT
GGRGDDD
DWAZCW
--- 是分割线,此命令比较常用
# cat test.log |grep -C 2 "d"
2
333
ddd
2342
654
---
95
1
ddd
drvbgqa
DDDDESCFT
GGRGDDD
# 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
数据样例:
# 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
查看两个文件的数据
# 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
paste可以简单的理解为把两个文件的内容按列合并。默认的分隔符是tab,如果想改变请使用-d参数
-d : tab之外的分隔符,例如:@等
-s: 将每个文件合并成行而不是按行粘贴。
# 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
# 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
此命令主要看命令的任务的控制等。
-k 如果命令在发送初始信号后长时间运行,也发送一个杀死信号。
-s 指定要在超时发送的信号,指定要在超时信号上发送的信号可以是一个类似于“HUP”的名称,或者是一个信号列表中的“kill -L”号
--help 查看帮助
--version 查看版本
s 代表秒。
m 代表分钟。
h 代表小时。
d 代表天。
例如: 3s 代表3秒
ubuntu 上安装命令
sudo apt-get install timelimit
# 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
xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。
-a file 从文件中读入作为sdtin
-t 表示先打印命令,然后再执行
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了
-s num 命令行的最好字符数,指的是xargs后面那个命令的最大命令行字符数
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符
-x exit的意思,主要是配合-s使用。
-P 修改最大的进程数,默认是1
生成数据
# 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
去命令主要是删除或显示重复的行与删除
-c 在输出行前面加上每行在输入文件中出现的次数
-d 仅显示重复行
-u 仅显示不重复的行
准备数据
# cat xiaoxu.log
sds
wdwd
www
sds
wdwdw
dd
dd
edcf
edcf
tg
rfgt
rf
rf
rf
# uniq -d xiaoxu.log
dd
edcf
rf
# uniq -c xiaoxu.log
1 wdwdw
2 dd
2 edcf
1 tg
1 rfgt
3 rf
# uniq -u xiaoxu.log
sds
wdwd
www
sds
wdwdw
tg
rfgt
原始数据
# 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
sed是一种流处理编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。使用此命令能够快速的处理复杂的文本。
-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]*$//'
$ 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
××××××××××××××××××××××××
$ 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
××××××××××××××××××××××××
$ 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
$ 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
$ 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
所有出来并显示
$ 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
$ ifconfig wlp3s0|sed -n '/netmask/p' | awk -F" " '{print $2}'
$ sudo sed -n 's/^M//g' passwd
# sed -i -e -n ‘s/\”//g’ fileName
原始数据
# 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
原始数据
# 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
# nl 1.txt |sed '19c --------'
18 dgreeff@qq.com
--------
# sed '$a\ xiaoxu' 1.txt
3435443242@qq.com
xiaoxu
注意$a 是在文本的尾行添加,斜杠\是制表符
# sed '/^$/d' 1.txt
1212,1213,23
35:dede:\dfdf
3d,sfsd
*********
# nl *.txt | sed 's/\w\+/\U&/'
它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。
常用内置变量
$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 :传参的参数
关系操作符:< , > , <= , >= , == , != , ~ , !~
~ : 表示匹配的意思
!~ : 表示不匹配的意思
例如:[root@hadoop1 /]# awk -F":" '$7 ~ /^\/bin/{print $0}' /etc/passwd
[root@hadoop1 /]# awk -F":" '$7 !~ /^\/bin/{print $0}' /etc/passwd
布尔操作符:&& , || , !
print : 直接输出变量值或给定的字符串
Printf: 可以实现格式化输出
算数函数
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
# vi testAwk.sh
#!/usr/bin/awk
BEGIN{FS=”:”}
{print $1}
实例一
#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwdno
pk
No
***********
实例二
#awk -F":" '{if($NF=="/bin/bash"){print $0}}' /etc/passwd
$NF :是表示最后一个单词的记录
实例一
#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
前后匹配查找
# 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
以上标红的是分隔符
此命令可以输出结果到标准设备上,用于周期或定时执行任务,watch缺省每2秒运行一下程序。
-n:指定指令执行的间隔时间(秒)
-d:高亮显示指令输出信息不同之处
-t:不显示标题
# watch du -sh
Every 2.0s: du -sh Tue Jul 10 10:41:50 2018
8.0K .
第一行的显示多长时间刷新,执行的命令是什么,第二行的是Tue Jul 10 10:41:50 2018是执行命令的时间。
# 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 : 代表把当前执行的高亮显示出来。
# watch -d -n 2 -t date
Tue Jul 10 10:57:48 EDT 2018
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。