Linux目录和文件管理

1.目录层次

1.1常见目录

一级目录功能(作用)
/bin/存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
/boot/系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/设备文件保存位置
/etc/配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
/home/普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming
/lib/系统调用的函数库保存位置(c语言 写的一些固定格式的代码,方便调用)
/media/挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/misc/挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
/opt/第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
/root/root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
/sbin/保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
/srv/服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空

Linux /usr目录

usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。

Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。

子目录功能(作用)
/usr/bin/存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行
/usr/sbin/存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。
/usr/lib/应用程序调用的函数库保存位置
/usr/XllR6/图形界面系统保存位置
/usr/local/手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置
/usr/share/应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录
/usr/src/源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中
/usr/includeC/C++ 等编程语言头文件的放置目录

Linux /var 目录

/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。

/var子目录功能(作用)
/var/lib/程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中
/var/log/登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。
/var/run/一些服务和程序运行后,它们的 PID(进程 ID)保存位置
/var/spool/里面主要都是一些临时存放,随时会被用户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。
/var/www/RPM 包安装的 Apache 的网页主目录
/var/nis和/var/ypNIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录
/var/tmp一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除
  • 根(/)相当于一个入口,文件的总入口,也是唯一入口

  • bin (sbin) 二进制文件,可执行文件,也可能存在别处,默认使用较多所有用户软连接文件 ----------------命令

  • sbin 管理员可使用的二进制文件---------------------------------命令ls cd useradd

  • boot 系统内核、启动文件

  • dev 硬件文件(黄色)

  • etc 配置文件等同于windows 注册表,一般都是文本文件

  • run 运行的内存中文件 运行中的文件

  • tmp 临时文件 -t 特殊权限

  • usr应用程序和操作系统相关的文件 bin sbin

  • var/log日志文件,数据变化的

  • home 普通用户的家目录的上级目录zhangsan目录会在 home

  • root系统管理员的家目录上 /root

  • lib 动态库文件 类似于windows 的dll文件

  • proc 主要保存系统的内核、进程、外部设备状态和网络状态等

  • media 可移动设备

  • mnt 默认挂载点

  • opt 第三方应用程序安装所在目录程序

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c7gmZwbl-1689738988047)(2第二章Linux目录和文件管理.assets/image-20220118142454119.png)]

1.2 文件系统的目录结构(常识)

  • 以 . 开头的文件均为隐藏文件
  • 路径用/分开 / 不在第一位就是分隔符
  • 文件名最长 255个字符
  • 区分大小写 linux 注意事项
  • 不要太华丽

2.查看文件内容

2.1七类常见的linux的文件

  1. d 目录文件directory
  2. b 块设备文件block 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
  3. c 字符设备character 这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用
  4. l 符号链接文件link
  5. p 管道文件pipe 主要用于进程间通信单向传输 一个发一个输管道文件
  6. s 套接字文件socket 套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信
  7. -普通文件 普通文件,包括纯文本文件、二进制文件、各种压缩文件等
第一个字符文件类型
-普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
d目录,类似 Windows 系统中的文件夹。
b块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
c字符设备文件,例如键盘、鼠标等。
s套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。
p管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
l链接文件,类似 Windows 系统中的快捷方式。

2.2显示命令

2.2.1 cat
选项效果
-n显示行号包括空行
-b跳过空白行编号
-s将所有的连续的多个空行替换为一个空行(压缩成一个空行)
-A显示隐藏字符
2.2.1rev

将同一行的内容逆向显示

[root@centos8 ~]#cat /data/fa.txt
1 2 3 4 5
a b c
[root@centos8 ~]#tac /data/fa.txt
a b c
1 2 3 4 5
[root@centos8 ~]#rev /data/fa.txt
5 4 3 2 1
c b a
[root@centos8 ~]#rev
abcdef
fedcba
[root@centos8 ~]#echo {1..10} |rev
01 9 8 7 6 5 4 3 2 1

2.3 分页显示

2.3.1 more

more [选项] 文件名

基本操作

  • 空格下一行 到文末后自动退出
  • b上一行
  • enter一行一行滚动
  • 自动退出
  • q退出
