Linux基础命令(二)

Linux基础命令(二)


目录
  • Linux基础命令(二)
    • 1. 压缩,解压缩命令
      • 1.1 gzip
      • 1.2 gunzip
      • 1.3 zcat
      • 1.4 bzip2
      • 1.5 bunzip2
      • 1.6 bzcat
      • 1.7 xz
      • 1.8 unxz
      • 1.9 xzcat
      • 1.10 zip
      • 1.11 unzip
      • 1.12 tar
    • 2. 查看文本
      • 2.1 cat
      • 2.2 more
      • 2.3 less
      • 2.4 head
      • 2.5 tail
    • 3.文本处理
      • 3.1 cut
      • 3.2 sed
      • 3.2 awk
    • 4. 文本排序
      • 4.1 sort
      • 4.2 uniq
    • 5. 文本统计
      • 5.1 wc(word count)
    • 6. 大小统计
      • 6.1 du
      • 6.2 df
    • 7. 主机名管理
      • 7.1 hostname
      • 7.2 hostnamectl
    • 8. 其他
      • 8.1 sleep
      • 8.2 time
      • 8.3 clear
      • 8.4 whoami | who | w
      • 8.5 which
      • 8.6 date
      • 8.7 ldd

1. 压缩,解压缩命令

压缩格式:gz、bz2、xz、zip、Z

1.1 gzip

压缩,压缩后文件以.gz结尾,压缩后会删除原文件

[root@zzd ~]# gzip 1.txt 		//将1.txt压缩,以.gz结尾

-d 解压缩,解压完成后删除原文件

[root@zzd ~]# gzip -d 1.txt.gz 		//将1.txt.gz解压

-# #用1-9代替,指定压缩比,默认为6

1.2 gunzip

解压缩,解压缩完成后会删除原文件

[root@zzd ~]# gunzip 1.txt.gz 		//将1.txt.gz解压

1.3 zcat

不解压的情况下查看文件的内容

[root@zzd ~]# zcat 1.txt.gz 		//不解压,查看压缩文件里的内容
1 2 4
2 4 6
5 6 8
3 5 9
2 8 5
5 6 8
1 3 7
1 2 4
2 8 5
1 2 4
3 5 9
2 4 6

1.4 bzip2

压缩,压缩后文件以.bz2结尾,压缩后删除原文件。bzip2是一款比gzip有着更大压缩比的压缩工具,使用格式相近

[root@zzd ~]# bzip2 1.txt 		//将1.txt压缩,以.bz2结尾

-d 解压缩,解压完成后删除原文件

[root@zzd ~]# bzip2 -d 1.txt.bz2	//将1.txt.bz2文件解压

-k 压缩时保留原文件

[root@zzd ~]# ls
1.txt
[root@zzd ~]# bzip2 -k 1.txt 		//压缩完后保留原文件
[root@zzd ~]# ls
1.txt  1.txt.bz2

-# #用1-9代替,指定压缩比,默认为6

1.5 bunzip2

解压缩,解压缩完成后删除原文件

[root@zzd ~]# bunzip2 1.txt.bz2		//将1.txt。bz2文件解压

1.6 bzcat

不解压的情况下查看文件的内容

[root@zzd ~]# bzcat 1.txt.bz2 		//不解压,查看文件内容
1 2 4
2 4 6
5 6 8
3 5 9
2 8 5
5 6 8
1 3 7
1 2 4
2 8 5
1 2 4
3 5 9
2 4 6

1.7 xz

压缩,压缩后文件以.xz结尾,压缩完成后删除原文件。比bzip2有着更大压缩比的压缩工具,使用格式近似

[root@zzd ~]# xz 1.txt		//将文件1.txt压缩,以.xz结尾

-d 解压缩,解压缩后删除原文件

[root@zzd ~]# xz -d 1.txt.xz 	//将文件1.txt.xz解压

-k 压缩时保留原文件

[root@zzd ~]# xz -k 1.txt		//压缩时保留原文件

-# #用1-9代替,指定压缩比,默认为6

1.8 unxz

解压,解压完成后删除原文件

[root@zzd ~]# unxz 1.txt.xz 	//解压1.txt。xz

1.9 xzcat

不解压的情况下查看文件内容

