linux的文件与目录管理

6.1.1 Linux 目录结构

树状图结构:
在这里插入图片描述

6.1.2 一级目录及其作用

/boot:存放的是系统的启动文件及内核
/dev: 设备文件主目录
/etc:系统主配置文件主目录
/home:普通用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/root:超级管理员的家目录
/lib:系统库文件主目录
/media:挂载点目录,移动设备
/mnt:挂载点目录,额外的临时文件系统
/opt:可选目录,第三方程序的安装目录
/proc:系统进程主目录
/sys:伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件, /var/tmp
/var:系统配置文件主目录
/bin: 存放的是系统的命令
/sbin:存放的是管理命令
/usr:系统大文件及说明文档存放目录`在这里插入代码片`

6.1.3 文件及目录命名规则

(1)除了/之外,所有字符都合法;
(2)特殊字符如@、#、¥、&、()、-、空格等最好不要使用,当使用空格作为文件名时,执行命令会出错;
(3)避免使用“.”作为文件名的第一个字符,因为Linux系统中以“.”为开头的文件代表隐藏,系统将自动隐藏以“.”为开头的文件;
(4)Linux系统区分大小写,因此文件命名也区分大小写;
(5)Linux文件后缀名无意义,但是为方便识别应定义后缀(.txt、.PHP等),定义后缀在大多数情况亦能将文件与目录区分;
(6)文件位置最好设置在 Linux专用目录下,如配置文件大多时候放置于/etc目录下;
(7)文件夹及文件的命名尽量聚有其特定的含义;
(8)三个特殊目录,“.”:代表当前目录,“…”:代表上一级目录,“/”:代表根目录。

6.2.1 ls

用来显示目标列表,在 Linux 中是使用率较高的命令。ls 命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。

(1)蓝色-目录
(2)绿色-可执行文件
(3)红色-压缩文件
(4)浅蓝色-链接文件
(5)加粗黑色-符号链接
(6)灰色-其他用法文件
[root@ezsvs ~]# **ls -a** 【显示当前目录中所有的子目录、文件及隐藏文件和文件夹】

总用量 8
drwxr-xr-x. 2 root root 6 5月 5 10:31 公共
drwxr-xr-x. 2 root root 6 5月 5 10:31 模板
drwxr-xr-x. 2 root root 6 5月 5 10:31 视频
drwxr-xr-x. 2 root root 6 5月 5 10:31 图片
drwxr-xr-x. 2 root root 6 5月 5 10:31 文档
drwxr-xr-x. 2 root root 6 5月 5 10:31 下载
drwxr-xr-x. 2 root root 6 5月 5 10:31 音乐
drwxr-xr-x. 2 root root 6 5月 5 10:31 桌面

[root@ezsvs ~]# ls -ld 【以长格式显示当前目录的详细属性,目录本身】

dr-xr-x—. 16 root root 4096 5月 17 08:52 .

6.2.2 pwd

pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行 pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。
[root@ezsvs ~]# pwd
/root

6.2.3 du

du命令也是查看磁盘使用空间的,但是与 df命令不同的是 Linux du命令是对文件和目录磁盘使用的空间的查看,还是和 df命令有一些区别的。

-a:统计磁盘空间占用时包含所有的文件,而不仅仅只统计目录
-h:显示为 k、M等单位
-s:只统计每个参数所占用空间总的大小,而不是统计

**

6.2.4 cd

**
改变用户的当前目录。
[root@ezsvs ~]# cd /home/ 【切换到家目录】
[root@ezsvs home]# cd /var/log/ 【切换到日志目录,绝对路径】

[root@ezsvs log]# cd - 【切换到上一次执行 cd 命令之前所处的目录】
/home
[root@ezsvs home]# ls
ezsvs max
[root@ezsvs home]# cd max/ 【切换到/home下的 max目录,使用的是相对路径】
[root@ezsvs max]# cd .. 【切换到上一目录】
[root@ezsvs home]# ls
ezsvs max
[root@ezsvs home]# cd ./ezsvs 【.代表当前目录】