[root@test1 var]# /etc/dhcp/dhcpd.conf   
##################################################################################
[root@test1 var]# ls -lh /etc/*.conf | more    //命令显示过多也可以使用管道 加more查看
-rw-r--r--. 1 root root   55 31 2017 /etc/asound.conf
-rw-r--r--. 1 root root  15K 84 2017 /etc/autofs.conf
-rw-------. 1 root root  232 84 2017 /etc/autofs_ldap_auth.conf
-rw-r--r--. 1 root root  22K 87 2017 /etc/brltty.conf
-rw-r--r--. 1 root root  676 83 2017 /etc/cgconfig.conf
-rw-r--r--. 1 root root  265 618 23:09 /etc/cgrules.conf
-rw-r--r--. 1 root root  131 83 2017 /etc/cgsnapshot_blacklist.conf
-rw-r--r--. 1 root root 1.1K 131 2017 /etc/chrony.conf
-rw-r--r--. 1 root root 1.2K 83 2017 /etc/dleyna-server-service.conf
-rw-r--r--. 1 root root  27K 83 2017 /etc/dnsmasq.conf
-rw-r--r--. 1 root root 1.3K 85 2017 /etc/dracut.conf
-rw-r--r--. 1 root root  112 316 2017 /etc/e2fsck.conf
-rw-r--r--. 1 root root   20 624 2014 /etc/fprintd.conf
-rw-r--r--. 1 root root   38 52 2017 /etc/fuse.conf
-rw-r--r--. 1 root root  842 116 2016 /etc/GeoIP.conf
-rw-r--r--. 1 root root    9 67 2013 /etc/host.conf
-rw-r--r--. 1 root root 4.8K 82 2017 /etc/idmapd.conf
-rw-r--r--. 1 root root 2.1K 85 2017 /etc/ipsec.conf
-rw-r--r--. 1 root root 7.1K 618 23:08 /etc/kdump.conf
-rw-r--r--. 1 root root  590 429 2017 /etc/krb5.conf
-rw-r--r--. 1 root root  478 613 2017 /etc/ksmtuned.conf
-rw-r--r--. 1 root root   28 228 2013 /etc/ld.so.conf
-rw-r-----. 1 root root  191 419 2017 /etc/libaudit.conf
-rw-r--r--. 1 root root 2.4K 1013 2013 /etc/libuser.conf
-rw-r--r--. 1 root root   19 618 23:12 /etc/locale.conf
-rw-r--r--. 1 root root  662 731 2013 /etc/logrotate.conf
-rw-r--r--. 1 root root 5.1K 610 2014 /etc/man_db.conf
-rw-r--r--. 1 root root  936 83 2017 /etc/mke2fs.conf
--More--
不可以向上翻页
2.3.2less

less [选项] 文件名

  • 可以使用/ 查找 n向下 N向上查找
  • Page Up 向上翻页,Page Down 向下翻页
  • 其余参考more
[root@test1 var]# less /etc/dhcp/dhcpd.conf    空格到底不会自动退出
#################################################################################
[root@test1 var]# ls -lh /etc/*.conf | less




-rw-r--r--. 1 root root   55 31 2017 /etc/asound.conf
-rw-r--r--. 1 root root  15K 84 2017 /etc/autofs.conf
-rw-------. 1 root root  232 84 2017 /etc/autofs_ldap_auth.conf
-rw-r--r--. 1 root root  22K 87 2017 /etc/brltty.conf
-rw-r--r--. 1 root root  676 83 2017 /etc/cgconfig.conf
-rw-r--r--. 1 root root  265 618 23:09 /etc/cgrules.conf
-rw-r--r--. 1 root root  131 83 2017 /etc/cgsnapshot_blacklist.conf
-rw-r--r--. 1 root root 1.1K 131 2017 /etc/chrony.conf
-rw-r--r--. 1 root root 1.2K 83 2017 /etc/dleyna-server-service.conf
-rw-r--r--. 1 root root  27K 83 2017 /etc/dnsmasq.conf
-rw-r--r--. 1 root root 1.3K 85 2017 /etc/dracut.conf
-rw-r--r--. 1 root root  112 316 2017 /etc/e2fsck.conf
-rw-r--r--. 1 root root   20 624 2014 /etc/fprintd.conf
-rw-r--r--. 1 root root   38 52 2017 /etc/fuse.conf
-rw-r--r--. 1 root root  842 116 2016 /etc/GeoIP.conf
-rw-r--r--. 1 root root    9 67 2013 /etc/host.conf
-rw-r--r--. 1 root root 4.8K 82 2017 /etc/idmapd.conf
-rw-r--r--. 1 root root 2.1K 85 2017 /etc/ipsec.conf
-rw-r--r--. 1 root root 7.1K 618 23:08 /etc/kdump.conf
-rw-r--r--. 1 root root  590 429 2017 /etc/krb5.conf
-rw-r--r--. 1 root root  478 613 2017 /etc/ksmtuned.conf
-rw-r--r--. 1 root root   28 228 2013 /etc/ld.so.conf
-rw-r-----. 1 root root  191 419 2017 /etc/libaudit.conf
-rw-r--r--. 1 root root 2.4K 1013 2013 /etc/libuser.conf
-rw-r--r--. 1 root root   19 618 23:12 /etc/locale.conf
-rw-r--r--. 1 root root  662 731 2013 /etc/logrotate.conf
-rw-r--r--. 1 root root 5.1K 610 2014 /etc/man_db.conf
-rw-r--r--. 1 root root  936 83 2017 /etc/mke2fs.conf
:

2.4显示文件前后内容

2.4.1 head

可以显示文件或标准输入的前面行

格式:

head [OPTION]... [FILE]...

选项:

-c # 指定获取前#字节
-n # 指定获取前#行,#如果为负数,表示从文件头取到倒数第#前
-# 同上

head -n 具体数字 文件名 (不加具体的数字,默认开头十行)

例子:

[root@centos7 ~]#head -n 3 /etc/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@centos8 ~]#head -3 /etc/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@centos8 ~]#cat seq.log
1
2
34
5
6
7
8
9
10
[root@centos8 ~]#head -n 3 seq.log
1
2
3
[root@centos8 ~]#head -n -3 seq.log
1
2
3
4
5
6
7
[root@centos8 ~]#head -n +3 seq.log
1
2
3
2.4.2 tail

tail 和head 相反,查看文件或标准输入的倒数行

格式:

tail [OPTION]... [FILE]...

常用选项:

-f 跟踪显示文件fd新追加的内容,常用日志监控,

tail      -n      具体数字  文件名     (不加具体的数字,默认结尾十行)
tail      -f       具体数字  文件名        实时跟踪最后十行

例子:

abcd[root@localhost test]# echo abcdef|head -c2
ab[root@localhost test]# 
[root@localhost test]# head -n -3 3.txt 
#-3 不显示最后3行
1
2
3
4
5
[root@localhost ky15]# tail -n -3 3.txt 
#-3 只显示最后三行
6
7
8
[root@localhost ky15]# head -n +3 3.txt 
#就只显示前三行
1
2
3
[root@localhost ky15]# tail -n +3 3.txt #
#从第三行开始
3
4
5
6
7

##################################################################################
加入具体数字后显示开头20行
[root@test1 var]# head -20 /etc/dhcp/dhcpd.conf 
# dhcpd.conf
#
[root@localhost ky15]# ifconfig  ens33 |head -2|tail -1
        inet 192.168.91.100  netmask 255.255.255.0  broadcast 192.168.91.255

[root@test1 var]# ping 192.168.91.1 >log.txt

#开启新终端后
[root@test1 var]# tail -f log.txt
#tail -f 等于tailf


[root@localhost ~]#ifconfig ens33 |head -2 |tail -1


###############面试题###################
[root@localhost ~]#cat /dev/urandom |tr -cd '[:alnum:]' |head -c12
513sHzLASljv
#生成随机密码

tr -d
tr -c

tail  -n +k         文件名      从k行开始显示    
2.2.5 tr

基本功能转换

格式

tr [选项]… SET1 [SET2]

SET 是一组字符串,一般都可按照字面含义理解

-d 删除

-s 压缩

-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

[root@localhost ~]#tr 123 abc
#只要出现123 就转换成abc
1g2j3k
agbjck
[root@localhost ~]#tr 12345678 abc
#最后一个一直用
123456789
abcccccc9
[root@localhost ~]#tr -d abc
删除
2a34bc
234
[root@localhost ~]#tr -s " " 
1     2      3     4
1 2 3 4
[root@localhost ~]#tr -s "a"
aaaa
a

#管道符号的好处
#求和
[root@localhost opt]#seq -s+ 100
#中间加上加号
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
[root@localhost ~]#seq -s+ 100 >log.txt
[root@localhost ~]#bc < log.txt 
#将log.txt中的信息交给bc 计算
#bc就是计算命令
5050
[root@localhost ~]#seq -s+ 100|bc
5050
#写脚本

#面试题生成随机密码
[root@localhost ~]cat /dev/urandom |tr -dc '[:alnum:]' |head -c12
 