[root@zzd ~]# xzcat 1.txt.xz 		//不解压,查看文件内容
1 2 4
2 4 6
5 6 8
3 5 9
2 8 5
5 6 8
1 3 7
1 2 4
2 8 5
1 2 4
3 5 9
2 4 6

1.10 zip

既归档又压缩的工具,zip可以压缩目录,压缩完成后保留原文件

[root@zzd ~]# zip test.zip 1.txt  	//将1.txt进行归档并压缩为test.zip

[root@zzd ~]# zip Test-dir.zip test/*	//将目录test/归档并压缩为Test-dir.zip

1.11 unzip

解压缩,解压完成后不删除原文件

[root@zzd ~]# unzip Test-dir.zip 		//将Test-dir.zip解压

1.12 tar

归档工具,只归档不压缩
Linux的文件没有后缀
-c 创建归档文件
-f 操作的归档文件,此选项后面只能跟想要操作文件名

[root@zzd ~]# tar -cf test.tar test/*		//将test目录归档为test.tar

-x 还原归档

[root@zzd ~]# tar xf test.tar			//将test.tar还原归档

-v 显示归档过程

[root@zzd ~]# tar -vcf test.tar test/*		//将test目录归档为test.tar并显示归档过程
test/test1/
test/test2/

-p 归档时保留权限信息,只有管理员才能使用此选项

-C 将展开归档的文件保存至指定目录下

[root@zzd ~]# tar -xf test.tar -C /opt/		//将test。tar还原归档到指定目录
[root@zzd ~]# ls /opt/
test

-tf 不展开归档,查看文件归档了那些文件

[root@zzd ~]# tar -tf test.tar 		//不展开归档,查看归档文件test.tar的内容
test/
test/test1/
test/test2/

-zcf 归档并调用gzip压缩工具
-jcf 归档并调用bzip2压缩工具
-Jcf 归档并调用xz压缩工具

[root@zzd ~]# tar -zcf test.tar.gz test/		//归档并调用gzip压缩工具
[root@zzd ~]# file test.tar.gz 				//查看test.tar.gz的文件类型
test.tar.gz: gzip compressed data, last modified: Sat Jul  2 09:51:50 2022, from Unix, original size 10240

[root@zzd ~]# tar -jcf test.tar.bz2 test/		//归档并调用baip2压缩工具
[root@zzd ~]# file test.tar.bz2 			//查看test.tar.bz2的文件类型
test.tar.bz2: bzip2 compressed data, block size = 900k

[root@zzd ~]# tar -Jcf test.tar.xz test/		//归档并调用xz压缩工具
[root@zzd ~]# file test.tar.xz				//查看test.tar.xz的文件类型
test.tar.xz: XZ compressed data

2. 查看文本

2.1 cat

拼接文件内容并输出至标准输出(屏幕)
-n 显示行号

[root@zzd ~]# cat 001			//将001文件的内容标准输出
ashfasdf

[root@zzd ~]# cat 001 002 003		//将001、002、003的内容凭借并标准输出
ashfasdf
sdlvnnxcbxbf
nstelazbf

[root@zzd ~]# cat -n 001 002 003		//显示行号
     1	ashfasdf
     2	sdlvnnxcbxbf
     3	nstelazbf
    
//使用cat查看文件内容时会将文件的所有内容全部加载到内存,所以应当避免使用cat查看打开巨大文件

2.2 more

全屏查看文件内容,只能从前往后看,不能从后往前看,文件内容显示完后退出

[root@zzd ~]# more anaconda-ks.cfg

2.3 less

全屏显示文件内容,可从前往后亦可从后往前(“空格”向后翻,“b”向前翻,“q”退出),推荐使用

[root@zzd ~]# less anaconda-ks.cfg 

2.4 head

从头部开始打印文件内容,默认打印10行
-n 指定要打印的行数,可以是-n 5也可以是-5

[root@zzd ~]# head -5 passwd 			//打印passwd头部开始的5行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

2.5 tail

从尾部开始打印文件内容,默认打印10行
-n 指定要打印的行数,可以是-n 5也可以是-5

[root@zzd ~]# tail -5 passwd 			//打印passwd尾部开始的5行
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:996:993:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:995:992:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin


//如果想要打印passwd文件里的第五行该怎么办?
[root@zzd ~]# head -5 passwd | tail -1
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

3.文本处理

