一、文本排序、统计类命令

1.wc命令用于统计指定文本文件的行数、字数或字节数。

(1)格式:“wc [参数] 文件名称”

(2)wc:  行数   单词数   字节数

常用选项

参数作用
-l

只显示行数

-w只显示单词数
-c只显示字节数

(3)例1:查看系统中装了多少个软件

[root@server ~]# rpm -qa | wc -l
1322

2.sort命令用于对文本内容进行再排序

(1)格式:“sort [参数] 文件名称”

(2)常用选项:

参数作用
-f忽略大小写
-b忽略缩进空格
-n以数值型排序
-r反向排序
-u去除重复行
-t指定文件间隔符
-k设定字段范围,按哪一列排序

(3)示例:

例1:按英文字母排序

[root@server ~]# cat s1.txt
afasg
fvsgeswg
sgbsrgr
sgsrgf
xbf
egtbf
cdgza
lkegpe
[root@server ~]# sort s1.txt
afasg
cdgza
egtbf
fvsgeswg
lkegpe
sgbsrgr
sgsrgf
xbf

例2:按照年龄进行排序

[root@server ~]# sort -t" " -k2 -n s1.txt
afasg 12
sgbsrgr 13
sgsrgf 14 
fvsgeswg 24
egtbf 64
cdgza 67 
lkegpe 114
xbf 345 

例3:将年龄进行降序排序

[root@server ~]# sort -t" " -k2 -nr s1.txt
xbf 345 
lkegpe 114
cdgza 67 
egtbf 64
fvsgeswg 24
sgsrgf 14 
sgbsrgr 13
afasg 12

例4:去除文件中的重复行

shanghai
xian
chengdu
suzhou
jiangsu
xian
chengdu
suzhou
[root@server ~]# sort -u s1.txt
chengdu
jiangsu
shanghai
suzhou
xian

3.cut命令用于按列提取文本内容

(1)格式:“cut [参数] 文件名称”。

(2)常用选项:

参数选项
-d分隔符
-f输出字段
-c输出字符个数

(3)示例:

例1:输出文件/etc/passwd前十行的用户名

[root@server ~]# cut -d":" -f1 /etc/passwd | head
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator

例2:输出文件/etc/passwd前十行里面的用户名,uid,gid

[root@server ~]# cut -d":" -f1,3-4 /etc/passwd | head---不连续字段用逗号(,)隔开、连续字段用(-)连接
root:0:0
bin:1:1
daemon:2:2
adm:3:4
lp:4:7
sync:5:0
shutdown:6:0
halt:7:0
mail:8:12
operator:11:0

例3:输出文件/etc/passwd前十行的前八个字符

[root@server ~]# cut -c 1-8 /etc/passwd | head
root:x:0
bin:x:1:
daemon:x
adm:x:3:
lp:x:4:7
sync:x:5
shutdown
halt:x:7
mail:x:8
operator

4.uniq命令用于去除文本中连续的重复行

(1)格式:“uniq [参数] 文件名称”

-c  统计文件中相同的行

(2)示例:

面试题:统计/etc/passwd文件中的shell类型

[root@server ~]# cut -d: -f7 /etc/passwd | sort ---让相同的东西连在一起
[root@server ~]# cut -d":" -f7 /etc/passwd | sort | uniq -c | sort -nr
     40 /sbin/nologin
      7 /bin/bash
      1 /sbin/shutdown
      1 /sbin/halt
      1 /bin/sync

5.tr 命令用于转换或删除文件中的字符

(1)语法:

tr [-cdst][--help][--version][第一字符集][第二字符集]
tr [OPTION]…SET1[SET2]

(2)常用命令:

[:alnum:]       all letters and digits ---数字和大小写字母
[:alpha:]        all letters ---大小写字母
[:digit:]          all digits ---数字[0-9]
[:lower:]        all lower case letters ---小写字母[a-z]
[:space:]       all horizontal or vertical whitespace
[:upper:]       all upper case letters ---大写字母[A-Z]

例:小写转大写

[root@server ~]# echo "Welcome to the Linux" | tr 'a-z' 'A-Z'---小写转大写
[root@server ~]# echo "Welcome to the Linux" | tr [[:lower:]] [[:upper:]]
WELCOME TO THE LINUX

(3)参数说明

  • -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行 转换
  • -d, --delete:删除指令字符
  • -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
  • -t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
  • --help:显示程序用法信息 --version:显示程序本身的版本信息

二、快捷键的使用

1.history查阅命令历史记录

(1)执行方式:利用向上或向下光标键来进行查询;第二种办法是执行“history [n]” 命令来查询。

(2)history(选项)(参数)

选项:

-N: 显示历史记录中最近的N个记录;

-c:清空当前历史命令;

-a:将历史命令缓冲区中命令写入历史命令文件中;

-r:将历史命令文件中的命令读入当前历史命令缓冲区;

-w:将当前历史命令缓冲区命令写入历史命令文件中;

-d:删除历史记录中第offset个命令

-n:读取指定文件

参数:

n:打印最近的n条历史命令。

(3)history的使用

1> 默认显示1000条命令。

[root@server ~]# vim /etc/profile—HISTSIZE=1000

2> 面试题:改变history默认输出(包含用户、ip、时间等)

法1:/etc/profile文件中加入以下内容

HISTTIMEFORMAT=”%F %T `whoami` ”
USER_IP=`who -u am I 2> /dev/null | awk ‘{print $NF}’ | sed -e ‘s/[()] //g`
export HISTTIMEFORMAT=” [%F %T] [`whoami`][${USER_IP}] ”