[root@localhost ~]#cat 1.txt 
aaaaa   11111
bbbbb   22222
[root@localhost ~]#cat 1.txt |tr -c "[a-z]" " "
#用 空格替换除了小写字母之外的所有字符
aaaaa                             bbbbb





[root@localhost ~]#cat 1.txt |tr -sc "[a-z]" " "
#加s压缩
aaaaa bbbbb



2.2.6 cut

cut 命令可以提取文本文件数据的指定列

格式

cut [选项]… [文件]…

常用选项

-d DELIMITER: 指明分隔符,默认tab
-f 想要获取的字段
     #: 第#个字段,例如 3
     #,#[,#]:离散的多个字段,例如 1,3,6
     #-#:连续的多个字段, 例如 1-6
     混合使用:1-3,7
-c   取字符

例子:

[root@localhost ~]#cut -d: -f1,3 /etc/passwd
##已冒号作为分隔的条件,取文件的第一列和第三列
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
mail:8
operator:11

[root@localhost ~]#ll |tail -n +2 |tr -s " "| cut -d" " -f3,9
#将空行压缩成一个后 再空格为分隔符  取 第3 和第9列
root abc.txt
root anaconda-ks.cfg
root initial-setup-ks.cfg
root 公共
root 模板
root 视频
root 图片
root 文档
root 下载
root 音乐
root 桌面
[root@localhost ~]#df |tail -n +2|tr -s " " |cut -d " " -f5|tr -d %
# df |tail -n +2     不显示第一行字段
# tr -s " "          将多个空格压缩成一个
# cut -d " " -f5     已空格为分隔符,取第五列
# tr -d %            删除百分号
[root@localhost ~]#df|tail -n +2 |tr -s " " % |cut -d % -f5
# df |tail -n +2     不显示第一行字段
# tr -s " "          将多个空格压缩成一个后 将空格替换成%
# cut -d % -f5       已%为分隔符 取第5列

[root@localhost ~]#df |tail -n +2 |cut -c54
#使用字符取字段,-c 取当前字符的字段
#在xshell的左下角,复制会有字符个数

2.2.7 wc

wc [选项]… 目标文件…

统计列数,wc本身就是参数 word

  • -l:统计行数
  • -w:统计单词个数
  • -c:统计字节数
 [root@localhost ~]# cat a.txt 
dasdasdads
[root@localhost ~]# wc a.txt 
 1  1 11 a.txt
[root@localhost ~]# cat a.txt 
das dasdads
[root@localhost ~]# wc a.txt 
 1  2 12 a.txt  
  
########注意空行和换行符
tab  空格  算单词的分隔符
2.2.8 grep

grep [选项]… 查找条件 目标文件

  • -i:查找时忽略大小写
  • -v:反向查找,输出与查找条件不相符的行
  • -o 只显示匹配项
  • -f 对比两个文件的相同行
  • -c 匹配的行数([root@localhost ky15]# grep -c root passwd 2)
  • -r对文件

grep ‘^ ’ 开头
grep’ KaTeX parse error: Expected group after '^' at position 12: ' 结尾 grep '^̲’ 空行

2.2.9 paste

-d 指定分隔符

合并文件

#一个文件放密码一个文件放用户名
[root@localhost ~]#cat user.txt pass.txt 
lisi
liwu
liliu
123
345
444
[root@localhost ~]#paste user.txt pass.txt 
lisi	123
liwu	345
liliu	444


[root@localhost ~]#paste -d: user.txt pass.txt 
###分隔符 用冒号隔开
lisi:123
liwu:345
liliu:444

2.2.10 sort

排序

sort [options] file(s)

把整理过的文本显示在屏幕上,不改变原始文件

r n t k

-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-h 人类可读排序,如: 2K 1G 
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique),合并重复项,即去重
-t 指定分隔符
-k 指定列
[root@localhost ~]#sort /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost ~]#sort -t: -k3 /etc/passwd
#已冒号为分隔符,只排序第三列,不是已数字是已字符比较
[root@localhost ~]#sort -t: -k3 -n /etc/passwd
#正序
[root@localhost ~]#sort -t: -k3 -nr /etc/passwd
#到序
[root@localhost ~]#df |tail -n +2 |tr -s " " % |cut -d % -f5|sort -nr |head -1
8

2.2.11去重uniq

uniq [OPTION]… [FILE]…

-c: 显示每行重复出现的次数

-d: 仅显示重复过的行

-u: 仅显示不曾重复的行