3.1 cut

截取文件内容
-d 指定字段分隔符
-f 指定要显示的字段
     -f 1,3 显示1和3
     -f 1-3 显示1到3

[root@zzd ~]# cat qwer			//标准输出qwer文件内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@zzd ~]# cut -d : -f 1,3 qwer 		//以":"为分隔符,截取文件qwer的第1列和第3列
root:0
bin:1
daemon:2
adm:3
lp:4

[root@zzd ~]# cut -d : -f 1-3 qwer 		//以":"为分隔符,截取文件qwer的第1列到第3列
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4

//cut只能截取一些非常规范的文件内容,如果是一个内容不规范的文件,那么cut就无能为力了。例如,以空格为分隔符,想要截取磁盘使用情况的第四列就会出现以下情况
[root@zzd ~]# df -h | cut -d " " -f 4





17G



//这种情况就需要用到awk命令,在3.2会提及

3.2 sed

基于行的过滤和转换文本的流编辑器

#sed的功能很强大,可以实现对某个文件的删、改、查
一.查
[root@zzd ~]# sed -n "2p" qwer 		//-n可以关闭sed默认的打印功能,2p表示打印第二行
bin:x:1:1:bin:/bin:/sbin/nologin

[root@zzd ~]# sed "2p" qwer 		//不加上选项-n,在默认打印的基础上打印第二行,第二行会出现两次
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@zzd ~]# sed -n "2p;5p" qwer		//关闭sed默认的打印功能,打印第2行和第5行
bin:x:1:1:bin:/bin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@zzd ~]# sed -n "2,4p" qwer		//关闭sed默认的打印功能,打印第2行到第4行
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

二.改
[root@zzd ~]# sed "s/:/;/" qwer			//将文件qwer每行的第一个":"替换为";"
root;x:0:0:root:/root:/bin/bash
bin;x:1:1:bin:/bin:/sbin/nologin
daemon;x:2:2:daemon:/sbin:/sbin/nologin
adm;x:3:4:adm:/var/adm:/sbin/nologin
lp;x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@zzd ~]# sed "s/:/;/3" qwer 		//将每行的第3个":"替换为";"
root:x:0;0:root:/root:/bin/bash
bin:x:1;1:bin:/bin:/sbin/nologin
daemon:x:2;2:daemon:/sbin:/sbin/nologin
adm:x:3;4:adm:/var/adm:/sbin/nologin
lp:x:4;7:lp:/var/spool/lpd:/sbin/nologin

[root@zzd ~]# sed "s/:/;/g" qwer		//将整个文件里所有的":"都替换为";"
root;x;0;0;root;/root;/bin/bash
bin;x;1;1;bin;/bin;/sbin/nologin
daemon;x;2;2;daemon;/sbin;/sbin/nologin
adm;x;3;4;adm;/var/adm;/sbin/nologin
lp;x;4;7;lp;/var/spool/lpd;/sbin/nologin

[root@zzd ~]# sed -n "2p" qwer | sed "s/:/;/g" 或者  head -2 qwer | tail -1 | sed "s/:/;/g"		//将文件的第二行的所有":"改为";"	
bin;x;1;1;bin;/bin;/sbin/nologin

三.删
[root@zzd ~]# sed "2d" qwer			//删除第2行
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@zzd ~]# sed "2d;5d" qwer			//删除第2行和第5行
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

[root@zzd ~]# sed -e "2d" -e "5d" qwer		//删除第2行和第5行
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

[root@zzd ~]# sed "2,4d" qwer 			//删除第2行到第4行
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

//以上二、三的所有的命令都是预览,并没有真正的修改,如果想要真正的修改需要加上"-i"选项

3.2 awk

基于列的文本报告工具

[root@zzd ~]# awk -F":" "{print $1,$4}" qwer		//以":"为分隔符,截取第1列和第4列
root 0
bin 1
daemon 2
adm 4
lp 7
[root@zzd ~]# awk -F":" "{print $1":"$4}" qwer
root:0
bin:1
daemon:2
adm:4
lp:7

[root@zzd ~]# awk -F":" "NR==1{print $1,$4}" qwer		//以":"为分隔符,截取第1行第1列和第4
root 0

[root@zzd ~]# awk  "NR==1{print}" qwer		//截取第一行
root:x:0:0:root:/root:/bin/bash