在 linux系统表示某个目录(或文件)的位置时,根据其参照的起始目录不同,可以使用两种不同的形式,分别称为相对路径和绝对路径。绝对路径:这种方式以根目录“/”作为起点,如“/boot/grub”表示根目录下 boot子
目录中的 grub目录。若要确切表明 grub是一个目录(而不是一个文件),可以在最后也加上一个目录分隔符,如表示为“/boot/grub”。因为 1inux系统中的根目录只有一个,所以不管当前处于哪个目录中,使用绝对路径都可以非常准确地表示下一个目录(或文件)所在的位
置。但是如果路径较长,输入的时候会比较繁琐。
相对路径:这种方式一般以当前工作目录作为起点,在开头不使用“/”符号,因此输入的时候更加简便。相对路径主要包括如下几种形式。

(1)直接使用目录名或文件名,用于表示当前工作目录中的子目录、文件的位置。
(2)使用一个点号“.”开头,可明确表示以当前的工作目录作为起点。
(3)使用两个点号”..”开头,表示以当前目录的上一级目录(父目录)作为起点。
(4)使用“~用户名”的形式开头,表示以指定用户的宿主目录作为起点,省略用户名时缺省为当前用户。

相比较而言,使用相对路径表示目录(文件)的路径形式灵活多变,通常用于表示当前目录“附近”的目录(文件)位置;而绝对路径常用来表示 Linux系统中目录结构相对稳定(不经常改变)的目录(文件)位置。因此在使用相对路径或绝对路径时,应根据实际情况进行选择。

6.2.5 mkdir

mkdir命令用来创建目录。该命令创建由 dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由 dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。 在一个子目录中应包含类型相似或用途相近的文件。例如,应建立一个子目录,它包含所有的数据库文件,另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。

[root@ezsvs tmp]# mkdir aaa 【创建一个新目录 aaa】
[root@ezsvs tmp]# ls
aaa
[root@ezsvs tmp]# mkdir bbb/ccc/ddd
mkdir: 无法创建目录"bbb/ccc/ddd": 没有那个文件或目录
[root@ezsvs tmp]# mkdir -p bbb/ccc/ddd 【-p:递归创建目录】
[root@ezsvs tmp]# cd bbb/ccc/ddd/
[root@ezsvs ddd]# pwd
/tmp/bbb/ccc/ddd

6.2.6 rmdir

rmdir 命令用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用 rmdir 命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中 dirname 佬表示目录名。如果dirname中没有指定路径,则删除当前目录下由dirname指定的目录;如 dirname中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限。 注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用 rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。虽然还可以用带有-r选项的 rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。

[root@ezsvs tmp]# rmdir aaa 【删除目录 aaa】
那么如何删除一个非空目录呢
[root@ezsvs tmp]# rmdir bbb 【bbb下有 ccc/ddd目录,无法直接删除】
rmdir: 删除 "bbb" 失败: 目录非空
[root@ezsvs tmp]# rm -rf bbb 【删除非空目录】

6.3 文件操作命令

6.3.1 touch

touch命令有两个功能:

一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留来;
二是用来创建新的空文件。

[

root@ezsvs tmp]# touch 111.txt 222.txt 333.txt 【创建三个文件】
[root@ezsvs tmp]# ls
111.txt 222.txt 333.txt

6.3.2 file

file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查 3个过程。

[root@ezsvs tmp]# file /bin/ls 【查看 ls的类型】
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically
linked (uses shared libs), for GNU/Linux 2.6.32,
BuildID[sha1]=0x7dc964034aa8ec7327b3992e3239a0f50789a3dd, stripped
[root@ezsvs tmp]# file /etc/passwd 【查看 passwd文件类型】
/etc/passwd: ASCII text 【ASCII格式的普通文本文件】

6.3.3 cp

cp命令用来将一个或多个源文件或者目录复制到指定位置。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。常见选项如下:

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或 目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对 应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

[

root@ezsvs tmp]# cp 111.txt 444.txt 【 复 制 111.txt 文 件 命 名 为444.txt】
[root@ezsvs tmp]# ls
111.txt 222.txt 333.txt 444.txt

6.3.4 rm

rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。 注意:使用 rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,
在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入 y并按 Enter键,才能删除文件。如果仅按 Enter键或其他字符,文件不会被删除。常见选项如下:

-d:直接把欲删除的目录的硬连接数据删除成 0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
-v:显示指令的详细执行过程。

[root@ezsvs tmp]# rm -rf * 【删除该目录下的所有件】

6.3.5 mv

mv 命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。注意事项:mv与 cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而 cp对文件进行复制,文件个数增加了。常见选项如下:

-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-t客户 iling-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

[root@ezsvs tmp]# mv aaa.txt /etc/ 【移动/tmp/aaa.txt文件到/etc下】
[root@ezsvs tmp]# mv bbb ccc 【将 bbb文件更名为 ccc文件】

6.3.6 which

which 命令用于查找并显示给定命令的绝对路径,环境变量 PATH 中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用 which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

[root@ezsvs tmp]# which ls 【查看 ls命令文件位置】
alias ls='ls --color=auto'
/usr/bin/ls
[root@ezsvs tmp]# which cd 【查看 cd命令文件位置】
/usr/bin/cd

6.3.7 ln

ln 命令用来为文件创建链接,连接类型分为硬链接和符号链接两种,默认的链接类型是硬链接。如果要创建符号链接必须使用"-s"选项。 注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

硬链接:一个文件有两个名称,占用相同的空间大小,对其中一个文件改动另一个随之发生改变。
软链接:也叫符号链接,类似 windows下的快捷方式

区别:
(1)不允许给目录创建硬链接,但是可以给目录创建软连接;
(2)只有在同一文件系统中的文件之间才能创建硬链接;软链接可以跨文件系统。
例:为文件/etc/sysconfig/network-scripts/ifcfg-eno16777736 创建软连接,并保
存到/etc目录下

[root@ezsvs ~]# ln -s /etc/sysconfig/network-scripts/ifcfg-eno16777736 /etc/【创建软连接带参数-s】
[root@ezsvs ~]# ls -lh /etc/ifcfg-eno16777736   【查看/etc/ifcfg-eno16777736文件信息】
lrwxrwxrwx. 1 root root 48 517 14:37 /etc/ifcfg-eno16777736 ->
/etc/sysconfig/network-scripts/ifcfg-eno16777736 【/etc下的 ifcfg-eno16777736文件是/etc/sysconfig/network-scripts/ifcfg-eno16777736文件的链接文件

6.3.8 find

find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。find提供了几种条件类型查找,常见的有如下几种:

(1)按名称查找:关键字为“-name”,根据目标文件的部分名称查找,允许使用“*”及“?”通配符;
(2)按文件大小查找:关键字为“-size”,根据目标文件的大小进行查找,一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件。通常的容量单位包括 k、M、G;
(3)按文件属主查找:关键字为“-user”,根据文件是否属于目标用户进行查找;
(4)按文件类型查找:关键字为“-type”,根据文件的类型进行查找,这里的类型指的是普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等。块设备指的是成块读取数据的设备(如硬盘、内存等),而字符设备指的是按单个字符读取数据的设备(如键盘、鼠标等)。

例:在/etc目录中递归查找名称以“pass”开头的文件

[root@ezsvs ~]# find /etc -name "pass*"
/etc/passwd
/etc/selinux/targeted/modules/active/modules/passenger.pp
/etc/passwd-
/etc/pam.d/passwd
/etc/pam.d/password-auth-ac
/etc/pam.d/password-auth

需要同时使用多个查找条件时,各表达式之间可以使用逻辑运算符“-a”、“-o”,分别表示而且(and)、或者(or)。
例:在/boot目录下查找超过 1024Kb或者文件名以“vmlinuz”开头的文件

[root@ezsvs ~]# find /boot -size +1024k -o -name "vmlinuz*"
/boot/grub2/fonts/unicode.pf2
/boot/System.map-3.10.0-123.el7.x86_64
/boot/vmlinuz-3.10.0-123.el7.x86_64
/boot/init客户 mfs-0-rescue-873bf1348f1642bb83d8ce0e261d04fc.img
/boot/vmlinuz-0-rescue-873bf1348f1642bb83d8ce0e261d04fc
/boot/init客户 mfs-3.10.0-123.el7.x86_64.img
/boot/init客户 mfs-3.10.0-123.el7.x86_64kdump.img

