Linux文件管理和编辑常用命令
Linux文件管理和编辑常用命令
mkdir 命令
- 功能说明
mkdir 命令用于创建一个目录,mkdir是make directory的缩写
格式:
mkdir [选项] 目录名
mkdir 命令的选项及说明
-m 对新建目录设置存取权限
-p 可以指定一个路径名称(一次创建多个目录)
- 简单示例
在/home目录下创建user1目录,同时在user01目录下创建user2目录
[root@cinder01 ~]# mkdir -p /home/user1/user2
[root@cinder01 ~]# cd /home/user1/user2/
[root@cinder01 user2]# pwd
/home/user1/user2
mkdir 命令
- 功能说明
more命令读取文本文件时,每次显示一屏,并且在每屏后暂停。
格式:
more [选项] 文件名
more命令的选项及其说明
-d 在屏幕底部more提示符显示友好提示
-s 将输出文件中的多个空行减少为只有一个空行输出,以第一行为准
-p 先清除显示屏以前的信息,再显示文本信息
-c 显示文件时,每屏都清除屏幕先前的信息,然后从最顶端显示出来
- 简单示例
分页显示yum.log文件内容
[root@cinder01 ~]# more yum.log
显示yum.log文件内容,每10行显示一屏,同时清屏
[root@cinder01 ~]# more -c -10 yum.log
cat 命令
- 功能说明
cat 命令用来将文件内容输出到标准输出,同时cat可以用于连接合并文件
格式:
cat [选项] 文件名
或
cat 文件1 文件2 > 文件3
cat选项及其说明
-A 将文件中的制表符显示为“^I”,同时在每行的末尾显示一下“$”符号
-b 将文件中的所有非空行按顺序编号,编号从1开始
-n 显示文件行号(包括空行)
- 简单示例
查看config文件内容,同时将文件中的制表符显示为“^I”,并对非空行编号
[root@cinder01 ~]# cat -Ab /etc/selinux/config
$
1 # This file controls the state of SELinux on the system.$
2 # SELINUX= can take one of these three values:$
3 # enforcing - SELinux security policy is enforced.$
4 # permissive - SELinux prints warnings instead of enforcing.$
5 # disabled - No SELinux policy is loaded.$
6 SELINUX=disabled$
7 # SELINUXTYPE= can take one of three two values:$
8 # targeted - Targeted processes are protected,$
9 # minimum - Modification of targeted policy. Only selected processes are protected. $
10 # mls - Multi Level Security protection.$
11 SELINUXTYPE=targeted $
$
$
[root@cinder01 ~]#
将两个文档合并输出到第三个文件中
[root@cinder01 ~]# echo "This is file1.txt" > file1.txt
[root@cinder01 ~]#
[root@cinder01 ~]# echo "This is file2.txt" > file2.txt
[root@cinder01 ~]#
[root@cinder01 ~]# cat file1.txt file2.txt > file3.txt
[root@cinder01 ~]#
[root@cinder01 ~]# more file3.txt
This is file1.txt
This is file2.txt
[root@cinder01 ~]#
diff 命令
- 功能介绍
diff 命令用于比较两个文件的差异。diff以逐行的方式比较文件的异同,如果指定的是目录,则比较目录中文件名相同的文件,不会比较子目录。
格式:
diff [选项]文件1 文件2
diff 选项及其说明
-c 显示全部内容,并标出不同之处
-b 忽略尾行的空格,同时字符串中的一个或多个空格都视为相同
-r 当文件1和文件2为目录时,会比较子目录的文件
-s 当两个文件相同时,显示文件的相同信息
- 简单示例
比较文件file1.txt file2.txt 的异同
[root@cinder01 ~]# diff file1.txt file2.txt
1c1
< This is file1.txt
---
> This is file2.txt
[root@cinder01 ~]# diff file1.txt file3.txt
1a2
> This is file2.txt
[root@cinder01 ~]#
[root@cinder01 ~]# diff -c file1.txt file3.txt
*** file1.txt 2017-08-26 23:06:21.583437621 +0800
--- file3.txt 2017-08-26 23:07:01.678173298 +0800
***************
*** 1 ****
--- 1,2 ----
This is file1.txt
+ This is file2.txt
[root@cinder01 ~]#
grep 命令
- 功能说明
grep命令是linux下文本过滤工具,grep根据指定的字符串,对文本的每一行进行搜索,如果找到这个字符串,就输出该行的内容
格式
grep [选项] 需要查找的字符串文件名
grep 命令的选项的常用选项说明
-A NUM 除了列出符合条件的行外,同时列出每个符合条件的后NUM行
-c 只显示符合条件的行数,而不显示每行的具体信息
-f file 事先将要搜索的样式写入一个文件中,每行一个样式,然后以这个文件作为条件进行搜索
-i 搜索时忽略大小写
-n 在搜索结果中显示行号
-B 与选项“-A”相反,除了列出符合条件的行外,同时列出每个符合条件行的钱NUM行
- 简单示例
列出config文件中含有disabled字符串的行
[root@cinder01 ~]# grep disabled config
# disabled - No SELinux policy is loaded.
SELINUX=disabled
[root@cinder01 ~]#
列出config文件中含有disabled字符串的行,并标识每行的具体行号
[root@cinder01 ~]# grep -n disabled config
6:# disabled - No SELinux policy is loaded.
7:SELINUX=disabled
[root@cinder01 ~]#
rm 命令
- 功能说明
rm 命令用来删除某个目录及其下的所有文件及子目录,对于链接文件,只是断开链接,原文件不变
格式
rm [选项] 文件或者目录
rm 命令的选项及说明
-r 告诉rm将选项中列出的全部目录以及子目录文件均递归删除,如果不指定"-r"选项,“rm”命令不能删除非空目录
-f 忽略不存在问题,也不给出提示
-i 交互式删除,即在删除前确认
- 简单示例
删除 file3文件
[root@cinder01 ~]# rm -rf file3.txt
[注:]使用命令结合“rm -rf”时需小心,因为文件一旦删除,就不能不想恢复,建议使用“-i”选项,在删除时,再确认是否要删除文件
touch 命令
- 功能说明
touch 命令用来改变指定文件的访问时间和修改时间,若指定文件不存在则创建此文件,若不指定时间,则使用当前时间
touch [选项] 设定的时间文件
touch命令的选项及其说明
-a 改变文件的访问时间为系统当前时间,无须设置时间选项
-m 改变文件的修改时间为系统当前时间,无须设置时间格式
-c 如果文件不存在,不创建也不提升
-d 或 -t 使用指定的日期或时间
-r<参考文件或目录> 把指定文件或目录的日期,时间都设定成和参考文件或目录的日期,时间相同
- 简单示例
touch命令的操作实例,“#”号后面的内容为命令注释
[root@cinder01 ~]# touch test.txt # 创建一个文件test.txt
[root@cinder01 ~]# ls -l test.txt # 显示文件创建时间
-rw-r--r-- 1 root root 0 Aug 27 00:49 test.txt
[root@cinder01 ~]# date # 系统当前时间
Sun Aug 27 00:50:06 CST 2017
[root@cinder01 ~]# ls -lu test.txt
-rw-r--r-- 1 root root 0 Aug 27 00:49 test.txt
[root@cinder01 ~]# touch -a test.txt # 改变文件访问时间为系统当前时间
[root@cinder01 ~]#
[root@cinder01 ~]# ls -lu test.txt
-rw-r--r-- 1 root root 0 Aug 27 00:50 test.txt
[root@cinder01 ~]#
[root@cinder01 ~]# touch -m test.txt # 改变文件的修改时间为系统当前时间
[root@cinder01 ~]#
[root@cinder01 ~]# ls -l test.txt
-rw-r--r-- 1 root root 0 Aug 27 00:50 test.txt
[root@cinder01 ~]#
[root@cinder01 ~]#
ln 命令
- 功能说明
ln 命令用来在文件或目录之间创建链接
linux 环境下有硬链接和软连接两种
硬链接:是指通过文件的incode来进行链接
软链接:是一个指向真正文件或者目录位置的符号连接(类似于windows系统的快捷方式)
格式:
ln [选项] 源文件 目标链接名
ln命令选项及其说明
-f 如果在目标位置存在与链接名相同的文件,这个文件将被删除
-s 进行软链接
-d 允许系统管理员硬链接自己的目录
-b 对将在链接时会被覆盖或者删除的文件进行备份
- 简单示例
将/etc/inittab文件进行硬链接到/opt/backup目录下(此时,backup目录下会生成一个inittab文件,与源文件内容相同)
[root@cinder01 ~]# ln /etc/inittab /opt/backup/inittab
将/etc/inittab文件进行软链接到/opt目录下
[root@cinder01 ~]# ln -s /etc/inittab /opt/
[root@cinder01 ~]# ls -l /opt/
total 4
lrwxrwxrwx 1 root root 12 Aug 27 01:08 inittab -> /etc/inittab
[root@cinder01 ~]#
file 命令
- 功能说明
file命令用来显示文件的类型,对于长度为0的文件,将识别为空文件,对于符号连接文件,默认情况下将显示符号链接引用的真实文件路径
格式
file [选项] 文件名
file命令的选项及说明
-b 显示文件类型结果,不显示对应文件名称
-L 直接显示符号链接所指向文件的类型
-z 显示压缩文件的信息
-i 如果文件不是常规文件,则不进一步对文件类型进行分类
- 简单示例
显示/etc/init.d/network文件类型,显示结果为shell可执行文件
[root@cinder01 ~]# file /etc/init.d/network
/etc/init.d/network: Bourne-Again shell script, ASCII text executable
[root@cinder01 ~]#
显示/bin/sh文件的类型,显示结果为符号链接文件
[root@cinder01 ~]# file /bin/sh
/bin/sh: symbolic link to `bash'
[root@cinder01 ~]#
显示file1.txt文件类型。显示结果为ASCII文件文本
[root@cinder01 ~]# file file1.txt
file1.txt: ASCII text
[root@cinder01 ~]#
显示/dev/sda1文件类型,显示结果为块设备文件
[root@cinder01 ~]# file /dev/sda1
/dev/sda1: block special
[root@cinder01 ~]#
cp 命令
- 功能说明
cp命令用来将给出的文件或者目录复制到另一个文件或者目录
格式:
cp [选项] 源文件母子目录 目标文件或者目录
cp命令的选项及其说明
-a 在复制目录时使用,它保留所有信息,包含文件链接,文件属性,并递归地复制目录
-r 若给出的原文件是一个目录文件,此时cp将递归复制该目录下所有的子目录和文件
-d 复制时保留链接,这样不会失去链接文件
-p 保留文件的修改时间和存取权限
-i 如果已经有相同文件名的目标文件,则提示用户是否覆盖
- 简单示例
将当前目录下的所有文件复制到/tmp目录下,“./*”表示当前目录下所有文件和目录
[root@cinder01 ~]# cp -r ./* /tmp
将/home目录下的目录及子目录全部复制到/tmp目录下
[root@cinder01 ~]# cp -r /home/ /tmp/
find 命令
- 功能说明
find 命令用于在指定的路径下查找指定的文件
格式:
find path-name[-options] [-print -exec -ok命令 {} \;]
选项说明:
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
-group<群组名称>:查找符合指定之群组名称的文件或目录;
-help或——help:在线帮助;
-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum:查找符合指定的inode编号的文件或目录;
-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links<连接数目>:查找符合指定的硬连接数目的文件或目录;
-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth<目录层级>:设置最大目录层级;
-mindepth<目录层级>:设置最小目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path<范本样式>:指定字符串作为寻找目录的范本样式;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-type<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
- 简单示例
列出当前目录及子目录下所有文件和文件夹
[root@cinder01 ~]# find .
在/home目录下查找以.txt结尾的文件名
[root@cinder01 ~]# find /home -name "*.txt"
同上,但忽略大小写
[root@cinder01 ~]# find /home -iname "*.txt"
当前目录及子目录下查找所有以.txt和.pdf结尾的文件
[root@cinder01 ~]# find . \( -name "*.txt" -o -name "*.pdf" \)
或
[root@cinder01 ~]# find . -name "*.txt" -o -name "*.pdf"
匹配文件路径或者文件
[root@cinder01 ~]# find /usr/ -path "*local*"
基于正则表达式匹配文件路径
[root@cinder01 ~]# find . -regex ".*\(\.txt\|\.pdf\)$"
split 命令
- 功能说明
split命令用于分割文档,将一个文档分拆成几个
格式:
split [选项] [input_file] [output_file]
split命令选项说明
-b size 指定分割出来的文件大小,size可以加入单位,b表示512字节,k表示1KB,m表示1MB
-n 将“n”指定分割的每个文件的长度,默认为1000行
-d 将split命令生成的文件序列以数字形式命名
-a 指定split命令生成的文件序列的长度,默认长度为2
- input_file: 需要分割的文件
- output_file: 分割出来的文件序列,split命令分割后生成的文件序列依次排序
- 简单示例
将messages-20170925文件分割,设定每个分割文件的大小为10KB
[root@cinder01 ~]# split -b 10k messages-20170925 messages
mv 命令
- 功能说明
mv命令用来将文件或者目录改名或者将文件由一个目录移动到另一个目录下
格式:
mv [选项] 源文件或者目录 目标文件或者目录
mv命令的选项及其说明
-i 交互式操作,在对已经存在的文件或者目录覆盖时,系统会询问是否覆盖
-f 禁止交互式操作,在mv将要覆盖文件或者目录时,不提示任何提示,默认覆盖
- 简单示例
修改文件名,将12333.jpg重命名为1111.jpg
[root@cinder01 ~]# mv 12333.jpg 1111.jpg