玩转Linux命令之文件管理与编辑


1 mkdir命令

功能说明
mkdir命令是用来创建一个目录,mkdir是make directory的缩写,其格式如下
mkdir[选项][目录名]

mkdir命令的选项及其说明如下

选项 说明
-m 对新建目录设置存取权限
-p 可以指定一个路径,此次若路径中的某些目录尚不存在,加上此选项后,系统将自动创建那些不存在的目录,也就是说一次创建多个目录

使用案例

[[email protected] guanglei]# mkdir -p parent/child/son #连续创建三个(层次)目录

2 less命令

功能说明
如果一个文本文件比较长,一屏无法显示完毕,就需要使用less命令,less命令读写文本文件时,每次显示一屏,并且在每屏后暂停,如果此时按Enter键,more就会接着显示文本的一行,依此类推,如果按空格键,就会继续显示另一屏的信息。同时可以使用键盘按键PageUp和PageDown来实现上下翻页。其格式如下

less[选项]文件名

more命令的选项及其说明如下

选项 说明
-b 设置缓冲区大小
-e 当文件结束之后自动离开
-i 忽略搜索时的大小写
-N 显示每行的行号
-m 显示类似more的百分比

快捷键
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页

使用案例

[[email protected] ~]# less /etc/services # 查看记录网络服务名和它们对应使用的端口号及协议的文件

3 cat命令

功能说明
cat命令是用来将文件的内容全部输出到标准输出,类似于DOS中的type命令,同时cat还可以实现用于连接合并文件,其格式如下
cat[选项] 文件名
或者是
cat 文件1 文件2 >文件3

cat命令的选项及其说明如下

选项 说明
-A 将文件的制表符显示为”^I”,同时在每行的末尾显示一个$符号
-b 将文件中所有的非空内容按照顺序编号,编号从1开始

使用案例

[[email protected] ~]# cat -Ab /etc/services #查看记录网络服务名和它们对应使用的端口号及协议的文件

创建两个带测试数据的文件file1,txt,file2.txt

[[email protected] ~]# echo "this is file1.txt's content" > file1.txt
[[email protected] ~]# echo "this is file2.txt's content" > file2.txt 

使用cat将fiel1.txt和file2.txt俩文本文件的内容输出到file3.txt

[[email protected] ~]# cat file1.txt file2.txt >file3.txt 
[[email protected] ~]# cat file3.txt #查看file3.txt的文件内容
this is file1.txt's content
this is file2.txt's content

4 vimdiff命令

功能说明
vimdiff以逐行的方式比较文本文件的异同,首先保证系统中的diff命令是可用的,Vim的diff模式是依赖于diff命令的。其格式如下
vimdiff [options] file1 file2 [file3 [file4]]

当执行vimdiff进行文件比较时,屏幕被垂直分割,左右两侧分别显示被比较的两个文件。两个文件中连续的相同的行被折叠了起来,以便使用者能 把注意力集中在两个文件的差异上。只在某一文件中存在的行的背景色被设置为蓝色,而在另一文件中的对应位置被显示为绿色。两个文件中都存在,但是包含差异 的行显示为粉色背景,引起差异的文字用红色背景加以突出。

使用案例

[[email protected] ~]# vimdiff file1.txt file2.txt #以类似于图形化界面的方式比较两个文件的异同

5 grep命令

功能说明
grep命令是Linux下的文本过滤工具,grep根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行内容,其格式如下
grep [选项] 需要查找的字符串文件名
grep命令的选项很多,这里列举出最常见的选项说明

选项 说明
-A NUM 除了列出符合条件的行外,同时列出每个符合条件行的后NUM行
-c 只显示符合条件的行数,不显示每行的信息
-i 搜索时忽略大小写
-n 在搜索结果中显示行号
-v 过滤掉指定内容的行
-E 过滤多个字符串
-o 输出多个精确匹配的字符,而不是整行

使用案例

创建并显示测试数据的内容

[[email protected] ~]# cat tony.txt 
java 
JAVA
Linux
unix
[[email protected] ~]# cat tony.txt |grep -vin "java" #查看过滤掉指定内容的文件,并显示行号
3:Linux
4:unix
5:

6 rm命令

功能说明
rm命令用来删除某个目录及其下的所有子目录或者文件。对于链接文件,只是断开了链接,原文件保持不变,其格式如下
rm [选项] 文件或者目录
rm 命令的选项及其说明如下

选项 说明
-r 递归删除指定的目录及其下的所有子目录或者文件
-f 忽略不存在的问题,也不给出提示
-i 交互式删除,在删除文件时给出提示