find命令还可以对查找到的结果进行过滤处理,在表达式后添加一个“-exec”关键字,并设置过滤用的命令即可。在过滤命令中,使用“{}”表示 find命令的查询输出结果,最后需要添加“\ ;”表示命令结束(注意前面有空格)。
例:查找在/etc下名为 passwd的文件,并以长格式显示其详细信息

[root@ezsvs ~]# find /etc -name passwd -exec ls -ld {} \;
-rw-r--r--. 1 root root 1967 616 16:09 /etc/passwd
-rw-r--r--. 1 root root 188 130 2014 /etc/pam.d/passwd

6.4 文件内容操作命令

6.4.1 cat

cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的 type命令。 注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用 more等命令分屏显示。为了控制滚屏,可以按 Ctrl+S键,停止滚屏;按 Ctrl+Q键可以恢复滚屏。按 Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

[root@ezsvs ~]# cat /proc/version   【查看版本信息】
Linux version 3.10.0-123.el7.x86_64 (mockbuild@x86-
017.build.eng.bos.redhat.com) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16)
(GCC) ) #1 SMP Mon May 5 11:16:57 EDT 2014

6.4.2 more 和 less

more命令是一个基于 vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持 vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有 H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。 该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:–More–(XX%)可以用下列不同的方法对提示做出回答:
按 Space键:显示文本的下一屏内容;
按 Enier键:只显示文本的下一行内容;
按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式;
按 H键:显示帮助屏,该屏上有相关的帮助信息;
按 B键:显示上一屏内容。 按 Q键:退出 rnore命令。
less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less
命令允许用户向前或向后浏览文件,而 more命令只能向前浏览。用 less命令显示文件时,
用 PageUp键向上翻页,用 PageDown键向下翻页。要退出 less程序,应按 Q键。

[root@ezsvs ~]# more /proc/cpuinfo 【分页查看 CPU信息】
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 61
model name : Intel(R) Core(TM) i3-5005U CPU @ 2.00GHz
stepping : 4
microcode : 0x1f
cpu MHz : 1995.383
--More--(0%) 【可翻页】

6.4.3 head 和 tail

head 命令用于显示文件的开头的内容。在默认情况下,head 命令显示文件的头 10 行
内容。常见选项如下:

n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
-v:总是显示文件名的头信息;
-q:不显示文件名的头信息。

tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾 10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。 注意:如果表示字节或行数的 N值之前有一个”+”号,则从文件开头的第 N 项开始显示,而不是显示文件的最后 N项。N 值后面可以有后缀:b表示 512,k表示 1024,m表示 1048576(1M)。

[root@ezsvs ~]# head -3 /etc/passwd 【查看 passwd文件前 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
[root@ezsvs ~]# tail -n 5 /etc/passwd 【查看 passwd文件最后 5行】
sshd:x:74:74:Privilege-sepa客户 ted SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
max:x:1000:1000:max:/home/max:/bin/bash
ezsvs:x:1001:1001::/home/ezsvs:/bin/bash
lin:x:1002:1002::/home/lin:/bin/bash
[root@ezsvs ~]# tail -f /var/log/messages 【可实现实时查看更新日志,默认为 10行】
May 17 14:46:48 ezsvs NetworkManager[1076]: <info> nameserver
'192.168.136.2'
name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-
dispatcher.service'
May 17 14:46:48 ezsvs systemd: Started Network Manager Script Dispatcher
Service.
May 17 14:50:01 ezsvs systemd: Starting Session 43 of user root.
May 17 14:50:01 ezsvs systemd: Started Session 43 of user root.

6.4.4 wc

wc 命令用来计算数字。利用 wc指令我们可以计算文件的 Byte数、字数或是列数,若
不指定文件名称,或是所给予的文件名为“-”, 则 wc指令会从标准输入设备读取数据。常见选项如下:

-c:统计文件内容的字节数;
-l:统计文件内容的行数;
-w:统计内容中的单词个数。

