文本文件编辑命令

在Linux系统中“一切都是文件”,对服务程序进行配置自然也就是编辑程序的配置文件。

cat命令

cat命令用于查看纯文本文件(内容较少的),英文全称为:“concatenate”,语法格式为:“cat [参数] 文件名称”。

  • 查看文本内容时显示行号:
[root@linuxprobe ~]# cat -n filename

image.png

more命令

more命令用于查看纯文本文件(内容较多的),语法格式为:“more [参数] 文件名称”。

  • more命令会在最下面使用百分比的形式来提示已经阅读了多少内容,还可以使用空格键回车键向下翻页
[root@linuxprobe ~]# more filename

image.png

head命令

head命令用于查看纯文本文件的前N行,语法格式为:“head [参数] 文件名称”。

  • 查看文本中前10行的内容:
[root@linuxprobe ~]# head -n 10 filename

image.png

tail命令

tail命令用于查看纯文本文件的后N行或持续刷新文件的最新内容,语法格式为:“tail [参数] 文件名称”。

  • 查看文本内容的最后10行:
[root@linuxprobe ~]# tail -n 20 filename

image.png

  • 实时查看最新日志文件,持续刷新一个文件的内容:
[root@linuxprobe ~]# tail -f filename

image.png

tr命令

tr命令用于替换文本内容中的字符,英文全称为:“translate”,语法格式为:“tr [原始字符] [目标字符]”。

  • 把某个文本内容中的英文全部替换为大写:
[root@linuxprobe ~]# cat filename | tr [a-z] [A-Z] 

image.png

wc命令

wc命令用于统计指定文本文件的行数、字数或字节数,英文全称为:“word counts”,语法格式为:“wc [参数] 文件名称”。

  • wc的参数以及相应的作用如下表所示:
参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
  • Linux系统中,/etc/passwd是用于保存系统账户信息的文件,统计当前系统中有多少个用户:
[root@linuxprobe ~]# wc -l /etc/passwd 

image.png

stat命令

stat命令用于查看文件的具体存储细节和时间等信息,英文全称为:“status”,语法格式为:“stat 文件名称”。

  • 在Linux系统中,文件包含三种时间状态,分别是:
含义
Access Time 最后一次内容被访问的时间,简称Atime
Modify Time 最后一次内容被修改的时间,简称Mtime
Change Time 文件属性最后一次被修改的时间,简称Ctime
  • 查看文件上面的三种时间状态信息:

image.png

grep命令

grep命令用于按行提取文本内容,语法格式为:“grep [参数] 文件名称”。

  • 两个最常用的参数:
参数 含义
-n 用于显示搜索到信息的行号
-v 用于反选信息(即没有包含关键词的所有信息行)
  • grep命令的参数及其作用如表所示
参数 作用
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择——仅列出没有“关键词”的行
  • 在Linux系统中,/etc/passwd文件是保存着所有的用户信息,用户的登录终端被设置成/sbin/nologin,则不再允许登录系统,因此可以使用grep命令来查找出当前系统中不允许登录系统的所有用户信息:
[root@linuxprobe ~]# grep /sbin/nologin /etc/passwd

image.png

cut命令

cut命令用于按列提取文本内容,语法格式为:“cut [参数] 文件名称”。

  • 系统文件在保存用户数据信息时,每一项值之间是采用冒号来间隔的,先查看一下:
[root@linuxprobe ~]# head -n 2 /etc/passwd

image.png

  • 按列搜索,要使用-f参数来设置需要看的列数,-d参数来设置间隔符号

  • 提取passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:

[root@linuxprobe ~]# cut -d : -f 1 /etc/passwd

image.png

diff命令

diff命令用于比较多个文件之间内容的差异,英文全称为:“different”,语法格式为:“diff [参数] 文件名称A 文件名称B”。

参数 含义
--brief 确认两个文件是否不同
-c 详细比较出多个文件的差异之处
  • 例如,先使用cat命令分别查看diff_A.txt和diff_B.txt文件的内容,然后进行比较:
