此文档记录一些日常工作中能用到的linux命令
tr命令
tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。
常用实例
- 将输入字符由大写转换为小写
1
2
|
echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world
|
- 使用tr删除符字
1
2
|
echo "hello 123 world 456" | tr -d '0-9'
hello world
|
- 将制表符转换为空格
- 字符集补集,从输入文本中将不在补集中的所有字符删除
1
2
|
echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d -c '0-9 \n'
1 2 3 4
|
- 用tr压缩字符,可以压缩输入中重复的字符
1
2
|
echo "thissss is a text linnnnnnne." | tr -s ' sn'
this is a text line.
|
cut命令
cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容
常用实例
1
2
3
4
5
6
|
[root@localhost text]# cat test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
|
- 打印第1个到第3个字符
1
2
3
4
5
6
|
[root@localhost text]# cut -c1-3 test.txt
abc
abc
abc
abc
abc
|
- 打印前2个字符:
1
2
3
4
5
6
|
[root@localhost text]# cut -c-2 test.txt
ab
ab
ab
ab
ab
|
- 打印从第5个字符开始到结尾
1
2
3
4
5
6
|
[root@localhost text]# cut -c5- test.txt
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
|
- 使用 -f 选项提取指定字段:
1
2
3
4
5
6
7
8
|
[root@localhost text]# cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
[root@localhost text]# cut -f 1 test.txt
No
01
02
|
basename命令
basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。
常用实例
- 显示出文件名称
1
2
|
[root@localhost ~]# basename /root/shell/test.txt
test.txt
|
- 显示出不带后缀的文件名称
1
2
|
[root@localhost ~]# basename /root/shell/test.txt .txt
test
|
dirname命令
dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/
及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/
后无字符,dirname 命令使用倒数第二个/
,并忽略其后的所有字符。
常用实例
1
2
|
[root@localhost ~]# dirname /root/shell/test.txt
/root/shell
|
1
2
|
[root@localhost ~]# dirname /root/shell/
/root
|
1
2
|
[root@localhost shell]# dirname test.txt
.
|
wc命令
wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
常用实例
- 统计文件信息
1
2
|
[root@localhost shell]# wc test.txt
19 15 252 test.txt #文件的行数为19、单词数15、字节数252
|
- 统计行数
1
2
3
|
[root@localhost shell]# wc -l test.txt
19 test.txt
|
tee命令
tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上
常用实例
- 输出的信息同时写入指定文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@k8s-77-162 shell]# ping www.baidu.com |tee out.txt
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=54 time=12.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=54 time=12.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=54 time=12.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=54 time=12.6 ms
^C[root@k8s-77-162 shell]# cat out.txt
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=54 time=12.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=54 time=12.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=54 time=12.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=54 time=12.6 ms
[root@k8s-77-162 shell]#
|
- 输出的信息追加到指定文件 默认情况下,在同一个文件下再次使用
tee
命令会覆盖之前的信息 可以通过 -a
命令选项改变默认设置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@k8s-77-162 shell]# ping www.souhu.com |tee -a out.txt
PING cndm.com (103.232.215.131) 56(84) bytes of data.
64 bytes from 103.232.215.131 (103.232.215.131): icmp_seq=1 ttl=52 time=200 ms
64 bytes from 103.232.215.131 (103.232.215.131): icmp_seq=2 ttl=52 time=200 ms
64 bytes from 103.232.215.131 (103.232.215.131): icmp_seq=3 ttl=52 time=200 ms
64 bytes from 103.232.215.131 (103.232.215.131): icmp_seq=4 ttl=52 time=200 ms
^C[root@k8s-77-162 shell]# cat out.txt
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=54 time=12.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=54 time=12.7 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=54 time=12.7 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=54 time=12.6 ms
PING cndm.com (103.232.215.131) 56(84) bytes of data.
64 bytes from 103.232.215.131 (103.232.215.131): icmp_seq=1 ttl=52 time=200 ms
64 bytes from 103.232.215.131 (103.232.215.131): icmp_seq=2 ttl=52 time=200 ms
64 bytes from 103.232.215.131 (103.232.215.131): icmp_seq=3 ttl=52 time=200 ms
64 bytes from 103.232.215.131 (103.232.215.131): icmp_seq=4 ttl=52 time=200 ms
[root@k8s-77-162 shell]#
|
- 写入多个文件
1
2
|
[root@k8s-77-162 shell]# ping www.souhu.com |tee out.txt out1.txt out2.txt
|
- tee命令的输出内容直接作为另一个命令的输入内容
1
2
3
4
5
6
7
8
9
10
11
|
[root@k8s-77-162 shell]# ll file* |tee output.txt |wc -l
6
[root@k8s-77-162 shell]# cat output.txt
-rw-r--r--. 1 root root 0 6月 11 09:22 file1
-rw-r--r--. 1 root root 0 6月 11 09:22 file2
-rw-r--r--. 1 root root 2110 5月 14 11:05 file.2019-05-14
-rw-r--r--. 1 root root 0 6月 11 09:22 file3
-rw-r--r--. 1 root root 0 6月 11 09:22 file4
-rw-r--r--. 1 root root 0 6月 11 09:22 file5
[root@k8s-77-162 shell]#
|
more命令
more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键
常用快捷键使用方法:
- 按Space键:显示文本的下一屏内容。
- 按Enier键:只显示文本的下一行内容。
- 按斜线符
|
:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
- 按H键:显示帮助屏,该屏上有相关的帮助信息。
- 按B键:显示上一屏内容。
- 按Q键:退出rnore命令。
less命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
常用快捷键使用方法:
- /字符串:向下搜索"字符串"的功能
- ?字符串:向上搜索"字符串"的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- b 向后翻一页
- d 向后翻半页
- h 显示帮助界面
- Q 退出less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一页
- 回车键 滚动一行
常用实例
- 查看文件
1
2
|
[root@k8s-77-162 ~]# less /var/log/messages
|
- 查看进程信息并用less分页显示
1
2
|
[root@k8s-77-162 shell]# ps -ef |less
|
sort命令
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入
常用实例
- 文件内容排序
默认的比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@k8s-77-162 shell]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
[root@k8s-77-162 shell]# sort sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5
|
- 使用-u或uniq忽略相同行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@k8s-77-162 shell]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
[root@k8s-77-162 shell]# sort -u sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
|
uniq
uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
常用实例
- 删除重复行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@k8s-77-162 shell]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
[root@k8s-77-162 shell]# uniq sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
|
- 只显示出单一行
1
2
3
4
5
6
|
[root@k8s-77-162 shell]# uniq -u sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
|
- 统计各行在文件中出现的次数
1
2
3
4
5
6
7
|
[root@k8s-77-162 shell]# uniq -c sort.txt
1 aaa:10:1.1
1 ccc:30:3.3
1 ddd:40:4.4
1 bbb:20:2.2
2 eee:50:5.5
|
- 在文件中找出重复的行
1
2
3
|
[root@k8s-77-162 shell]# uniq -d sort.txt
eee:50:5.5
|
jobs命令
jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号。 这一序列的操作将会使用到 jobs、bg、和 fg 三个命令以及两个快捷键来完成。
常用实例
- 显示当前系统任务列表
1
2
3
4
5
|
[root@k8s-77-162 shell]# sleep 3000 &
[1] 11015
[root@k8s-77-162 shell]# jobs
[1]+ 运行中 sleep 3000 &
|
- 显示对应任务的进程号
1
2
3
|
[root@k8s-77-162 shell]# jobs -l
[1]+ 11015 运行中 sleep 3000 &
|
1
2
3
4
5
6
7
|
[root@k8s-77-162 shell]# jobs
[1]+ 运行中 sleep 3000 &
[root@k8s-77-162 shell]# kill %1
[1]+ 已终止 sleep 3000
[root@k8s-77-162 shell]# jobs
[root@k8s-77-162 shell]#
|
fg命令
fg命令用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。与bg命令一样,若后台任务中只有一个,则使用该命令时,可以省略任务号。
使用实例
- 将任务号为1的任务从后台转为前台执行
1
2
3
4
5
6
7
8
|
[root@k8s-77-162 shell]# sleep 3000 &
[1] 10208
[root@k8s-77-162 shell]# jobs
[1]+ 运行中 sleep 3000 &
[root@k8s-77-162 shell]# fg 1
sleep 3000
|
使用ctrl+z会让任务再次回到后台 不过是停止状态
bg命令
bg命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&
的效果是相同的,都是将其放到系统后台执行。
常用实例
- 将任务号为1的任务放在后台继续执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@k8s-77-162 shell]# jobs
[1]+ 运行中 sleep 3000 &
[root@k8s-77-162 shell]# fg 1 #转到前台
sleep 3000
^Z #ctrl+z回到后台停止
[1]+ 已停止 sleep 3000
[root@k8s-77-162 shell]# jobs
[1]+ 已停止 sleep 3000
[root@k8s-77-162 shell]# bg 1 #继续执行
[1]+ sleep 3000 &
[root@k8s-77-162 shell]# jobs
[1]+ 运行中 sleep 3000 &
[root@k8s-77-162 shell]#
|
split命令
split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。
使用实例
-
分割文件
默认为1000切割成一个小文件
1
2
3
4
5
6
7
8
|
[root@k8s-77-162 test]# split messages
[root@k8s-77-162 test]# ls
messages xae xaj xao xat xay xbd xbi xbn xbs xbx xcc xch xcm xcr xcw xdb xdg xdl xdq xdv xea xef xek xep xeu xez
xaa xaf xak xap xau xaz xbe xbj xbo xbt xby xcd xci xcn xcs xcx xdc xdh xdm xdr xdw xeb xeg xel xeq xev
xab xag xal xaq xav xba xbf xbk xbp xbu xbz xce xcj xco xct xcy xdd xdi xdn xds xdx xec xeh xem xer xew
xac xah xam xar xaw xbb xbg xbl xbq xbv xca xcf xck xcp xcu xcz xde xdj xdo xdt xdy xed xei xen xes xex
xad xai xan xas xax xbc xbh xbm xbr xbw xcb xcg xcl xcq xcv xda xdf xdk xdp xdu xdz xee xej xeo xet xey
|
- 指定xx行切割成一个小文件
1
2
3
4
|
[root@k8s-77-162 test]# split -10000 messages
[root@k8s-77-162 test]# ls
messages xaa xab xac xad xae xaf xag xah xai xaj xak xal xam
|
- 使用数字做后缀
用-d参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[root@k8s-77-162 test]# split -10000 messages test.txt -d
[root@k8s-77-162 test]# ll
总用量 28264
-rw-------. 1 root root 14456185 6月 11 16:54 messages
-rw-r--r--. 1 root root 1117830 6月 11 17:26 test.txt00
-rw-r--r--. 1 root root 1092575 6月 11 17:26 test.txt01
-rw-r--r--. 1 root root 1086841 6月 11 17:26 test.txt02
-rw-r--r--. 1 root root 1124741 6月 11 17:26 test.txt03
-rw-r--r--. 1 root root 1114635 6月 11 17:26 test.txt04
-rw-r--r--. 1 root root 1103796 6月 11 17:26 test.txt05
-rw-r--r--. 1 root root 1139606 6月 11 17:26 test.txt06
-rw-r--r--. 1 root root 1156384 6月 11 17:26 test.txt07
-rw-r--r--. 1 root root 1120804 6月 11 17:26 test.txt08
-rw-r--r--. 1 root root 1081161 6月 11 17:26 test.txt09
-rw-r--r--. 1 root root 1086159 6月 11 17:26 test.txt10
-rw-r--r--. 1 root root 1112624 6月 11 17:26 test.txt11
-rw-r--r--. 1 root root 1119029 6月 11 17:26 test.txt12
[root@k8s-77-162 test]#
|
uptime命令
uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:
现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的一分钟、5分钟和15分钟内的凭据负载
常用实例
1
2
3
|
[root@k8s-77-162 ~]# uptime
15:14:14 up 56 days, 9:23, 2 users, load average: 0.24, 0.22, 0.19
|
显示内容说明:
1
2
3
4
5
|
15:14:14 #系统当前时间
up 56 days, 9:23 # 主机运行时间,时间越长 说明主机越稳定
2 users #用户连接数 是总连接数 不是用户数
load average: 0.24, 0.22, 0.19 #系统平均负载 统计1、5、15分钟的系统平均负载
|
ps命令
ps命令用于报告当前系统的进程状态
常用实例
- 显示进程信息
1
2
3
4
5
6
7
|
[root@k8s-77-162 ~]# ps -A
PID TTY TIME CMD
1 ? 00:29:40 systemd
2 ? 00:00:07 kthreadd
3 ? 00:04:18 ksoftirqd/0
...
|
- 显示指定用户信息
1
2
3
4
5
6
7
8
|
[root@k8s-77-162 ~]# ps -u root #显示root用户的进程信息
PID TTY TIME CMD
1 ? 00:29:40 systemd
2 ? 00:00:07 kthreadd
3 ? 00:04:18 ksoftirqd/0
5 ? 00:00:00 kworker/0:0H
...
|
- 显示所有进程信息,连同命令行 及查找特定进程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@k8s-77-162 ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 4月19 ? 00:29:40 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 4月19 ? 00:00:07 [kthreadd]
root 3 2 0 4月19 ? 00:04:18 [ksoftirqd/0]
...
[root@k8s-77-162 ~]# ps -ef |grep ssh #查找ssh进程
root 6298 1 0 4月19 ? 00:00:01 /usr/sbin/sshd -D
root 11202 6298 0 14:18 ? 00:00:00 sshd: root@pts/0
root 11795 11791 0 6月03 ? 00:00:00 runsv sshd
root 11796 11795 0 6月03 ? 00:00:00 svlogd -tt /var/log/gitlab/sshd
...
|
- 列出当前所有正在内存中的进程
1
2
3
4
5
6
7
8
|
[root@k8s-77-162 ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 194376 5296 ? Ss 4月19 29:41 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 4月19 0:07 [kthreadd]
root 3 0.0 0.0 0 0 ? S 4月19 4:18 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 4月19 0:00 [kworker/0:0H]
...
|
netstat命令
netstat命令用来打印linux中网络系统的状态信息,可让你得知整个linux系统的网络情况。
常用实例
- 列出所有端口(包括监听和未监听的)
1
2
3
4
|
netstat -a #列出所有端口
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口
|
- 列出处于监听状态下的sockets
1
2
3
4
5
|
netstat -l #只显示监听端口
netstat -lt #只列出所有监听tcp端口
netstat -lu #只列出所有监听udp端口
netstat -lx #只列出所有监听unix端口
|
- 显示每个协议的统计信息
1
2
3
4
|
netstat -s #显示所有端口的统计信息
netstat -st #显示tcp端口的统计信息
netstat -su #显示udp端口的统计信息
|
- 在netstat输出中显示PID和进程名称
1
2
3
4
5
6
|
[root@k8s-77-162 ~]# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 k8s-77-162:36698 172.16.77.:sun-sr-https ESTABLISHED 30174/kubelet
tcp 0 0 k8s-77-162:55140 172.16.77.:sun-sr-https ESTABLISHED 7235/kube-proxy
|
- 在netstat输出中不显示主机,端口和用户名(host,prot,user)
1
2
3
4
5
6
7
|
[root@k8s-77-162 ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:33639 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN
|
Author
dylan
LastMod
2019-08-09
License
如需转载请注明文章作者和出处。谢谢!