【统计 passwd文件字节数】
1990 /etc/passwd
[

root@ezsvs ~]# wc -l /etc/passwd 【统计 passwd文件行数】
40 /etc/passwd
[root@ezsvs ~]# wc -w /etc/passwd 【统计 passwd文件单词数量】
68 /etc/passwd

6.4.5 grep

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。常见选项如下:

-i:查找内容忽略大小写
-v:反转查找,即输出与条件不相符的行

例:在/etc/passwd文件中查找包含 max字串的行。

[root@ezsvs ~]# grep "max" /etc/passwd
max:x:1000:1000:max:/home/max:/bin/bash

例:查看/etc/vsftp/vsftpd.conf文件中除了以“#”开头的行(一般为注释信息)空行以外的内容。

[root@ezsvs ~]# grep -v "^#" /etc/vsftpd/vsftpd.conf | grep -v "^$"
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_w客户 ppers=YES

6.5 vim 编辑器

6.5.1 vim 简介

VIM是一款在 vi上进行改进的功能性强大的、开源的文本编辑器,它的前身是 vi。当
你发现你的操作系统无法使用 vim时请直接使用 vi。

6.5.2 vim 编辑器的工作模式

命令模式:启动 vim编辑器后默认进入命令模式,该模式中主要完成如光标移动、字符
串查找,以及删除、复制、粘贴文件内容等相关操作。
输入模式:该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改、添
加新的内容。处于输入模式时,vim编辑器的最后一行会出现“—INSERT–”的状态提示信息。
末行模式:该模式中可以设置 vim编辑环境、保存文件、退出编辑器,以及对文件内容
进行查找、替换等操作。处于末行模式时,vim编辑器的最后一行会出现冒号“:”提示符。
命令模式、输入模式和末行模式是 vim编辑环境的三种状态,通过不同的按键操作可以
在不同的模式间进行切换。

6.5.3 命令模式中的基本操作

在命令模式中,可以输入特定的按键进行操作。主要包括模式切换、光标移动、复制、
删除、粘贴、文件内容查找以及保存和退出等操作,这里只介绍最基本、最常用的按键命令。

6.5.3.1 模式切换

在命令模式中,使用 a、i、o等按键可以快速切换至输入模式,同时确定插入点的方式
和位置,以便录入文件内容。需要返回命令模式时,按 Esc键即可。常见的几个模式切换键
及其作用如下:

a:在当前光标位置之后插入内容;
A:在光标所在行的末尾插入内容;
i:在当前光标位置之前插入内容;
I:在光标所在行的开头(行首)插入内容;
o:在光标所在行的后面插入一个新行;
O:在光标所在行的前面插入一个新行。

6.5.3.2 光标移动

光标方向移动:直接使用四个方向键;
翻页移动:使用 page down或快捷键 ctrl+F向下翻动一整页内容;使用 page up或快捷键 ctrl+B向上翻动一整页内容;
行内快速跳转:Home键使光标快速跳转到本行的行首;按 End跳到行尾;
行间快速跳转:gg快速跳转到第一行;GG跳转到最后一行;10gg跳转到第 10行;
为了便于查看行间的跳转效果,可以在末行模式执行:set nu命令显示行号,执行:set nonu命令可以取消显示行号。

6.5.3.3 复制粘贴删除

复制操作:yy复制光标所在的行;10yy复制从光标处开始的后 10行;
粘贴操作:p键粘贴缓冲区的内容到光标位置处之后;P键粘贴到光标位置之前;
删除操作:Del按键删除光标处的单个字符;dd删除光标所在的行;100dd删除从光标 处开始的后10行;d^删除当前光标之前到行首的所有字符;d$删除当前光标处到行尾的所有字符。

6.5.3.4 文件内容查找

在命令模式中,按/键后可以输入指定的字符串,从当前光标处开始向后进行查找。完
成查找后可以按 n、N键在不同的查找结果中进行选择。

6.5.3.5 撤销编辑及保存和退出

在对文件内容进行编辑时,有时候需要对一些失误的编辑进行撤销,这时可以使用按键
命令 u、U 键。其中,u 键命令用于取消最近一次的操作,并恢复操作结果,可以多次重复按 u键恢复已进行的多步操作;U键命令用于取消对当前行所做的所有编辑。另外,当所有编辑完成之后,按 ZZ即可保存并退出。