uniq常和sort 命令一起配合使用:

[root@localhost ~]#cat f3.txt 
1
2
3
3
4
5
6
6
3
6
[root@localhost ~]#uniq f3.txt 
#只会将连续的行去重
1
2
3
4
5
6
3
6
[root@localhost ~]#uniq -c f3.txt
#显示出现次数
      1 1
      1 2
      2 3
      1 4
      1 5
      2 6
      1 3
      1 6



###面试题,查看访问日志,找出访问前10名的用户,
[root@localhost ~]#cat log|cut -d" " -f1 
#先取地址
[root@localhost ~]#cat log|cut -d" " -f1|sort
#再排序一样的ip地址在一起
[root@localhost ~]#cat log|cut -d" " -f1|sort|uniq -c
#去重
[root@localhost ~]# cat log|cut -d" " -f1|sort|uniq -c|sort -nr |head 
#再数字排序,取前10 行
   5498 122.51.38.20
   2161 117.157.173.214
    953 211.159.177.120
    219 58.87.87.99
    100 222.218.17.189
    100 218.201.62.71
    100 122.139.5.237
    100 120.195.144.116
    100 118.121.41.14
    100 1.177.191.161

awk  sed  
#面试题 取两个文件一样或不一样的字段
[root@localhost ~]#cat f1.txt f2.txt 
a
b
c
1
a
2
b
3
c

awk '{dskjdls}'



[root@localhost ~]#cat f1.txt f2.txt |uniq -d
#直接使用 看不出来
[root@localhost ~]#cat f1.txt f2.txt |sort |uniq -u
#一样的
1
2
3
[root@localhost ~]#cat f1.txt f2.txt |sort |uniq -d
#不一样的
a
b
c
2.1.12 split

作用:分割文件

split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]

最常用的选项,都在这里了:
-b<字节>:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。
-<行数>或-l<行数>:指定每多少行要拆分成一个文件。
输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。
-a<后缀长度>:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。

例子:

[root@localhost data]#dd if=/dev/zero bs=1024 count=700000 of=k
记录了700000+0 的读入
记录了700000+0 的写出
716800000字节(717 MB)已复制,2.98155 秒,240 MB/秒

[root@localhost data]#split -b 400M k
[root@localhost data]#ls
k  xaa  xab

[root@localhost data]#split -b 400M k  a
#指定分隔名
root@localhost data]#split -b 400M k  a
[root@localhost data]#ll
总用量 1400000
-rw-r--r--. 1 root root 419430400 8月  12 15:50 aaa
-rw-r--r--. 1 root root 297369600 8月  12 15:50 aab
-rw-r--r--. 1 root root 716800000 8月  12 15:46 k

没有指定拆分后文件的命名方式的情况下,split 会默认采用 x 字符作为文件前缀,采用类似 aa、ab、ac 的字符串依次作为文件后缀。于是,就出现了我们上面看到的 xaa、xab 了。




[root@localhost data]#split -d -10 /etc/passwd my_passwd
#行数分隔
[root@localhost data]#ls
my_passwd00  my_passwd01  my_passwd02  my_passwd03  my_passwd04

3 压缩,解压缩

gzip和bzip都是压缩软件,比如windows里的好压和360 压缩或微软自带的等等

比较gzip和bzip之间的压缩比例,压缩时间等问题

3.1 gzip bzip2

gzip [-9] 文件名… 提高压缩比例,但是文件较大时效率会低
bzip2 [-9] 文件名…
gzip -d .gz格式的压缩文件 d就是解压
bzip2 -d .bz2格式的压缩文件

9代表压缩比率,9最大1最小,使用以上两种压缩源文件不存在了

gzip的压缩率 要高于bzip2

不会使用 应为只能对文件操作

[root@test1 opt]# gzip *.txt    
#压缩后源文件没了 可以使用-k  保留源文件centos8 特性
[root@localhost data]#bzip2 -9k 2.txt 
#bzip2 centos7 可以使用-k  保留源文件
[root@test1 opt]# ls
123456.txt.gz  123.txt.gz  1.txt.gz  2.txt.gz  abc.txt.gz  rh  test.txt.gz
[root@test1 opt]# gzip -d *.txt.gz    解压
[root@test1 opt]# ls
123456.txt  123.txt  1.txt  2.txt  abc.txt  rh  test.txt
3.2归档tar

tar tape archive 磁带归档,磁带便宜磁带机很贵,慢永久保存,硬盘越来越便宜了