或者不添加第一行,直接添加后两行:
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "

法2:执行:source /etc/passwd

效果:

[root@server ~]# history
1 [2020-12-25 18:10:27][root][111.18.44.17]
2 [2020-12-20 10:35:16][root][111.18.44.17] cat /etc/redhat-release
3 [2020-12-20 14:02:20][root][111.18.44.17] exit
4 [2020-12-24 09:39:17][root][111.18.44.17] cat /etc/redhat-release
5 [2020-12-24 10:06:17][root][111.18.44.17] awk 'NR==5' /etc/passwd
6 [2020-12-24 10:08:31][root][111.18.44.17] whereis ifconfig

2.断行符“\”

对于符号比较多的长命令,尽管系统在到达行尾时会自动将长命令行换到下一行,但也可以使用反斜杠“\”再加回车,将一个较长的命令分成多行表达。增强命令的可读性,换行后系统自动显示提示符“>”,表示正在输入一个长命令,此时可继续在新行上输入命令的后续部分。

例:

[root@server ~]# ls /etc/sysconfig/network-scripts/ \
> /tmp

3.一行输入多个命令“;”

若要在一行上输入和执行多条较短的命令,可使用分号来分隔命令。

例:

[root@server ~]# date; ls /tmp ;history 

4.快捷方式

Ctrl+a 移动到当前行的开头

Ctrl+e 移动到当前行的结尾

Ctrl+l 清屏 Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身)

Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身)

Ctrl+R 可以使用该快捷键来搜索历史命令

引用上一条命令的最后一个参数

方法1:!$

方法2:Alt+.(可能与快捷键冲突)

方法3:Esc,.

Alt+. 无法使用的解决方法:

三、通配符

1.含义:通配符是一种特殊语句,主要有星号(*)、问号(?)等表示,用来模糊搜索文件,当查找目录或文件时, 可以使用通配符来代替一个或多个真正字符。

2.作用范围:目录和文件名

3.常见通配符:常用通配符包括 "*"、"?" 、"[ ]"、 "[^ ]" 、"[! ]"和"{}"

4.常用选项

字符含义
*匹符配任意字
匹配单个字符
[]匹配方括号中的任意一个,不能用于创建目录和文件
[^]匹配方括号中的任意一个字符或数字后进行取反,等同于[! ],表示范围可以 用".."或"—”,用于查找和删除目录和文件,不用于创建目录和文件
[!]匹配方括号中的任意一个字符或数字后进行取反, 等同于[^ ],表示范围可以 用".."或"—", 用于查找和删除目录和文件,不用于创建目录和文件
[?-?]匹配方括号范围内任意一个,用于查询、删除,但不能用于创建目录和文件
{string,string}匹配括号中的任意一个字符串,表示一个范围时,字符串之间的个数用".."

示例:

[root@server ~]# touch f.txt f{1..6}.txt f{11..16}.txt f{111..116}.txt
[root@server ~]# ls f*.txt
f111.txt  f114.txt  f11.txt  f14.txt  f1.txt  f4.txt  f.txt
f112.txt  f115.txt  f12.txt  f15.txt  f2.txt  f5.txt
f113.txt  f116.txt  f13.txt  f16.txt  f3.txt  f6.txt
[root@server ~]# ls f?.txt
f1.txt  f2.txt  f3.txt  f4.txt  f5.txt  f6.txt
[root@server ~]# ls f??.txt
f11.txt  f12.txt  f13.txt  f14.txt  f15.txt  f16.txt
[root@server ~]# ls f???.txt
f111.txt  f112.txt  f113.txt  f114.txt  f115.txt  f116.txt
[root@server ~]# ls f[135].txt
f1.txt  f3.txt  f5.txt
[root@server ~]# ls f[^135].txt
f2.txt  f4.txt  f6.txt
[root@server ~]# ls f[!135].txt
f2.txt  f4.txt  f6.txt
[root@server ~]# ls f{1,3,5}.txt
f1.txt  f3.txt  f5.txt
[root@server ~]# ls f{1..6}.txt
f1.txt  f2.txt  f3.txt  f4.txt  f5.txt  f6.txt

[135] 匹配1或3或5
[1-3] 匹配1或2或3
[^1-3] 匹配非1-3之外的
[!1-3] 匹配非1-3之外的

{}
{1,3,5}匹配1或2或3
{1..3} 匹配1或2或3

四、引号

1.分类:单引号:’’        双引号:””        反引号:``  等价于$()

2.一般情况下,单引号和双引号引用的字符串

[root@server ~]# echo 'hello world'
hello world
[root@server ~]# echo "hello world"
hello world

3.单引号和双引号区别:

(1)单引号:所见所得

(2)双引号:引用变量值,可以包含命令结果

[root@server ~]# echo "hello $USER"
hello root
[root@server ~]# echo 'hello $USER'
hello $USER

(3)反引号:执行命令

[root@server ~]# echo 'hello `whoami`'
hello `whoami`
[root@server ~]# echo "hello `whoami`"
hello root

4.选项及作用

符号作用
'单引号,输出时,将单引号内的所有内容都原样输出,称为强引用
"双引号,输出双引号内的所有内容,如果内容中有变量,特殊转义符等;会首先把变量,转义符解析出结果,然后再输出最终内容,再变成强引用
`反引号,一般用于引用命令,执行的时候会被执行,与$()作用相同
$()与 ` 作用相同
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