天天看点

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.3 文件管理与编辑

本节书摘来自异步社区《循序渐进linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》一书中的第4章,第4.3节,作者:高俊峰著,更多章节内容可以访问云栖社区“异步社区”公众号查看

4.3.1 mkdir命令

1.功能说明

mkdir命令用于创建一个目录。mkdir是make directory的缩写。其格式如下。

<code>mkdir [选项] 目录名</code>

2.举例

在/home下创建user1目录,同时在user1下创建user2目录,也就是说,连续创建两个目录。

<code>[root@mylinux~]#mkdir –p /home/user1/user2</code>

这样就在/home目录下创建了嵌套目录user1/user2。

4.3.2 more命令

如果一个文本文件比较长,一屏无法显示完毕,就需要使用more命令。more命令读取文本文件时,每次显示一屏,并且在每屏后暂停,同时在屏幕底部显示单词“more”。如果此时按enter键,more命令就会接着再显示文本的一行,依此类推;如果按空格键,more命令就继续显示文本文件的另一屏信息。其格式如下。

<code>more [选项] 文件名</code>

                              

1)要以分页的方式显示makefile文件的内容,可使用以下命令。

<code>[root@mylinux~]#more makefile</code>

2)要显示makefile文件的内容,每10行显示一屏,同时清除屏幕,使用以下命令。

<code>[root@mylinux~]#more –c -10 makefile</code>

4.3.3 cat命令

cat命令用来将文件的内容输出到标准输出,类似于dos下的type命令,同时cat还可以用于连接合并文件。其格式如下。

<code>cat [选项] 文件名</code>

或者:

<code>cat 文件1 文件2 &gt;文件3</code>

cat命令的选项及其说明如表4.16所示。

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.3 文件管理与编辑

    

1)要查看kconfig文件的内容,同时将文件中的制表符显示为“^i”,并对非空行进行编号输出,可以使用以下命令。

<code>[root@mylinux~]#cat –ab kconfig</code>

2)以下命令将文件file1.txt和file1.txt的内容合并后输出到文件file3.txt。

4.3.4 diff命令

diff命令用来比较文件的差异。diff以逐行的方式比较文本文件的异同,如果指定比较的是目录,则diff会比较目录中相同文件名的文件,但不会比较其中的子目录。其格式如下。

<code>diff [选项] 文件1 文件2</code>

diff命令的选项及其说明如表4.17所示。

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.3 文件管理与编辑

2.输出格式

通常输出信息由如下格式组成。

其中,字母a、d、c之前的n1和n2代表文件1的行号,字母a、d、c之后的n3和n4代表文件2的行号,字母a、d、c分别表示附加、删除和修改操作。在上面输出形式的每行后紧跟着两个文件的若干不同行,其中以“&lt;”打头的行属于文件1,以“&gt;”打头的行属于文件2。

3.举例

比较文件file1.txt和文件file2.txt的异同,同时将/home/admin/file3.txt文件和当前目录下的file2.txt文件进行比较。

4.3.5 grep命令

grep命令是linux下的文本过滤工具,grep根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容。其格式如下。

<code>grep [选项] 需要查找的字符串文件名</code>

1)列出install.log文件中含有rpm字符串的行。

2)列出install.log文件中含有rpm字符串的行,忽略大小写,并标识出每行的具体行号。

4.3.6 rm命令

功能说明

rm命令用来删除某个目录及其下的所有文件及子目录。对于链接文件,只是断开了链接,原文件保持不变。其格式如下。

<code>rm [选项] 文件或者目录</code>

注意

 使用rm命令要特别小心,“rm-rf”组合要慎用,因为一旦文件被删除,就不能被恢复。linux没有类似于windows的回收站。因此,为了防止文件或者目录被误删除,可以使用rm的“-i”选项,来逐个确认要删除的文件。使用“-i”选项时,如果用户输入“y”,文件将被删除;如果输入其他任何信息,文件则不被删除。

4.3.7 touch命令

touch命令用来改变指定文件的访问时间和修改时间,若指定文件不存在则创建此文件。如果没有指定时间,则使用当前时间。其格式如下。

<code>touch [选项] 设定的时间文件</code>

下面是touch命令的一个操作实例,“#”号后面的内容为命令注释。

4.3.8 ln命令

ln命令用来在文件或目录之间创建链接。

linux下的链接有两种,一种是硬链接(hard link),另一种是符号链接(symbolic link),默认情况下ln命令产生的是硬链接。

硬链接:是指通过文件的inode来进行链接。在linux的文件系统中,保存在磁盘的所有类型的文件都会分配一个编号,这个编号称为inode号(inode index)。多个文件指向同一个inode在linux系统中是允许的,这就是所谓的硬链接。硬链接的作用是允许一个文件拥有多个有效的路径名,这样用户就可以对一些重要文件建立硬链接,以防止误删除操作。因为对应该文件的inode有一个以上的链接,所以只删除一个链接并不影像inode本身和其他链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会释放,也就是说,此时文件才会被真正删除。

符号链接:也叫软链接,软链接类似于windows中的快捷方式,因此软链接是一个指向真正的文件或者目录位置的符号连接。

ln命令的格式如下。

<code>ln [选项] 源文件目标链接名</code>

ln命令的选项及其说明如表4.21所示。

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.3 文件管理与编辑

  