tar [选项] … 归档文件名 源文件或目录
tar [选项] … 归档文件名 [-C 目标目录]

此处选项有先后要求

  • -c:创建(Create).tar 格式的包文件
  • -x:解开.tar 格式的包文件
  • -C:解压时指定释放的目标文件夹
  • -f:表示使用归档文件(一般都要带上表示使用tar)
  • -p:打包时保留文件及目录的权限
  • -P:打包时保留文件及目录的绝对径
  • -t:列表查看包内的文件(要和f一起使用)
  • -v:输出详细信息(Verbose)
  • -z:调用 gzip 程序进行压缩或解压

tar czvf all.tar.gz /etc
tar归档
czvf 创建使用归档用gzip程序并显示过程
all.tar.gz 文件名可自定制
/etc 解压文件路径

4.vi编辑器

参考链接

https://www.w3cschool.cn/vim/

Linux 系统中“一切皆文件”,因此当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。

linux中常见的 文本 还有 nano gedit 知道

推荐使用 Vi 文本编辑器的原因有很多,比如说:

  • 几乎所有的Linux 发行版都内嵌有 Vim 文本编辑器,而其他的编辑器则不一定存在;
  • Vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计 接口

vi与vim之间的区别

vim是vi的升级版

基本格式:

vim [OPTION]... ...
命令  选项       文件

vim  文件名不存在  是新建
vim  文件名存在   就是修改

如果系统最小化安装vim并没有提前安装,可以使用

yum install vim -y
最小桌面

常用选项

+#			打开文件后,让光标处于第#行的行首,+默认行尾
!			打开上一次的文件
+/PATTERN	让光标处于第一个被PATTERN匹配到的行行首用不多
[root@localhost opt]#vim +/^named passwd 
#匹配表达式
[root@localhost opt]#vim +10 passwd

4.1三种模式

三种常见模式:

  1. 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
  2. 插入(Insert)或编辑模式:用于修改文本
  3. 扩展命令(extended command )或末行模式:保存,退出等搜索替代

命令模式 --> 插入模式