6.5.4 末行模式中的基本操作

6.5.4.1 保存文件及退出 vim

保存文件:使用:w命令对文件内容进行保存;如果需要另存为其他文件,则需要指定新的文件名,必要时还可以指定文件路径。如:w /root/newfile;
退出编辑器:使用:q 命令退出 vim 编辑器。如果文件内容已经修改过却没有保存,那么需要使用:q!命令强制退出,即不保存退出;
保存并退出:直接使用:wq命令,等同于命令模式下的 ZZ。

6.5.4.2 文件内容替换

在 vim编辑器的末行模式中,能够将文件中的特定字符串替换成新的内容,当需要大批量改同一内容时,使用替换功能能大大提高编辑效率。方法为:[替换范围] sub /旧的内容/新的内容[/g]。

:s/world/nice/ 替换当前光标所在行
:%s/world/nice/ %表示替换所有行
:%s/world/nice/g 替换行内所有关键字
:3s/world/nice/ 替换指定行
:3,10s/world/nice/ 第 3行到第 10

6.6 归档及压缩

6.6.1 归档及压缩介绍

在 linux系统中,在需要对文件或目录进行备份时,可以 cp复制文件或目录,但是占用空间很大,那么此时可以对文件或目录进行打包压缩。打包即将多个文件和目录合并存为一个整体的包文件。压缩操作可以进一步降低打包好的归档文件所占用的磁盘空间,充分提高备份介质的利用率。

6.6.2 压缩介绍

压缩:将文件或目录压缩成更小的文件存放在磁盘中,压缩后文件占用磁盘空间更小,
解压之后可以恢复到原来的状态大小。 Linux中有四种压缩方式,介绍分别如下:
(1).gz:“后缀名” 命令:gzip

gzip messages,压缩后的文件名默认在源文件名后加了.gz

解压缩命令:

gzip -d messages.gz
gunzip messages.gz
不解压查看:zcat menssages.gz

(2)bz2

压缩:bzip2 messages

bzip2 -k messages 保存源文件
解压缩:bzip2 -d messages.bz2
bunzip2 messages.bz2

不解压查看:bzcat messages.bz2

3)xz

压缩:xz messages
解压缩: xz -d messages.xz

unxz -k messages.xz -k:保存源文件
不解压查看:xzcat messages.xz

(4)zip
zip默认保存源文件,可以压缩目录

压缩:zip me.zip messages
解压:unzip me.zip

6.6.3 gzip 和 bzip2

gzip和 bzip2命令均可以用于创建新的压缩文件,或者将已经压缩过的文件进行解压。
两者使用的压缩算法各不相同,但命令使用格式基本类似,一般来说 bzip2的压缩效率要好一些。
使用 gzip制作的压缩文件建议使用扩展名“.gz”,两便用 bzip2制作的压缩文件建议使用扩展名“.bz2”。制作压缩文件时,使用“-9”选项可以有效提高压缩的比率,但文件较大时会需要更多的时间。需要解压文件时,可以使用“-d”选项(使用解压专用命令 gunzip、bunzip2也可以完成此功能)。

备注:gzip只能压缩文件,不能压缩目录,并且压缩和解压缩都会删除源文件。

[root@ezsvs ~]# ls -lh /var/log/messages
-rw-------. 1 root root 775K 517 15:12 /var/log/messages 【源文件有775K】
[root@ezsvs ~]# gzip -9 /var/log/messages 【压缩之后会删除源文件】
[root@ezsvs ~]# ls -lh /var/log/messages.gz
-rw-------. 1 root root 108K 517 15:12 /var/log/messages.gz【压缩后只有108K】
解压缩:
[root@ezsvs log]# gzip -d /var/log/messages.gz 【解压缩】
[root@ezsvs log]# ls -lh /var/log/messages
-rw-------. 1 root root 775K 517 15:12 /var/log/messages 【解压缩之后是源文件的大小 775K】

6.6.4 归档 tar

