目录和文件管理
1.目录层次
1.1常见目录
一级目录 | 功能(作用) |
---|---|
/bin/ | 存放系统命令,普通用户和root都可以执行。放在 /bin下的命令在单用户模式下也可以执行。 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等。 |
/bev/ | 设置文件保存位置,块设备文件,磁盘 |
/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/include | C/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/yp | NIS 服务机制所使用的目录,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 第三方应用程序安装所在目录程序
1.2 文件系统的目录结构(常识)
-
以 . 开头的文件均为隐藏文件
-
路径用/分开 / 不在第一位就是分隔符
-
文件名最长 255个字符
-
区分大小写 linux 注意事项
-
不要太华丽
2.查看文件内容
2.1七类常见的linux的文件
第一个字符 | 文件类型 |
---|---|
- | 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。 |
d | 目录,类似 Windows 系统中的文件夹。 |
b | 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。 |
c | 字符设备文件,例如键盘、鼠标等。 |
s | 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。 |
p | 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。 |
l | 链接文件,类似 Windows 系统中的快捷方式。 |
2.2 显示命令
2.2.1 cat
选项 | 效果 |
---|---|
-n | 显示行号包括空行 |
-b | 跳过空白行编号 |
-s | 将所有的连续的多个空行替换为一个空行(压缩成一个空行) |
-A | 显示隐藏字符 |
例子:
[root@localhost ky15]# cat /etc/centos-release
#查看你系统内核版本
CentOS Linux release 7.4.1708 (Core)
[root@localhost ky15]# cat /etc/centos-release
#查看你系统内核版本
CentOS Linux release 7.4.1708 (Core)
[root@localhost ky15]# cat /proc/version
Linux version 3.10.0-693.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
[root@localhost data]# cat -b test.txt
#空行不编号
1 111
2 111
3 1111 1111
[root@localhost data]# cat -s test.txt
#将连续的空行压缩成一个空行
111
111
1111 1111
格式 cat 文件名(文件名可以是单个也可以是多个)
[root@test1 opt]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
#查看文件
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=0d6498ee-d986-4c39-ac51-2dd0d0310dd2
DEVICE=ens33
ONBOOT=yes
##############################################################################
#多个显示顺序看你命令文件的排列顺序
[root@test1 opt]# echo "1" > 1.txt
[root@test1 opt]# echo "2" > 2.txt
[root@test1 opt]# cat 1.txt 2.txt
1
2
[root@test1 opt]# cat 2.txt 1.txt
2
1
tac 反方向查看
查看非文本文件内容
hexdump
-C:输出规范的十六进制和ASCII码
-n length:格式化输出文件的前length个字节
[root@localhost ~]#hexdump -C -n 512 /dev/sda
#查看前512字节
0000000 63eb 1090 d08e 00bc b8b0 0000 d88e c08e
0000010 befb 7c00 00bf b906 0200 a4f3 21ea 0006
0000020 be00 07be 0438 0b75 c683 8110 fefe 7507
0000030 ebf3 b416 b002 bb01 7c00 80b2 748a 8b01
0000040 024c 13cd 00ea 007c eb00 00fe 0000 0000
0000050 0000 0000 0000 0000 0000 8000 0001 000
#####其他省略
2.2.1tac
逆向显示文本内容
[root@centos8 ~]#seq 10 | tac
10
9
8
7
6
5
4
3
2
1
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.2.2 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 3月 1 2017 /etc/asound.conf
-rw-r--r--. 1 root root 15K 8月 4 2017 /etc/autofs.conf
-rw-------. 1 root root 232 8月 4 2017 /etc/autofs_ldap_auth.conf
不可以向上翻页
2.2.3 less
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 3月 1 2017 /etc/asound.conf
-rw-r--r--. 1 root root 15K 8月 4 2017 /etc/autofs.conf
-rw-------. 1 root root 232 8月 4 2017 /etc/autofs_ldap_auth.conf
-rw-r--r--. 1 root root 22K 8月 7 2017 /etc/brltty.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)
基本格式
-
要查找的字符串以双引号括起来单引号也可以
-
“^……”表示以……开头,“……$”表示以……结尾
-
“^$”表示空行
选项: -color=auto 对匹配到的文本着色显示 -m # 匹配#次后停止 grep -m 1 root /etc/passwd #多个匹配只取第一个 -v 显示不被pattern匹配到的行,即取反 grep -Ev '^[[:space:]]*#|^$' /etc/fstab -i 忽略字符大小写 -n 显示匹配的行号 -c 统计匹配的行数 grep -c root /etc/passwd #统计匹配到的行数 -o 仅显示匹配到的字符串 -q 静默模式,不输出任何信息 -A # after, 后#行 grep -A3 root /etc/passwd #匹配到的行后3行业显示出来 -B # before, 前#行 -C # context, 前后各#行 -e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file grep -e root -e bash /etc/passwd #包含root或者包含bash 的行 grep -E root|bash /etc/passwd -w 匹配整个单词 grep -w root /etc/passwd useradd rooter -E 使用ERE,相当于egrep -F 不支持正则表达式,相当于fgrep -f file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件 -r 递归目录,但不处理软链接 -R 递归目录,但处理软链接 grep root /etc/passwd grep "USER" /etc/passwd grep 'USER' /etc/passwd grep whoami /etc/passwd
root@test1 opt]# cat 123.txt |grep -v '^$' >test.txt //将非空行写入到test.txt文件 [root@test1 opt]# grep "^b" 123.txt //过滤已b开头 [root@test1 opt]#grep '/$' 123.txt //过滤已/结尾 [root@test1 opt]# grep -v "^$" 123.txt //过滤非空行3 备份与恢
[root@localhost yum.repos.d]# ifconfig ens33 |grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" 192.168.91.100 255.255.255.0 192.168.91.255 [root@localhost yum.repos.d]# ifconfig ens33 |grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"|head -1 192.168.91.100
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
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)
-
-j:调用 bzip2 程序进行压缩或解压
-
-z:调用 gzip 程序进行压缩或解压
[root@localhost data]# tar -zcvf vm.tar.gz vm1 vm2 zz vm1 vm2 zz/ [root@localhost data]# tar -jcvf vm.tar.gz vm1 vm2 zz [root@localhost data]# tar -zxvf vm.tar.gzip -C /opt vm1 vm2 zz/ [root@localhost zz]# tar -tf vm1.tar.gzip vm1
4.vi编辑器
Linux 系统中“一切皆文件”,因此当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。
linux中常见的 文本 还有 nano gedit 知道
推荐使用 Vi 文本编辑器的原因有很多,比如说:
-
几乎所有的Linux 发行版都内嵌有 Vim 文本编辑器,而其他的编辑器则不一定存在;
-
Vim具有编辑程序的能力,会主动利用不同的字体颜色辨别语法的正确性,方便程序设计 接口
vi与vim之间的区别
vim是vi的升级版
基本格式:
vim [OPTION]... ... 命令 选项 文件 vim 文件名不存在 是新建 vim 文件名存在 就是修改
如果系统最小化安装vim并没有提前安装,可以使用
yum install vim -y 最小桌面
常用选项
+# 打开文件后,让光标处于第#行的行首,+默认行尾 ! 打开上一次的文件 +/PATTERN 让光标处于第一个被PATTERN匹配到的行行首用不多
4.1三种模式
三种常见模式:
-
命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
-
插入(Insert)或编辑模式:用于修改文本
-
扩展命令(extended command )或末行模式:保存,退出等搜索替代
命令模式 --> 插入模式
i insert, 在光标所在处输入 I 在当前光标所在行的行首输入 a append, 在光标所在处后面输入 A 在当前光标所在行的行尾输入 o 在当前光标所在行的下方打开一个新行 O 在当前光标所在行的上方打开一个新行
4.1.1 命令模式
-
命令模式:此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。
操作键 | 功能 |
---|---|
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 | 只消除上一次可多次使用 |
U | U 取消所有操作 |
/字符 | 向下查找 |
?字符 | 向上查找 |
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 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。
快捷键 | 功能效果 |
---|---|
:q | 退出不保存 |
:q! | 强制退出不保存 |
:w | 保存 |
:w 新文件名 | 另存为新文件: |
:wq :zz :x | 保存并退出 |
:e 其他文件名(如果已修改需要加e!) | 打开新文件进行编辑 |
:r 其他文件名 | 在当前文件中读入其他文件内容 |
!命令 | 执行命令 |
:r!命令 | 读入命令 |
: [替换范围] s /旧的内容/新的内容[/g] | |
:s /old/new | 替换当前行中的第一个old改为new |
:s /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 个空格。 |