//以空格为分隔符,截取磁盘使用情况的第四列
[root@zzd ~]# df -h | awk -F" " "{print $4}" 
Avail
451M
471M
464M
471M
16G
0
839M
95M

4. 文本排序

4.1 sort

[root@zzd ~]# cat 1.txt 
1 2 4
2 4 6
5 6 8
3 5 9
5 6 8
1 3 7
1 2 4
1 2 4
[root@zzd ~]# sort 1.txt 
1 2 4
1 2 4
1 2 4
1 3 7
2 4 6
3 5 9
5 6 8
5 6 8

-n 根据数值大小进行排序

[root@zzd ~]# sort 1.txt 		//再添加一组数10 20 30再进行排序
10 20 30
1 2 4
1 2 4
1 2 4
1 3 7
2 4 6
3 5 9
5 6 8
5 6 8

[root@zzd ~]# sort -n 1.txt 		//以数值进行排序
[root@zzd ~]# sort -n 1.txt 
1 2 4
1 2 4
1 2 4
1 3 7
2 4 6
3 5 9
5 6 8
5 6 8
10 20 30

-r 逆序排序

[root@zzd ~]# sort -r 1.txt 		//逆序排序
5 6 8
5 6 8
3 5 9
2 4 6
1 3 7
1 2 4
1 2 4
1 2 4
10 20 30

-t 指定字段分隔符
-k 以哪个字段为关键字进行排序

[root@zzd ~]# sort -t " " -k 3 1.txt 	//以空格为分隔符并且以第3列为关键字进行排序
10 20 30
1 2 4
1 2 4
1 2 4
2 4 6
1 3 7
5 6 8
5 6 8
3 5 9

-u 去重,排序后相同的行只显示一次

[root@zzd ~]# sort -nu 1.txt 	//以数值进行排序并只显示一次重复的行
1 2 4
2 4 6
3 5 9
5 6 8
10 20 30

-f 排序时忽略字符大小写

[root@zzd ~]# cat ABC 
qwe
Csd
aff
afgg
aff
Afgg
asx
[root@zzd ~]# sort ABC 		//排序
aff
aff
afgg
Afgg
asx
Csd
qwe
[root@zzd ~]# sort -uf ABC 		//进行排序,重复行只显示一次并且忽略大小写
aff
afgg
asx
Csd
qwe

4.2 uniq

报告重复行(连续且完全相同方为重复)
-c 显示文件中行的重复次数
-d 只显示重复的行
-u 只显示未重复的行

[root@zzd ~]# sort -n 1.txt | uniq -c  		//显示文件中行的重复次数
      3 1 2 4
      1 1 3 7
      1 2 4 6
      1 3 5 9
      2 5 6 8
      1 10 20 30

[root@zzd ~]# sort -n 1.txt | uniq -d		//显示文件中重复的行
1 2 4
5 6 8

[root@zzd ~]# sort -n 1.txt | uniq -cd		//显示文件中重复的行,并显示重复次数
      3 1 2 4
      2 5 6 8

[root@zzd ~]# sort -n 1.txt | uniq -u		//显示文件中未重复的行
1 3 7
2 4 6
3 5 9
10 20 30

5. 文本统计

5.1 wc(word count)

-c 显示字节数
-l 显示行数
-w 显示单词数

[root@zzd ~]# wc 1.txt 		//统计文件的行数,单词数,字节数
 9 27 57 1.txt

[root@zzd ~]# wc -l 1.txt 		//统计文件的行数
9 1.txt

[root@zzd ~]# wc -w 1.txt 		//统计文件单词数
27 1.txt

[root@zzd ~]# wc -c 1.txt 		//统计文件字节数
57 1.txt

6. 大小统计

6.1 du

查看文件或目录占用磁盘空间大小
-h 以人类友好的方式显示大小
-s 显示总的占用空间大小

[root@zzd ~]# du -sh big 		//查看文件big占磁盘空间的大小
1.0G	big

6.2 df

报告文件系统磁盘空间的使用情况
-h 以人类友好方式显示大小
-i 显示inode信息

