Linux基础命令三
Linux基础三
基础命令
压缩解压命令
gz,bz2,xz,压缩解压命令
-# //#用1-9代替,指定压缩比,默认为6
[root@lnh ~]# touch 1101
[root@lnh ~]# touch 1102
[root@lnh ~]# touch 1103
[root@lnh ~]# ls
1101 1102 1103 anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# gzip 1101
[root@lnh ~]# bzip2 1102
[root@lnh ~]# xz 1103
[root@lnh ~]# ls
1101.gz 1102.bz2 1103.xz anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# gzip -d 1101.gz
[root@lnh ~]# bzip2 -d 1102.bz2
[root@lnh ~]# xz -d 1103.xz
[root@lnh ~]# ls
1101 1102 1103 anaconda-ks.cfg tushanbu xbz
//gz.bz2,xz,压缩和解压后其文件和压缩包都会被删除没有保存
[root@lnh ~]# gzip 1101
[root@lnh ~]# bzip2 1102
[root@lnh ~]# xz 1103
[root@lnh ~]# ls
1101.gz 1102.bz2 1103.xz anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# gunzip 1101.gz
[root@lnh ~]# bunzip2 1102.bz2
[root@lnh ~]# unxz 1103.xz
[root@lnh ~]# ls
1101 1102 1103 anaconda-ks.cfg tushanbu xbz
//此解压方式一般都不常用,一般都是用上面-d的解压方式
[root@lnh ~]# gzip 1101
[root@lnh ~]# bzip2 1102
[root@lnh ~]# xz 1103
[root@lnh ~]# ls
1101.gz 1102.bz2 1103.xz anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# gzip -dk 1101.gz
[root@lnh ~]# ls
1101 1101.gz 1102.bz2 1103.xz anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# bzip2 -dk 1102.bz2
[root@lnh ~]# xz -dk 1103.xz
[root@lnh ~]# ls
1101 1102 1103 anaconda-ks.cfg xbz
1101.gz 1102.bz2 1103.xz tushanbu
//-k是保留原文件进行压缩
[root@lnh ~]# vim 1101
[root@lnh ~]# vim 1102
[root@lnh ~]# vim 1103
[root@lnh ~]# cat 1101
hello tushanbu
[root@lnh ~]# cat 1102
xbz hello
[root@lnh ~]# cat 1103
hello lxb
[root@lnh ~]# gzip 1101
[root@lnh ~]# bzip2 1102
[root@lnh ~]# xz 1103
[root@lnh ~]# ls
1101.gz 1102.bz2 1103.xz anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# zcat 1101.gz
hello tushanbu
[root@lnh ~]# bzcat 1102.bz2
xbz hello
[root@lnh ~]# xzcat 1103.xz
hello lxb
[root@lnh ~]# gzip -cd 1101.gz
hello tushanbu
[root@lnh ~]# bzip2 -cd 1102.bz2
xbz hello
[root@lnh ~]# xz -cd 1103.xz
hello lxb
//不解压查看压缩文件里面有啥子,虽然两种方法都可以,但是一般我们都是使用-cd的方法进行查看压缩文件里面是什么东西
zip,Z压缩解压命令
[root@lnh ~]# touch 1101
[root@lnh ~]# touch 1102
[root@lnh ~]# touch 1103
[root@lnh ~]# ls
1101 1102 1103 anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# gzip 1101
[root@lnh ~]# bzip2 1102
[root@lnh ~]# xz 1103
[root@lnh ~]# ls
1101.gz 1102.bz2 1103.xz anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# zip lnh.zip 110*
adding: 1101.gz (deflated 20%)
adding: 1102.bz2 (stored 0%)
adding: 1103.xz (deflated 3%)
[root@lnh ~]# ls
1101.gz 1102.bz2 1103.xz anaconda-ks.cfg lnh.zip tushanbu xbz
[root@lnh ~]# file lnh.zip
lnh.zip: Zip archive data, at least v2.0 to extract
//此处是表示进行了归档打包
[root@lnh ~]# rm -f 110*
[root@lnh ~]# ls
anaconda-ks.cfg lnh.zip tushanbu xbz
[root@lnh ~]# unzip lnh.zip
Archive: lnh.zip
inflating: 1101.gz
extracting: 1102.bz2
inflating: 1103.xz
[root@lnh ~]# ls
1101.gz 1102.bz2 1103.xz anaconda-ks.cfg lnh.zip tushanbu xbz
//可以发现解压后压缩包没有被删除
root@lnh ~]# file 110*
1101.gz: gzip compressed data, was "1101", last modified: Thu Jun 30 00:16:47 2022, from Unix, original size 0
1102.bz2: bzip2 compressed data, block size = 900k
1103.xz: XZ compressed data
//此处是被进行压缩了的意思
//zip是既可以进行压缩又可以归档的,上面的gz,bz2,xz,是只能进行压缩
//Z这个现在我们都几乎不用
tar归档工具,只归档不压缩 (只能对gzip,bz2,xz进行调用解压缩,不能对zip的进行使用)
//-zcf,zxf -jcf,jxf -Jcf,Jxf对应gzip,bz2,xz的压解缩,也可以直接用xf解压这三种格式
root@lnh ~]# ls
1101 1102 1103 anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# tar -cf test.tar 1101
[root@lnh ~]# ls
1101 1102 1103 anaconda-ks.cfg test.tar tushanbu xbz
[root@lnh ~]# file test.tar
test.tar: POSIX tar archive (GNU)
//此处进行了归档
root@lnh ~]# tar -zcf test.tar.gz 1101
[root@lnh ~]# ls
1101 1102 1103 anaconda-ks.cfg test.tar test.tar.gz tushanbu xbz
[root@lnh ~]# file test.tar*
test.tar: POSIX tar archive (GNU)
test.tar.gz: gzip compressed data, last modified: Thu Jun 30 01:01:25 2022, from Unix, original size 10240
//test.tar是进行了归档,test.tar.gz此处是tar调用了gz的格式进行了压缩
[root@lnh ~]# tar -cf xxb.tar 1102
[root@lnh ~]# file xxb.tar
xxb.tar: POSIX tar archive (GNU)
//进行了归档
[root@lnh ~]# tar -jcf xxb.tar.bz2 1102
[root@lnh ~]# ls
1101 1103 test.tar tushanbu xxb.tar
1102 anaconda-ks.cfg test.tar.gz xbz xxb.tar.bz2
[root@lnh ~]# file xxb.tar*
xxb.tar: POSIX tar archive (GNU)
xxb.tar.bz2: bzip2 compressed data, block size = 900k
//xxb.tar进行了归档,xxb.tar.bz2此处是tar调用了bz2的格式进行了压缩
oot@lnh ~]# tar -cf bbx.tar 1103
[root@lnh ~]# ls
1101 1103 bbx.tar test.tar.gz xbz xxb.tar.bz2
1102 anaconda-ks.cfg test.tar tushanbu xxb.tar
[root@lnh ~]# file bbx.tar
bbx.tar: POSIX tar archive (GNU)
//进行了归档
[root@lnh ~]# tar -Jcf bbx.tar.xz 1103
[root@lnh ~]# file bbx.tar*
bbx.tar: POSIX tar archive (GNU)
bbx.tar.xz: XZ compressed data
//bbx.tar进行了归档,bbx.tar.xz此处是tar调用了xz格式进行了压缩
[root@lnh ~]# tar -zcf 1111.tar.gz 1101
[root@lnh ~]# ls
1101 1103 1111.tar.gz 3333.tar tushanbu
1102 1111.tar 2222.tar anaconda-ks.cfg xbz
[root@lnh ~]# file 1111.tar.gz
1111.tar.gz: gzip compressed data, last modified: Thu Jun 30 02:15:32 2022, from Unix, original size 10240
[root@lnh ~]# tar -jcf 1111.tar.gz 1101
[root@lnh ~]# tar -zxf 1111.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
[root@lnh ~]# file 1111.tar.gz
1111.tar.gz: bzip2 compressed data, block size = 900k
[root@lnh ~]# tar -jxf 1111.tar.gz
[root@lnh ~]# ls
1101 1103 1111.tar.gz 3333.tar tushanbu
1102 1111.tar 2222.tar anaconda-ks.cfg xbz
//可以看见我们首先是用tar调用了gzip的格式对其进行压缩,然后进行查看发现是gz的格式,然后我们又用tar调用bz2的格式对其进行压缩,因为这个是我们自己提前知道改了格式,所以知道不能直接用gzip的格式去解压,不然就会出现上面那样子报错的情况,在linux里面是不存在什么后缀名的所以我们不能被其外表欺骗了,要先查看其格式,再用其正确的格式去解压
-x //还原归档
-v //显示归档过程
-p //归档时保留权限信息。只有管理员才有权限用此选项
-C //将展开的归档文件保存至指定目录下
--delete //从归档文件中删除文件
--xattrs //在归档时保留文件的扩展属性信息
-c //创建归档文件
-f file.tar //操作的归档文件(只能在其后面接文件名)
查看文本
cat拼接文件内容并输出至标准输出(屏幕)
-n 显示行号
[root@lnh ~]# touch 1111
[root@lnh ~]# touch 1112
[root@lnh ~]# touch 1113
[root@lnh ~]# vim 1111
[root@lnh ~]# vim 1112
[root@lnh ~]# vim 1113
[root@lnh ~]# cat 1111
xxxxxxx
[root@lnh ~]# cat 1112
wwwwww
[root@lnh ~]# cat 1113
ccccccc
[root@lnh ~]# cat 1111 1112
xxxxxxx
wwwwww
[root@lnh ~]# cat 1111 1112 1113
xxxxxxx
wwwwww
ccccccc
//可以进行拼接内容
[root@lnh ~]# cat -n 1111 1112 1113
1 xxxxxxx
2
3 wwwwww
4 ccccccc
//-n显示有几行
//cat 只能用于小的文件查看,大的文件查看不了(因为它会一下子把打开的文件全部加载到你的内存里面,就会造成你的内存不够出现oom把你虚拟机弄死机)
more全屏查看文本文件内容,只能从前往后,不能从后往前文件内容,显示完后自动退出,不建议使用
[root@lnh ~]# ls
1111 1112 1113 anaconda-ks.cfg tushanbu xbz
[root@lnh ~]# more anaconda-ks.cfg
#version=RHEL8
# Use graphical install
graphical
%packages
^minimal-environment
kexec-tools
%end
# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network --hostname=localhost.localdomain
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
autopart
# Partition clearing information
clearpart --none --initlabel
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# Root password
rootpw --iscrypted $6$V1klyt8LakL.Q9IE$YkxB.X16Ya3ljFYQILaSZRpfaJQ7gARtCLgBG
f1rNeRT48PKEPq1t/n9sE1w7dmWIk0oAGWSuqgfwpYln9D3t/
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
//此处的文件比较小所以可以翻着看,一般公司里面的文件都比较大,所以不推荐使用
less 全屏查看文本文件内容,可从前往后亦可从后往前。推荐使用
[root@lnh ~]# less anaconda-ks.cfg
#version=RHEL8
# Use graphical install
graphical
%packages
^minimal-environment
kexec-tools
%end
# Keyboard layouts
keyboard --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network --hostname=localhost.localdomain
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
autopart
# Partition clearing information
clearpart --none --initlabel
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# Root password
rootpw --iscrypted $6$V1klyt8LakL.Q9IE$YkxB.X16Ya3ljFYQILaSZRpfaJQ7gARtCLgBGf1rNeRT48PKEPq1t/n9sE1w7dmWIk0oAGWSuqgfwpYln9D3t/
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@lnh ~]#
//按:然后q就退出来
//G到最后一行,小g到第一行,两个小g就是第二行依次推
head从头部(前面)开始打印文件内容,默认打印10行
-n指定要打印的行数,可以是-n 15也可以是-15
[root@lnh ~]# head anaconda-ks.cfg
#version=RHEL8
# Use graphical install
graphical
%packages
^minimal-environment
kexec-tools
%end
[root@lnh ~]# cat -n anaconda-ks.cfg
1 #version=RHEL8
2 # Use graphical install
3 graphical
4
5
6 %packages
7 @^minimal-environment
8 kexec-tools
9
10 %end
11
12 # Keyboard layouts
13 keyboard --xlayouts='us'
14 # System language
15 lang en_US.UTF-8
16
17 # Network information
18 network --bootproto=dhcp --device=ens33 --ipv6=auto --activate
19 network --hostname=localhost.localdomain
20
21 # Use CDROM installation media
22 cdrom
23
24 # Run the Setup Agent on first boot
25 firstboot --enable
26
27 ignoredisk --only-use=sda
28 autopart
29 # Partition clearing information
30 clearpart --none --initlabel
31
32 # System timezone
33 timezone Asia/Shanghai --isUtc --nontp
34
35 # Root password
36 rootpw --iscrypted $6$V1klyt8LakL.Q9IE$YkxB.X16Ya3ljFYQILaSZRpfaJQ7gARtCLgBGf1rNeRT48PKEPq1t/n9sE1w7dmWIk0oAGWSuqgfwpYln9D3t/
37
38 %addon com_redhat_kdump --enable --reserve-mb='auto'
39
40 %end
41
42 %anaconda
43 pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
44 pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
45 pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
46 %end
//可以看见一般hend查看时都是默认前面10行的内容
tail查看文本文件从尾部开始的内容
-n指定要打印的行数,可以是-n 15也可以是-15
[root@lnh ~]# tail anaconda-ks.cfg
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@lnh ~]# cat -n anaconda-ks.cfg
1 #version=RHEL8
2 # Use graphical install
3 graphical
4
5
6 %packages
7 @^minimal-environment
8 kexec-tools
9
10 %end
11
12 # Keyboard layouts
13 keyboard --xlayouts='us'
14 # System language
15 lang en_US.UTF-8
16
17 # Network information
18 network --bootproto=dhcp --device=ens33 --ipv6=auto --activate
19 network --hostname=localhost.localdomain
20
21 # Use CDROM installation media
22 cdrom
23
24 # Run the Setup Agent on first boot
25 firstboot --enable
26
27 ignoredisk --only-use=sda
28 autopart
29 # Partition clearing information
30 clearpart --none --initlabel
31
32 # System timezone
33 timezone Asia/Shanghai --isUtc --nontp
34
35 # Root password
36 rootpw --iscrypted $6$V1klyt8LakL.Q9IE$YkxB.X16Ya3ljFYQILaSZRpfaJQ7gARtCLgBGf1rNeRT48PKEPq1t/n9sE1w7dmWIk0oAGWSuqgfwpYln9D3t/
37
38 %addon com_redhat_kdump --enable --reserve-mb='auto'
39
40 %end
41
42 %anaconda
43 pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
44 pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
45 pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
46 %end
//可以看见tail查看时一般都是默认从后面开始的10行内容
//查看第五行的命令
[root@lnh ~]# head -5 anaconda-ks.cfg | tail -1
//查看倒数第二行的命令
[root@lnh ~]# tail -2 anaconda-ks.cfg | head -1
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
文本处理
cut 截取文本内容
-d指定字段分隔符,默认是空格
-f指定要显示的字段
[root@lnh ~]# cp /etc/passwd .
[root@lnh ~]# ls
anaconda-ks.cfg passwd tushanbu
//把etc下面的passwd这个文件复制到当前这个位置
//下面是正规的格式
[root@lnh ~]# head -3 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
//查看passwd这个文件前三行的内容
//六个冒号隔开的七个内容(七列)
[root@lnh ~]# cut -d: -f1,6 passwd
root:/root
bin:/bin
daemon:/sbin
adm:/var/adm
lp:/var/spool/lpd
sync:/sbin
shutdown:/sbin
halt:/sbin
mail:/var/spool/mail
operator:/root
games:/usr/games
ftp:/var/ftp
nobody:/
dbus:/
systemd-coredump:/
systemd-resolve:/
tss:/dev/null
polkitd:/
sssd:/
sshd:/var/empty/sshd
rngd:/var/lib/rngd
//-d指定,冒号作分隔符 -f显示内容 后面接文件名(此处是查看的是第一列和第六列的内容)如果是第一列到第六列就去掉上面那个逗号改为横杠
[root@lnh ~]# cut -d: -f1,6 passwd |head -2
root:/root
bin:/bin
//第一列和第六列的前两行
[root@lnh ~]# cut -d: -f1,6 passwd |tail -2
sshd:/var/empty/sshd
rngd:/var/lib/rngd
//第一列和第六列的后两行
awk基于列的文本报告工具
[root@lnh ~]# head -3 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@lnh ~]# awk -F: '{print $1,$6}' passwd |head -2
root /root
bin /bin
//这种是不规则的格式,所以用awk来进行表示,-F是指定 后面接需要进行打印的东西 再加上文件名
此处是查看第一列和第六列前两行的内容
[root@lnh ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 875M 0 875M 0% /dev
tmpfs 895M 0 895M 0% /dev/shm
tmpfs 895M 8.7M 886M 1% /run
tmpfs 895M 0 895M 0% /sys/fs/cgroup
/dev/mapper/cs-root 66G 2.3G 63G 4% /
/dev/mapper/cs-home 32G 260M 32G 1% /home
/dev/sda1 1014M 178M 837M 18% /boot
tmpfs 179M 0 179M 0% /run/user/0
[root@lnh ~]# df -h|awk '{print $4}'
Avail
875M
895M
886M
895M
63G
32G
837M
179M
//打印此处的第四列的内容,因为此处前面是空行所以直接默认空格就行不用分隔符
sed 基于行的过滤和转换文本的流编辑器
[root@lnh ~]# sed -n '2p' passwd
bin:x:1:1:bin:/bin:/sbin/nologin
[root@lnh ~]# head -2 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
//-n是关闭默认打印功能,2是打印第2行,p是打印,因为是只要第二行所以要用-n关闭默认打印
[root@lnh ~]# sed '2p' passwd
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
sssd:x:997:994:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:996:993:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
//如果没有-n就会把里面的东西都打印出来
[root@lnh ~]# ls
anaconda-ks.cfg passwd tushanbu
[root@lnh ~]# head -5 passwd >abc
//把passwd前五行的内容写入abc中
[root@lnh ~]# ls
abc anaconda-ks.cfg passwd tushanbu
[root@lnh ~]# cat abc
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@lnh ~]# sed 's/0/5/' abc
root:x:5: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
//s是替换的意思,把第一行的那个零改成为了五,零那一列如果还有零也会被改成五
[root@lnh ~]# sed 's/0/5/g' abc
root:x:5:5: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
//再加上一个g就会把这一行的零都改成了五
//这些都只是临时显示出来,要再加上-i才是真正的执行
[root@lnh ~]# cat abc
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@lnh ~]# sed '3d' abc
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
//删除第三行
[root@lnh ~]# sed '1,3d' abc
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
//删除第一到第三行
[root@lnh ~]# sed '1d;3d' abc
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
//删除第一行和第三行
[root@lnh ~]# sed -e '1d' -e '3d' abc
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
//删除第一行和第三行,每一个前面都要加-e
//这些也是都没有真正的删除,删除要加上-i
文本排序
sort 默认升序排序,不是按数值大小排序的
-n 根据数值大小进行排序
-r 逆序排序
-t 字段分隔符
-k 以哪个字段为关键字进行排序
-u 去重,排序后相同的行只显示一次
-f 排序时忽略字符大小写
[root@lnh ~]# cat >abb<<EOF
> 1 2 3
> 3 2 1
> 5 4 2
> 4 6 2
> 1 5 7
> 3 3 6
> EOF
//次处是cat的特殊用法,以EOF开始又以它结束
[root@lnh ~]# cat abb
1 2 3
3 2 1
5 4 2
4 6 2
1 5 7
3 3 6
[root@lnh ~]# sort ab
abb abc
[root@lnh ~]# sort abb
1 2 3
1 5 7
3 2 1
3 3 6
4 6 2
5 4 2
//以第一列排序了
[root@lnh ~]# sort -r abb
5 4 2
4 6 2
3 3 6
3 2 1
1 5 7
1 2 3
//以第一列倒序进行排序
[root@lnh ~]# cat >abb<<EOF
1 2 3
3 2 1
5 4 2
4 6 2
1 5 7
3 3 6
10 4 5
> 20 4 8
> EOF
[root@lnh ~]# sort abb
10 4 5
1 2 3
1 5 7
20 4 8
3 2 1
3 3 6
4 6 2
5 4 2
//此时发现它只是以第一位进行排序
[root@lnh ~]# sort -n abb
1 2 3
1 5 7
3 2 1
3 3 6
4 6 2
5 4 2
10 4 5
20 4 8
//按第一列进行大小排序
[root@lnh ~]# sort -u abb
10 4 5
1 1 1
1 2 3
1 5 7
20 4 8
2 2 2
2 2 2
222
3 2 1
3 3 6
4 6 2
5 4 2
//除去重复的行
[root@lnh ~]# sort -un abb
1 2 3
2 2 2
3 2 1
4 6 2
5 4 2
10 4 5
20 4 8
222
//除去重复的行然后排序
[root@lnh ~]# sort -f xxb
aab
BBB
bbb
bbb
bbc
ccc
ccv
eof
vvv
YYB
//忽略大小写进行排序
uniq 报告重复的行(连续且完全相同方为重复)
-c 显示文件中行重复的次数
-d 只显示重复的行
-u 只显示未重复的行
[root@lnh ~]# sort -nr abb|uniq
222
20 4 8
10 4 5
5 4 2
4 6 2
3 3 6
3 2 1
2 2 2
2 2 2
1 5 7
1 2 3
1 1 1
[root@lnh ~]# sort -nr abb|uniq -c
1 222
1 20 4 8
1 10 4 5
1 5 4 2
1 4 6 2
1 3 3 6
1 3 2 1
2 2 2 2
1 2 2 2
1 1 5 7
1 1 2 3
2 1 1 1
1
[root@lnh ~]# sort -nr abb|uniq -d
2 2 2
1 1 1
[root@lnh ~]# sort -nr abb|uniq -u
222
20 4 8
10 4 5
5 4 2
4 6 2
3 3 6
3 2 1
2 2 2
1 5 7
1 2 3
[root@lnh ~]# sort -nr xxb|uniq
yyyc
yyyb
YYB
yyb
vvv
eof
ccv
ccc
bbc
BBB
bbb
aab
[root@lnh ~]# sort -nr xxb|uniq -c
1 yyyc
1 yyyb
1 YYB
1 yyb
1 vvv
1 eof
1 ccv
1 ccc
1 bbc
1 BBB
2 bbb
1 aab
[root@lnh ~]# sort -nr xxb|uniq -d
bbb
[root@lnh ~]# sort -nr xxb|uniq -u
yyyc
yyyb
YYB
yyb
vvv
eof
ccv
ccc
bbc
BBB
aab
//字母的话是一位一位进行比较
文本统计
wc
- c 显示字节数
- l 显示行数
- w 显示单词数
[root@lnh ~]# ls
abb abc anaconda-ks.cfg passwd tushanbu xxb
[root@lnh ~]# wc -c xxb
54 xxb
[root@lnh ~]# wc -l xxb
13 xxb
[root@lnh ~]# wc -w xxb
13 xxb
大小统计
du 查看文件或目录占用的磁盘空间大小
-h 以人类友好的方式显示大小
-s 显示总的占用空间大小
[root@lnh ~]# du -h xxb
4.0K xxb
[root@lnh ~]# du -s xxb
4 xxb
df 报告文件系统磁盘空间使用情况
- h 以人类友好的方式显示大小
-i 显示inode信息
[root@lnh ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 875M 0 875M 0% /dev
tmpfs 895M 0 895M 0% /dev/shm
tmpfs 895M 8.7M 886M 1% /run
tmpfs 895M 0 895M 0% /sys/fs/cgroup
/dev/mapper/cs-root 66G 2.3G 63G 4% /
/dev/mapper/cs-home 32G 260M 32G 1% /home
/dev/sda1 1014M 178M 837M 18% /boot
tmpfs 179M 0 179M 0% /run/user/0
[root@lnh ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 223976 400 223576 1% /dev
tmpfs 228911 1 228910 1% /dev/shm
tmpfs 228911 588 228323 1% /run
tmpfs 228911 17 228894 1% /sys/fs/cgroup
/dev/mapper/cs-root 34158592 42722 34115870 1% /
/dev/mapper/cs-home 16678912 3 16678909 1% /home
/dev/sda1 524288 302 523986 1% /boot
tmpfs 228911 5 228906 1% /run/user/0
[root@lnh ~]# dd if=/dev/zero of=test bs=100M count=1
1+0 records in
1+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.638193 s, 164 MB/s
//dd 创建 count=1执行一次
// /dev/zero吐零设备
// /dev/null黑洞设备
[root@lnh ~]# ll
total 102420
-rw-r--r--. 1 root root 86 Jun 30 14:58 abb
-rw-r--r--. 1 root root 183 Jun 30 14:23 abc
-rw-------. 1 root root 1003 Jun 28 04:46 anaconda-ks.cfg
-rw-r--r--. 1 root root 1004 Jun 30 12:14 passwd
-rw-r--r--. 1 root root 104857600 Jun 30 15:45 test
drwxr-xr-x. 2 root root 39 Jun 29 20:42 tushanbu
-rw-r--r--. 1 root root 54 Jun 30 15:16 xxb
[root@lnh ~]# ll -h
total 101M
-rw-r--r--. 1 root root 86 Jun 30 14:58 abb
-rw-r--r--. 1 root root 183 Jun 30 14:23 abc
-rw-------. 1 root root 1003 Jun 28 04:46 anaconda-ks.cfg
-rw-r--r--. 1 root root 1004 Jun 30 12:14 passwd
-rw-r--r--. 1 root root 100M Jun 30 15:45 test
drwxr-xr-x. 2 root root 39 Jun 29 20:42 tushanbu
-rw-r--r--. 1 root root 54 Jun 30 15:16 xxb
[root@lnh ~]#
[root@lnh ~]# du -sh test
100M test
//创建了100M的文件
主机名管理
hostname是临时修改主机名
hostnamectl是永久修改主机名
[root@lnh ~]# hostname xbz
[root@lnh ~]# bash
[root@xbz ~]# ls
//临时的重新开机后会消失
[root@root ~]# hostnamectl set-hostname lnh
[root@root ~]# bash
[root@lnh ~]# ls
//永久修改主机名,重新开机后不会改变
其他
time 显示命令的执行时间
clear清屏(ctrl+l)
whoami 显示当前在线用户并显示其在执行的命令
w 显示当前在线用户并显示其在运行的命令
who 查看当前在线用户
which 显示指定命令的绝对路径
date 显示或设置日期与时间
不带参数的date用于显示当前系统日期与时间
-s 以字符串方式设置时间
格式化输出时间:+
%Y | 年 |
---|---|
%m | 月 |
%d | 日 |
%H | 时 |
%M | 分 |
%S | 秒 |
[root@lnh ~]# sleep 3
//睡眠3秒
[root@lnh ~]# sleep 3;echo 123
123
//3秒后打印123
[root@lnh ~]# time sleep 3
real 0m3.021s
user 0m0.000s
sys 0m0.003s
//统计这个命令执行的时间
[root@lnh ~]# whoami
root
//我是谁
[root@lnh ~]# who am i
root pts/0 2022-06-30 11:24 (192.168.222.1)
//我在哪里登录的 登录的时间 在哪个主机上面登录的
[root@lnh ~]# who
root tty1 2022-06-29 23:00
root pts/0 2022-06-30 11:24 (192.168.222.1)
//有哪些登录了我这个终端
[root@lnh ~]# w
15:55:29 up 20:56, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - Wed23 11:24m 0.02s 0.02s -bash
root pts/0 192.168.222.1 11:24 1.00s 0.69s 0.00s w
在哪里登录 登录的ip地址 什么时间点 登录时cpu的运行时间 这个家伙在干啥
[root@lnh ~]# lastlog
Username Port From Latest
root pts/2 192.168.222.1 Mon Jul 18 15:09:55 +0800 2022
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
operator **Never logged in**
games **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
dbus **Never logged in**
systemd-coredump **Never logged in**
systemd-resolve **Never logged in**
tss **Never logged in**
polkitd **Never logged in**
sssd **Never logged in**
sshd **Never logged in**
rngd **Never logged in**
xxb **Never logged in**
tsb pts/0 Sun Jul 3 19:52:58 +0800 2022
xxxb pts/0 Sun Jul 3 19:52:08 +0800 2022
tushanbu pts/0 Sun Jul 3 20:01:44 +0800 2022
lxb pts/2 Mon Jul 4 16:26:37 +0800 2022
ml **Never logged in**
//显示最近一次登录的用户
[root@lnh ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@lnh ~]# which pwd
/usr/bin/pwd
[root@lnh ~]# which whoami
/usr/bin/whoami
//可以看见命令路径
[root@lnh ~]# date '+%Y%m%d'
20220630
[root@lnh ~]# date '+%Y%m%d%H%M%S'
20220630160552
[root@lnh ~]# date '+%Y-%m-%d %H:%M:%S'
2022-06-30 16:07:14
年月日时分秒
[root@lnh ~]# date 1002083088.12
Sun Oct 2 08:30:12 CST 1988
1988年 十月二号 八点三十十二秒
[root@lnh ~]# date --help
//可以查看到
[root@lnh ~]# date -s '2022-7-2 23:00:01'
Sat Jul 2 23:00:01 CST 2022
//现在一般都是这样设置时间
ldd 查看指定程序有哪些依赖库文件
//库(别人开发好的某一种功能,而你在开发你的程序的时候刚好要用这个功能,所以进行调用它)
[root@lnh ~]# ldd /usr/bin/ls
linux-vdso.so.1 (0x00007ffd849fc000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007ff41ae37000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007ff41ac31000)
libc.so.6 => /lib64/libc.so.6 (0x00007ff41a86f000)
libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007ff41a5eb000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ff41a3e7000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff41b284000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff41a1c7000)
//可以看见这个命令依赖于这个里面的九个库文件