使用案例
生产环境最好不要使用该命令,如果真的要删除文件,最好使用cp命令备份
或者使用mv移到一个临时目录

[[email protected] ~]# rm -i file1.txt file2.txt #使用交互式删除两个文本文件
rm: remove regular file ‘file1.txt’? y
rm: remove regular file ‘file2.txt’? y

7 touch 命令

功能说明
touch 命令用来改变指定文件的访问时间和修改时间,若指定文件不存在则创建此文件,如果没有指定时间,则使用当前时间,其格式如下
touch [选项] 设定的时间文件
touch命令的选项及其说明如下

选项 说明
-a 改变文件的访问时间为系统当前时间,无需设置时间选项
-m 改变文件的修改时间为系统当前时间,无需设置时间选项
-c 如果文件不存在,不创建 也不提示
-d或者-t 使用指定的日期或者时间

使用案例

[[email protected] ~]# touch test.txt #创建一个测试文件
[[email protected] ~]# ls -l #查看测试文件的信息
total 0
-rw-r--r--. 1 root root 0 Feb 27 23:13 test.txt
[[email protected] ~]# touch -a test.txt #改变文件的访问时间为当前系统时间

8 cp命令

功能说明
cp命令用来将给出的文件或者目录复制到另外一个文件或者目录中,cp与Windows下的copy命令类似,但是cp更加强大,其格式如下
cp [选项] 源文件或者目录 目标文件或者目录
cp命令的选项及其说明如下

选项 说明
-a 在复制目录时使用。它保留所有的信息,包含文件链接,文件属性,并递归的复制目录
-r 若给出的源文件是一个目录文件,此时cp将递归复制该目录下的所有子目录和文件,此时的目标文件必须为一个目录名
-d 复制时保留链接,这样不会失去链接文件
-p 保留文件的修改时间和存储权限
-i 如果已经有相同文件名的目标文件,则提示用户是否覆盖

使用案例

[[email protected] ~]# cp -r ./* /tmp/ #将当前目录下的所有文件和目录复制到/tmp目录中

9 find命令

功能说明
find命令用来在指定的路径下查找文件,其格式如下
find path-name [-options] [-print -exec -ok命令 {}\;]
find 命令的选项具体说明如下:
path-name:find命令查找文件的路径,例如可以使用”.”表示当前目录,用”/”表示系统根目录
-options:find命令的这个选项主要是用来控制搜索的方式,这里列出常见的控制方式

格式 说明
-name ‘字符串’ 查找文件名匹配所给字符串的所有文件,字符串内可以使用通配符*、?、[]
-type 文件类型 按照指定的文件类型搜索,文件类型包括b(块设备文件),c(字符设备文件),f(普通文件),l(符号链接),d(目录),p(管道),s(socket)文件
-gid n 查找属于ID号为n的用户组的所有文件
-uid n 查找属于ID号为n的用户的所有文件
-empty 查找大小为0的目录或者文件
-path’字符串’ 查找路径名匹配所给字符串的所有文件,字符串内可以使用通配符*、?、[]
-size n 查找文件长度为n块的文件,带有c时表示文件长度以字节计算
-user’字符串’ 查找属于用户名为所给字符串的所有文件
-mtime +n或者-n 按时间搜索,+n表示n天之前的,-n表示今天到n天前之间的
-prune 指出搜索时不搜索该目录,如果同时使用-depth,那么该选项被find命令忽略

使用案例

1 查找系统根目录下所有大小为0的普通文件,并列出它们的完整路径

[[email protected] ~]# find / -type f -size 0 |xargs ls -al

2 删除一个目录下的所有文件但保留一个指定的文件

[[email protected] data]# echo "this is test content" >tony.txt  #创建文本测试数据
[[email protected] data]# echo "this is test content" >tom.txt  #创建文本测试数据
[[email protected] data]# find /data/ -type f ! -name "tony.txt"|xargs rm -rf

10 mv命令

功能说明
mv命令用来将文件或者目录改名或者将文件由一个目录移入到另外一个目录中。其格式如下
mv [选项] 源文件或目录 目标文件或者目录
mv命令的选项及其说明如下

选项 说明
-i 交互式覆盖
-f 禁止交互式操作,在mv将要覆盖某个文件或者目录时,不给任何提示,默认覆盖

使用案例

使用mv实现文件的重命名

[[email protected] ~]# ll
total 0
-rw-r--r--. 1 root root 0 Feb 27 23:14 test.txt
[[email protected] ~]# mv test.txt test_new.txt
[[email protected] ~]# ll
total 0
-rw-r--r--. 1 root root 0 Feb 27 23:14 test_new.txt

相关内容