[root@linuxprobe ~]# cat diff_A.txt 
[root@linuxprobe ~]# cat diff_B.txt 
  • 接下来使用diff --brief命令显示比较后的结果,判断文件是否相同:
[root@linuxprobe ~]# diff --brief diff_A.txt diff_B.txt 

image.png

  • 最后使用带有-c参数的diff命令来描述文件内容具体的不同:
[root@linuxprobe ~]# diff -c diff_A.txt diff_B.txt

image.png

uniq命令

uniq命令用于去除文本中连续的重复行,英文全称为:“unique”,语法格式为:“uniq [参数] 文件名称”。

  • 我们对两个文本内容进行操作,区别一目了然:
[root@linuxprobe ~]# cat uniq.txt 
[root@linuxprobe ~]# uniq uniq.txt 

image.png

sort命令

sort命令用于对文本内容进行再排序,语法格式为:“sort [参数] 文件名称”。

  • sort命令的参数及其作用如表所示
参数 作用
-f 忽略大小写
-b 忽略缩进与空格
-n 以数值型排序
-r 反向排序
-u 去除重复行
-t 指定间隔符
-k 设置字段范围
  • sort命令执行后默认会按照字母顺序进行排序,非常方便:
[root@linuxprobe ~]# cat fruit.txt 
[root@linuxprobe ~]# sort fruit.txt

image.png

  • 与uniq命令不同,sort命令不论内容之间是否夹杂有其它内容,只要有两个一摸一样的内容行,就可以使用**-u参数进行去重操作**:
[root@linuxprobe ~]# cat sort.txt  
[root@linuxprobe ~]# sort -u sort.txt 

image.png

  • sort还能对数字进行排序,而且不会出现1小于20这种问题(有些命令只比较第一位):
[root@linuxprobe ~]# cat number.txt 
[root@linuxprobe ~]# sort -n number.txt 

image.png

  • 下面的内容是节选自/etc/passwd文件中前五个字段的内容,并进行混乱排序后的样子:
[root@linuxprobe ~]# cat user.txt

image.png

  • 上图内容是用冒号进行间隔的五个字段,以第三个字段中的数字作为排序依据,可以用-t参数指定间隔符,-k参数指定第几列,-n参数进行数字排序:
[root@linuxprobe ~]# sort -t : -k 3 -n user.txt 

image.png

文件目录管理命令

Linux系统日常运维工作中最常用的命令,实现对文件的创建、修改、复制、剪切、更名与删除等操作。

touch命令

touch命令用于创建空白文件或设置文件的时间,语法格式为:“touch [参数] 文件名称”。

  • 创建出一个名为linuxprobe的空白文本文件:
[root@linuxprobe ~]# touch linuxprobe
  • 设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)。touch命令的参数及其作用如表所示。
参数 作用
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改atime与mtime
  • 先使用ls命令查看一个文件的修改时间,随后修改它,再查看一下文件时间发生了变化:
[root@linuxprobe ~]# ls -l anaconda-ks.cfg 
[root@linuxprobe ~]# echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg [root@linuxprobe ~]# ls -l anaconda-ks.cfg 

image.png

  • 如果不想让别人知道我们修改了它,可以用touch命令把修改后的文件时间设置成修改之前的时间(很多***就是这样做的):
[root@linuxprobe ~]# touch -d "2020-05-04 15:44" anaconda-ks.cfg 
[root@linuxprobe ~]# ls -l anaconda-ks.cfg 

image.png

mkdir命令

mkdir命令用于创建空白的目录,英文全称为:“make directory”,语法格式为:“mkdir [参数] 目录名称”。

  • 除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套叠层关系的文件目录
[root@linuxprobe ~]# mkdir linuxprobe 
[root@linuxprobe ~]# cd linuxprobe 
[root@linuxprobe linuxprobe]# mkdir -p a/b/c/d/e 
[root@linuxprobe linuxprobe]# cd a 
[root@linuxprobe a]# cd b 
[root@linuxprobe b]#

image.png

cp命令

cp命令用于复制文件或目录,英文全称为:“copy”,语法格式为:“cp [参数] 源文件名称 目标文件名称”。

  • 在Linux系统中,复制操作具体分为3种情况:
目标文件 cp作用
目录 会把源文件复制到该目录中
普通文件 会询问是否要覆盖它
不存在 执行正常的复制操作
  • 复制目录时要加上-r参数,cp命令的参数及其作用如表所示。
参数 作用
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p、d、r为上述参数)
  • 使用创建一个名为install.log的普通空白文件,然后将其复制为一份名为x.log的备份文件,最后再使用ls命令查看目录中的文件:
[root@linuxprobe ~]# touch install.log 
[root@linuxprobe ~]# cp install.log x.log 
[root@linuxprobe ~]# ls install.log x.log

image.png

mv命令

mv命令用于剪切或重命名文件,英文全称为:“move”,语法格式为:“mv [参数] 源文件名称 目标文件名称”。

  • 剪切操作不同于复制操作,它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作:
[root@linuxprobe ~]# mv x.log linux.log 
[root@linuxprobe ~]# ls install.log linux.log

image.png

rm命令

rm命令用于删除文件或目录,英文全称为:“remove”,语法格式为:“rm [参数] 文件名称”。

  • 在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想看到确认信息,可使用rm -f来强制删除。
  • 删除一个目录,需要在rm命令后面加一个-r参数才可以,否则删除不掉。
  • rm命令的参数及其作用如表所示。
参数 作用
-f 强制执行
-i 删除前询问
-r 删除目录
-v 显示过程
  • 尝试删除前面创建的install.log和linux.log文件,感受下加与不加-f参数的区别:
[root@linuxprobe ~]# rm install.log  
[root@linuxprobe ~]# rm -f linux.log 
[root@linuxprobe ~]# ls 
[root@linuxprobe ~]#

image.png

dd命令

dd命令用于按照指定大小的数据块个数来复制文件或转换文件,语法格式为:“dd if=参数值 of=参数值 count=参数值 bs=参数值”。

  • dd命令还可以在复制过程中转换其中的数据。Linux系统中有一个名为/dev/zero的设备文件。这个文件不会占用系统存储空间,却可以提供无穷无尽的数据,因此常常使用它作为dd命令的输入文件,来生成一个指定大小的文件。dd命令的参数及其作用如表所示。
参数 作用
if 输入的文件名称
of 输出的文件名称
bs 设置每个“块”的大小
count 设置要复制“块”的个数
  • 用dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存成名为560_file的文件。理解了这个命令后,以后就能随意创建任意大小的文件了:
[root@linuxprobe ~]# dd if=/dev/zero of=560_file count=1 bs=560M

image.png

  • 使用dd命令可以把光驱设备中的光盘制作成iso格式的镜像文件,在Windows系统中需要借助于第三方软件才能做到,但在Linux系统中可以直接使用dd命令来压制出光盘镜像文件,将它变成一个可立即使用的iso镜像:
[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-8.0-x86_64-LinuxProbe.Com.iso 
13873152+0 records in 
13873152+0 records out 
7103053824 bytes (7.1 GB, 6.6 GiB) copied, 27.8812 s, 255 MB/s

file命令

file命令用于查看文件的类型,语法格式为:“file 文件名称”。

[root@linuxprobe ~]# file anaconda-ks.cfg  
[root@linuxprobe ~]# file /dev/sda 

image.png

tar命令

tar命令用于对文件进行打包压缩或解压,语法格式为:“tar 参数 文件名称”。

Linux系统中主要使用的是.tar或.tar.gz或.tar.bz2格式,这些格式大部分都是由tar命令来生成的,tar命令的参数及其作用如表所示。

参数 作用
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录
  • 一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;
  • 相应的解压命令为“tar -xzvf 压缩包名称.tar.gz”。
  • 使用tar命令把/etc目录通过gzip格式进行打包压缩,并把文件命名为etc.tar.gz:
[root@linuxprobe ~]# tar czvf etc.tar.gz /etc 

image.png

  • 将打包后的压缩包文件指定解压到/root/etc目录中(先使用mkdir命令来创建/root/etc目录):
[root@linuxprobe ~]# mkdir /root/etc 
[root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc 

image.png