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)
//可以看见这个命令依赖于这个里面的九个库文件

posted @ 2022-07-02 23:14  涂山小布  阅读(194)  评论(0编辑  收藏  举报