1)将/etc/inittab文件进行硬链接到/opt/backup目录下,此时/opt/backup下就生成了一个inittab文件。可以看到,两个文件没有任何不同。

2)在当前目录下有两个文件mylinux1.txt和mylinux.txt,现在将mylinux1.txt硬链接到当前目录下,链接名为mylinux.txt。当前目录下存在相同的文件名mylinux.txt,如果使用ln的“-f”选项,就会删除mylinux.txt文件。因此这里使用“-b”选项先备份mylinux.txt文件,然后再把mylinux1.txt硬链接到mylinux.txt。下面的mylinux.txt~文件就是“-b”选项备份产生的文件。

3)将/etc/inittab文件符号链接到/opt下。

4.3.9 file命令

file命令用来显示文件的类型。对于长度为0的文件,将识别为空文件;对于符号连接文件,默认情况下将显示符号链接引用的真实文件路径。其格式如下。

<code>file [选项] 文件名</code>

file命令的选项及其说明如表4.22所示。

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.3 文件管理与编辑

1)显示/etc/init.d/halt文件的类型,显示结果为shell可执行文件。

2)显示/bin/sh文件的类型,显示结果为符号链接文件。

3)显示/opt/file1.txt文件的类型,显示结果为ascii文本文件。

4)显示/dev/had文件的类型,显示结果为块设备文件。

4.3.10 cp命令

cp命令用来将给出的文件或者目录复制到另一个文件或者目录中。cp与windows下的copy命令类似,但是cp命令更加强大。其格式如下。

<code>cp [选项] 源文件或目录目标文件或目录</code>

1)将当前目录下的所有文件复制到/tmp目录下,“./*”表示当前目录下所有文件和目录。

<code>[root@mylinux~]#cp –r ./* /tmp</code>

2)将/home/oracle目录及其子目录下的全部内容复制到/home/ixdba下。

<code>[root@mylinux~]#cp –r /home/oracle /home/ixdba</code>

4.3.11 find命令

find命令用来在指定的路径下查找指定的文件。其格式如下。

<code>find path-name[-options] [-print –exec -ok命令 {} \;]</code>

具体的选项说明如下。

path-name:find命令查找的目录路径,例如,可以用“.”表示当前目录,用“/”表示系统根目录。

-options:find命令的这个选项主要用来控制搜索的方式。

1)在系统根目录下,查找文件类型为普通文件,属于ixdba用户,两天以前,并且查找时不包含/usr/bin目录的文件名为main.c的文件,并将结果输出到屏幕。

2)对上例中搜索的结果进行删除操作。

3)在系统根目录下查找不在/var/log和/usr/bin目录下的所有普通文件。

表示引用,告诉shell不对后面的字符做特殊解释,而留给find命令去解释其意义。

 “( -path”中,在“(”和“-path”之间是有空格的,同时“/usr/bin )”在“bin”和“”之间也是有空格的。

4)查找系统中所有大小为0的普通文件,并列出它们的完整路径。

<code>[root@mylinux~]#find / -type f –size 0 –exec ls –al {} \;</code>

5)查找系统/var/logs目录中修改时间在7天以前的普通文件,然后以交互方式删除。

6)在当前目录及子目录下查找所有“*.txt”文件。

<code>[root@mylinux~]#find .–name "*.txt"–print</code>`

7)在用户自己的根目录下查找文件名以一个大写字母开头,紧接着是一个小写字母和两个数字,最后以“.txt”结尾的文件。

<code>[root@mylinux~]$ find ~ -name “[a-z][a-z][0--9][0--9]*.txt” -print</code>

8)在/etc目录下查找文件属主为ixdba用户的文件。

<code>[root@mylinux~]#find /etc –user ixdba -print</code>

4.3.12 split命令

split命令用来分割文档,将一个文件分成数个。其格式如下。

<code>split [选项] [input_file] [output_file]</code>

input_file:需要分割的文件。

output_file:分割出来的文件序列,split命令分割后生成的文件序列名依次为output_fileaa、output_fileab、output_fileac等。如果没有指定output_file,系统默认以“x”作为输出文件名。

1)将access_log文件进行分割,设定每个分割文件的大小为10mb。

<code>[root@mylinux ~]#split –b 10maccess_logaccess_log_bak</code>

执行完毕,在当前目录下就生成类似access_log_bakaa、access_log_bakab和access_log_bakah等分割文件,每个文件大小10mb。

2)将/opt/etc.zip文件进行分割,指定每个文件大小为2mb,输出文件序列以数字形式显示,序列长度为3。

<code>[root@mylinux ~]#split –b 2m–d –a 3 /opt/etc.zip /opt/etc.zip_bak</code>

split命令执行完毕,在/opt/目录下生成类似etc.zip_bak001、etc.zip_bak002和etc.zip_bak003等文件。

4.3.13 mv命令

mv命令用来将文件或目录改名或将文件由一个目录移入另一个目录中。如果源类型和目标类型都是文件或者目录,mv将进行目录重命名。如果源类型为文件,而目标类型为目录,mv将进行文件的移动。如果源类型为目录,则目标类型只能是目录,不能是文件,此时完成目录重命名。其格式如下。

<code>mv [选项] 源文件或目录目标文件或目录</code>

创建一个mydocument目录和一个document文件,然后将document文件移动到mydocument目录下,最后修改mydocument目录为mydocument_1。

继续阅读