tar 命令可以只对目录和文件进行归档,而并不进行压缩。但是在实际的备份工作中,通常在归档的同时也会将包文件进行压缩,以便节省磁盘空间。使用 tar命令时,选项前的“-”号引导字符可以省略。常用的几个选项如下:

-c:创建.tar格式的包文件;
-C:解包时指定释放的目标文件夹;
-f:表示使用归档文件;
-j:调用 bzip2程序进行压缩或解压;
-t:列表查看包内的文件;
-v:输出详细信息;
-x:解开.tar格式的包文件;
-z:调用 gzip程序进行压缩或解压。

[root@ezsvs ~]# tar -zcf sysfile.tar.gz /etc /boot 【/etc和/boot目录备份为 sysfile.tar.gz包文件】
tar: 从成员名中删除开头的“/”

[root@ezsvs ~]# ls -lh sysfile.tar.gz
-rw-r--r--. 1 root root 91M 517 15:32 sysfile.tar.gz
[root@ezsvs ~]# tar -jcvf userhome.tar.bz2 /home /etc/passwd
tar: 从成员名中删除开头的“/”
/home/
/home/max/
/home/max/.mozilla/
……
/etc/passwd
[root@ezsvs ~]# ll -lh userhome.tar.bz2
-rw-r--r--. 1 root root 1.9K 517 15:36 userhome.tar.bz2

解压缩:

[root@ezsvs ~]# tar -zxf sysfile.tar.gz 【解压缩到当前目录】
[root@ezsvs ~]# tar -jxf userhome.tar.bz2 -C / 【解压缩到/目录下】

6.6.5 打包压缩实例

tar -cvf filename.tar 将当前目录所有文件归档,但不压缩。
[root@ezsvs tmp]# tar -cvf tmp.tar . 【将/tmp目录所有文件归档,.表示当前目录】
./
./.XIM-unix/
./.font-unix/
./.Test-unix/
[root@ezsvs tmp]# ls
systemd-private-1rDcEM systemd-private-hDfqKR tmp.tar vmware-root
tar -xvf filename.tar 解压 filename.tar到当前文件夹。
[

root@ezsvs tmp]# tar -xvf tmp.tar . 【解压归档文件 tmp.tar到当前目录】
./
./.X11-unix/
./.ICE-unix/
./.XIM-unix/
./.font-unix/
./.Test-unix/
tar -cvjf filename.tar.bz2 使用 bzip2压缩。
[root@ezsvs tmp]# tar -cvjf tmp.tar.bz2 . 【压缩当前目录下文件为 tmp.tar.bz2
文件】
./
./.X11-unix/
./.ICE-unix/
./.XIM-unix/
./.font-unix/
./.Test-unix/
tar -xvjf filename.tar.bz2 解压 filename.tar.bz2到当前文件夹。
[root@ezsvs tmp]# tar -xvjf tmp.tar.bz2 . 【解压缩 tmp.tar.bz2文件到当前目录】
./
./.X11-unix/
./.ICE-unix/
./.XIM-unix/
./.font-unix/
./.Test-unix/
./.esd-0/
tar -cvzf filename.tar.gz 使用 gzip压缩。
[root@ezsvs tmp]# tar -cvzf tmp.tar.gz . 【压缩当前目录下文件为 tmp.tar.gz
文件】
./
./.X11-unix/
./.ICE-unix/
./.XIM-unix/
./.font-unix/
./.Test-unix/
./.esd-0/
./vmware-root/
tar -xvzf filename.tar.gz 解压 filename.tar.gz到当前文件夹。
[root@ezsvs tmp]# tar -xvzf tmp.tar.gz . 【解压缩 tmp.tar.gz文件到当前目录】
./
./.X11-unix/
./.ICE-unix/
./.XIM-unix/
./.font-unix/
./.Test-unix/
./.esd-0/
tar -tf filename 只查看 filename归档的文件,不解压。
[root@ezsvs tmp]# tar -tf tmp.tar 【查看 tmp.tar文件里的内容,不解压】
./
./.X11-unix/
./.ICE-unix/
./.XIM-unix/
./.font-unix/
./.Test-unix/
./.esd-0/
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值