i	insert, 在光标所在处输入
I	在当前光标所在行的行首输入
a	append, 在光标所在处后面输入
A	在当前光标所在行的行尾输入
o	在当前光标所在行的下方打开一个新行
O	在当前光标所在行的上方打开一个新行
4.1.1 命令模式
  • 命令模式:此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

    ####       退出VIM        #######
    ZZ 保存退出
    ZQ 不保存退出
    
    
    ##########   光标跳转    ##############
    h: 左 
    L: 右 
    j: 下 
    k: 上
    
    单词间跳转
    w:下一个单词的词首
    e:当前或下一单词的词尾
    b:当前或前一个单词的词首
    #COMMAND:由#指定一次跳转的单词数
    
    
    当前页跳转:
    H:页首     
    M:页中间行     
    L:页底
    zt:将光标所在当前行移到屏幕顶端
    zz:将光标所在当前行移到屏幕中间
    zb:将光标所在当前行移到屏幕底端
    
    行首行尾跳转:
    ^ 跳转至行首的第一个非空白字符
    0 跳转至行首
    $ 跳转至行尾
    
    行间移动:
    #G 或者扩展命令模式下 
    :#   跳转至由第#行
    G 最后一行
    1G, gg 第一行
    
    
    
    命令模式翻屏操作:
    Ctrl+f 向文件尾部翻一屏,相当于Pagedown
    Ctrl+b 向文件首部翻一屏,相当于Pageup
    Ctrl+d 向文件尾部翻半屏
    Ctrl+u 向文件首部翻半屏
    
    
    字符编辑
    
    x 剪切光标处的字符
    #x 剪切光标处起始的#个字符
    xp 交换光标所在处的字符及其后面字符的位置
    ~ 转换大小写
    J(大写) 删除当前行后的换行符
    
    替换命令(replace)
    r 只替换光标所在处的一个字符
    R 切换成REPLACE模式(在末行出现-- REPLACE -- 提示),按ESC回到命令模式
    
    
    删除命令(delete)
    d 删除命令,可结合光标跳转字符,实现范围删除
    d$ 删除到行尾
    d^ 删除到非空行首
    d0 删除到行首
    dw 下一个单词的词首
    de 当前或下一个单词的词尾
    db 当前或上一个单词的词首
    #COMMAND
    dd:   剪切光标所在的行
    #dd 多行删除
    D:从当前光标位置一直删除到行尾,等同于d$
    
    复制命令(yank)
    y 复制,行为相似于d命令
    y$
    y0
    y^
    ye
    yw
    yb
    #COMMAND
    yy:复制行
    #yy 复制多行
    Y:复制整行
    
    粘贴命令(paste)
    p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
    P 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
    
    
    改变命令(change)
    命令 c 删除后切换成插入模式
    c$
    c^
    c0
    cb
    ce
    cw
    #COMMAND
    cc  #删除当前行并输入新内容,相当于S
    #cc  
    C   #删除当前光标到行尾,并切换成插入模式,相当于c$
    
    
    查找
    /PATTERN:从当前光标所在处向文件尾部查找
    ?PATTERN:从当前光标所在处向文件首部查找
    n:与命令同方向
    N:与命令反方向
    
    
    撤消更改
    u 撤销最近的更改,相当于windows中ctrl+z
    #u 撤销之前多次更改
    U 撤消光标落在这行后所有此行的更改
    Ctrl-r 重做最后的“撤消”更改,相当于windows中crtl+y
    . 重复前一个操作
    #. 重复前一个操作#次
    
    
    100iky18 [ESC]
    重复的次数    i(输入模式) 重复的内容  esc 命令模式
    
    di"   光标在“ “之间,则删除” “之间的内容
    d i "   "之间的内容就会删除"
    
    yi(   光标在()之间,则复制()之间的内容
    
    
    
    
    
    vi[   光标在[]之间,则选中[]之间的内容
    
    
    
    
    
    
    dtx 删除字符直到遇见光标之后的第一个 x 字符
    ytx 复制字符直到遇见光标之后的第一个 x 字符
    
    
    
    
    
    
    操作键功能
    ctrl+f或者Pagedown向下翻页
    ctrl+b或者Pageup向上翻页
    Home;^;0跳到本行的行首
    按 End 键或$跳转到本行的行尾
    1G 或 gg跳转到文件的第一行包括空行
    G跳转文件的末尾
    #G#代表行号数字,直接跳转到#行
    M跳转到当前显示页面的中间行
    x或delete删除当前光标的字符
    dd删除一整行
    #dd删除当前光标开始到第#行(包括当前行)
    d^删除当前光标之前到行首 往前不包括当前光标处的字符
    86 往后删除包括当前光标处的字符
    d$删除当前光标到行尾
    dw删除当前光标处的单词
    R 或shift+r替换当前光标处文字,会进入替换模式
    yy复制当前光标处整行
    #yy复制当前光标处向下的#行
    p粘贴到光标处下一行
    P粘贴到光标处上一行
    u只消除上一次可多次使用
    UU 取消所有操作
    /字符向下查找
    ?字符向上查找
    n向同一方向重复上次的查找指令
    N向相反方向重复上次的查找指定末行模式
4.1.2 输入模式
  • 输入模式: 使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键即可返回命令模式。

    切入到输入模式

    快捷键功能描述
    i在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
    I行首插入命令
    o在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
    O在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
    a在当前光标所在位置之后插入随后输入的文本
    A行尾插入命令
4.1.3末行模式
  • 末行模式:文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。
######################基础命令###################
# 			#具体第#行,例如2表示第2行
#,# 		#从左侧#表示起始行,到右侧#表示结尾行 
#,+# 		#从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行
.   		#当前行
$ 			#最后一行
.,$-1 		#当前行到倒数第二行
% 			#全文, 相当于1,$

/pattern/   	#从当前行向下查找,直到匹配pattern的第一行,即:正则表达式
/pat1/,/pat2/ 	#从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
#,/pat/     	#从指定行开始,一直找到第一个匹配pattern的行结束
/pat/,$     	#向下找到第一个匹配patttern的行到整个文件的结尾的所有行


###################地址定界后跟一个编辑命令#############################
d       #删除
y 		#复制


###########################另存为#############################
w file 	#将范围内的行另存至指定文件中
r file 	#在指定位置插入指定文件中的所有内容
.!命令   #将命令执行结果贴到当前光标处


###################查找并替换##########################
格式:
范围  s/要查找的内容/替换的内容/g


说明:
要查找的内容:可使用基本正则表达式模式   
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查
找到的整个内容


修饰符:
i #忽略大小写
g #全局替换,默认情况下,每一行只替换第一次出现
c #全局替换,每次替换前询问



查找替换中的分隔符/可替换为其它字符,如:#,@
范例:
s@/etc@/var@g
s#/boot#/#i


################行号##################
显示:set number,简写 set nu
取消显示:set nonumber, 简写 set nonu


#########忽略字符的大小写###############
启用:set ignorecase,简写 set ic
不忽略:set noic

##############自动缩进############
启用:set autoindent,简写 set ai
禁用:set noai

############复制保留格式##############
启用:set paste
禁用:set nopaste


###########显示隐藏字符###############
显示Tab ^I和换行符 和$显示
启用:set list
禁用:set nolist


##############tab用指定空格的个数代替#############
启用:set tabstop=#    指定#个空格代替Tab
简写:set ts=4


###############设置光标所在行的标识线#############
启用:set cursorline,简写 set cul
禁用:set nocursorline


######################加密##########################
启用: set key=password
禁用: set key=


#######################set 帮助#####################
set all
快捷键功能效果
:q退出不保存
:q!强制退出不保存
:w保存
:w 新文件名另存为新文件:
:wq :zz :x保存并退出
:e 其他文件名(如果已修改需要加e!)打开新文件进行编辑
:r 其他文件名在当前文件中读入其他文件内容
!命令执行命令
:r!命令读入命令
: [替换范围] s /旧的内容/新的内容[/g]
😒 /old/new替换当前行中的第一个old改为new
😒 /old/new/g替换当前行中的所有old改为new
:#,# s /old/new/g#到#行所有old改为new
:%s /old/new/g%代表全文 全文替换所有old改为new
# d删除 第#行
#,# d删除#到#行
#,# y复制三到6 行
:set nu 或:set nonu加行号 不显示行号
:set cul (:set nocul )光标所在行有下划线(取消)
no hl取消高亮
:set ai对齐 回车后和上一行对齐
:set all 可以看所有的一些帮助可以看所有的一些帮助
set key=password (大X)加密码
set key=空白取消密码
set tabstop=4 (set ts=4)tab 一次为四个空格
.!命令 (who,date )将date命令插入当前行注意会覆盖当前行
4.1.4 可视化模式(不常用,且不实用)

在末行有”-- VISUAL – “指示,表示在可视化模式

允许选择的文本块

  • v 面向字符,-- VISUAL –
  • V 面向整行,-- VISUAL LINE –
  • ctrl-v 面向块,-- VISUAL BLOCK –

范例:在文件指定行的行首插入#

1、先将光标移动到指定的第一行的行首
2、输入ctrl+v 进入可视化模式
3、向下移动光标,选中希望操作的每一行的第一个字符
4、输入大写字母 I 切换至插入模式
5、输入 # 
6、按 ESC 键

范例:在指定的块位置插入相同的内容

1、光标定位到要操作的地方
2、CTRL+v 进入“可视 块”模式,选取这一列操作多少行
3、SHIFT+i(I)
4、输入要插入的内容
5、按 ESC 键

4.2 配置文件定制vim的工作特性

Vim 启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim。

/etc/.vimrc #全局
~/.vimrc #个人

Vim 配置文件分为系统配置文件和用户配置文件:

  • 系统配置文件位于 Vim 的安装目录(默认路径为 /etc/.vimrc);
  • 用户配置文件位于主目录 ~/.vimrc,即通过执行 vim ~/.vimrc 命令即可对此配置文件进行合理修改。通常情况下,Vim 用户配置文件需要自己手动创建。
设置参数功能描述
set nu显示行号
set cul突出显示当前行。
set ai设置自动缩进,即每行的缩进同上一节相同。
set ts=4设置 Tab 键宽度为 4 个空格。

例题
1.将所有行开头的#号删除(使用末行命令模式)
:% s/^#//
2.对上面的anaconda-ks.cfg文件的1到3行加上#号
:1,3 /^/#/
3.显示anaconda-ks.cfg文件的的行号
:set nu
4.将anaconda-ks.cfg文件另存到/mnt 目录下
:w /mnt/文件名
5.打开anaconda-ks.cfg文件时直接跳到第10行
vim +10 anaconda-ks.cfg
6将anaconda-ks.cfg文件里所有的System 改成小写的system
:% s/System/system/g
7将anaconda-ks.cfg文件里所有的/换成$
:% s./.$.g

9.分别写出如何从当前光标处删除到行尾和行首。
d^
d$
10.如何将/etc/passwd,读入到当前打开的将anaconda-ks.cfg文件里?
:r /etc/passwd (从光标位置开始读入)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值