[root@zzd ~]# df -h		//以人类友好方式显示大小
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             451M     0  451M   0% /dev
tmpfs                471M     0  471M   0% /dev/shm
tmpfs                471M  6.5M  464M   2% /run
tmpfs                471M     0  471M   0% /sys/fs/cgroup
/dev/mapper/cs-root   17G  1.7G   16G  10% /
/dev/sr0             9.0G  9.0G     0 100% /mnt
/dev/sda1           1014M  176M  839M  18% /boot
tmpfs                 95M     0   95M   0% /run/user/0

[root@zzd ~]# df -i 		//显示文件系统inode使用情况
Filesystem           Inodes IUsed   IFree IUse% Mounted on
devtmpfs             115417   362  115055    1% /dev
tmpfs                120432     1  120431    1% /dev/shm
tmpfs                120432   555  119877    1% /run
tmpfs                120432    17  120415    1% /sys/fs/cgroup
/dev/mapper/cs-root 8910848 43752 8867096    1% /
/dev/sr0                  0     0       0     - /mnt
/dev/sda1            524288   301  523987    1% /boot
tmpfs                120432     5  120427    1% /run/user/0

7. 主机名管理

7.1 hostname

查看或临时修改主机名,重启后失效,一般用于查看主机名

[root@zzd ~]# hostname		//查看主机名
zzd

[root@zzd ~]# hostname zic		//临时修改主机名
[root@zzd ~]# bash
[root@zic ~]# 
[root@zic ~]# cat /etc/hostname 
zzd			#可以看到主机名并没有写进主机名文件,系统重启时会读取此文件,所以hostname修改主机名是临时的

7.2 hostnamectl

永久修改主机名,直接写入主机名文件,重启后仍然有效

[root@zic ~]# hostnamectl set-hostname zic		//永久修改主机名
[root@zic ~]# bash
[root@zic ~]# cat /etc/hostname 
zic

8. 其他

8.1 sleep

让系统睡眠

[root@zic ~]# sleep 100		//让系统睡眠100秒

8.2 time

显示命令执行时间

[root@zic ~]# time sleep 3		//让系统睡眠3秒并计算此命令执行所用时间
real	0m3.001s
user	0m0.001s
sys	0m0.000s

8.3 clear

清屏,和Ctrl+l一个性质

8.4 whoami | who | w

[root@zic ~]# whoami		//查看当前终端登录的用户
root

[root@zic ~]# who am i		//查看当前终端登录的用户
root     pts/0        2022-07-02 11:29 (192.168.169.1)

[root@zic ~]# who			//查看有哪些用户在线
root     pts/0        2022-07-02 11:29 (192.168.169.1)
root     pts/1        2022-07-02 20:58 (192.168.169.1)
zic      pts/2        2022-07-02 20:58 (192.168.169.1)

[root@zic ~]# w			//查看当前在线的用户和正在执行的命令
 21:01:46 up  9:32,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.169.1    11:29    0.00s  3.71s  0.00s w
root     pts/1    192.168.169.1    20:58    3:14   0.00s  0.00s sleep 800
zic      pts/2    192.168.169.1    20:58    3:17   0.00s  0.00s -bash

8.5 which

显示指定命令的绝对路径

[root@zic ~]# which ls		//查看ls命令的绝对路径
alias ls="ls --color=auto"
	/usr/bin/ls
	
[root@zic ~]# which cd		//查看cd命令的绝对路径
/usr/bin/cd

8.6 date

显示或设置日期与时间

[root@zzd ~]# date			// date不加任何参数用于显示当前系统的时间
Sat Jul  2 15:51:20 CST 2022

[root@zzd ~]# date "+%Y-%m-%d %H:%M:%S"		// 格式化输出时间
2022-07-02 15:59:54

[root@zzd ~]# date -s "2022-07-02 16:05:00"		// 带上参数-s可以修改时间
Sat Jul  2 16:05:00 CST 2022

8.7 ldd

查看指定程序有哪些依赖库文件

[root@zic ~]# ldd /usr/bin/ls			//查看ls命令执行所需的依赖库
	linux-vdso.so.1 (0x00007fffeef5c000)
	libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f556da36000)
	libcap.so.2 => /lib64/libcap.so.2 (0x00007f556d830000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f556d46e000)
	libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007f556d1ea000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f556cfe6000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f556de83000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f556cdc6000)

原文地址:https://www.cnblogs.com/zicnotes/archive/2022/07/02/16438576.html