【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(文件处理指令-下)

发布时间:2024年01月14日

背景前言

在当今的数字化时代,Linux已成为服务器、云计算、物联网等众多领域的核心操作系统。对于技术从业者、开发者以及系统管理员来说,掌握Linux指令不仅是一项基本技能,更是打开专业领域大门的关键。

学习Linux指令的必要性:

  • 行业标准与需求: 在IT行业,Linux技能已被广泛认可为必备能力。无论是求职还是项目实施,具备Linux知识都是一项重要的竞争优势。
  • 高效操作与维护: 通过掌握Linux指令,用户可以更快速、高效地完成日常的系统管理、配置更改、故障排除等任务,提高工作效率。
  • 系统安全性: 了解Linux指令有助于增强对系统安全的理解,从而更好地配置安全策略、防范潜在威胁和维护系统安全。
  • 自动化与脚本编写: Linux指令为自动化工作流提供了强大支持,通过脚本编写,可以实现任务的批量化、自动化执行,减少重复劳动。

专栏介绍

在这个专栏《【Linux技术专题】「夯实基本功系列」XXXXX》中,我们将一同深入Linux指令的海洋,无论您是初次涉足还是已熟悉操作,都能从中获得宝贵的经验和知识。这里汇集了详尽的教程、实用的指南和高级技巧,旨在助您深化对Linux指令的理解并掌握其运用。

面向对象

以下是建议学习Linux指令面向的人群和对象:

  1. 运维人员OM:系统管理员是直接负责维护Linux系统正常运行的专业人员。他们需要熟练掌握各种Linux指令,以完成日常的系统管理、配置更改、故障排除等任务。
  2. 后端开发者:Java、Python以及其他的后端语言开发人员,Linux是后端服务器的主要操作系统,开发的应用程序,都需要在Linux服务器上部署和运行。掌握Linux指令可以帮助开发人员更好地管理服务器,配置环境,以及解决部署和运行过程中可能遇到的问题。
  3. DBA/数据库开发人员:数据库管理员使用Linux作为数据库服务器的操作系统。他们需要了解如何安装、配置和管理关系型数据库管理系统(如MySQL、PostgreSQL)以及其他相关的数据库软件。
  4. 云计算工程师:云计算工程师使用Linux来构建和管理云计算平台。他们需要了解如何部署和管理虚拟化技术、容器化工具(如Docker)以及云原生技术等。
  5. 其他相关人员:对于计算机科学和相关专业的学生,学习Linux指令是课程学习的必备内容。对于Linux感兴趣的爱好者,通过自学和实践,可以深入了解Linux操作系统的工作原理和实现方式。

重点内容

本章节我们主要去学习和研究实践Linux操作系统中的【文件处理命令】,主要面向于操作文件以及处理查询文件内容等常用的指令,如果没有涵盖的指令,还希望您可以多多给我留言和评论,后面我会继续完善和补充,谢谢。

文件处理命令

Linux系统的信息都储存在文件中,这些文件与常见的办公文件颇为相似。每个文件都有自己的标识,如名字、内容、存放位置,以及一些管理信息,例如文件的拥有者、大小等。这些文件可以是信件、通讯录,或者是程序的源代码、数据,甚至是可执行的程序或非文本内容。

Linux的文件系统组织严密,为文件处理提供了大量的工具。本文主要探讨了一些常用的文件处理命令。

mv

作用

mv命令在Linux系统中用于重命名文件或目录,或者把文件从一个目录转移到另一个目录。它类似于DOS系统中的ren(重命名)和move(移动)命令的结合。mv命令对所有用户开放,可以方便地进行文件管理操作。

格式

mv [options] 源文件或目录 目标文件或目录

[options] 主要参数
  • 选项 -i (interactive):这是一种交互式操作模式。当使用 mv 命令可能导致覆盖目标目录中已存在的文件时,系统会提示用户确认是否要覆盖。用户需要明确回答“y”(表示是)或者“n”(表示否)来避免不小心覆盖文件。

  • 选项 -f (force):这是一种强制操作模式。在此模式下,如果 mv 命令需要覆盖目标文件,它将不会询问用户,而是直接进行覆盖。使用 -f 参数时,即便之前设置了 -i 参数,-f 也会覆盖它,禁止任何交互提示。

应用实例

将usr/cbu中的所有文件移到当前目录(用“.”表示)中:

mv /usr/cbu/  *
将文件cjh.txt重命名为wjz.txt
mv cjh.txt wjz.txt

ls

作用

ls 命令是 Linux 和 Unix 系统中用于列出目录内容的一个常用工具,功能上与 DOS 系统中的 dir 命令相似。

它可以向用户展示指定目录中的文件和子目录列表。ls 命令对所有用户开放,无论是系统管理员还是普通用户都可以使用它来查看文件系统中的信息。

此外,ls 命令还提供了多种选项,如 -l 用于显示详细列表信息,-a 用于显示包括隐藏文件在内的所有文件,等等,使得它在文件管理中非常灵活和强大。

格式

Is [options] [filename]

options主要参数

ls 命令在 Linux 和 Unix 系统中广泛用于显示目录内容,提供了多种选项以适应不同的使用需求。

  • -a, --all: 显示所有文件,包括以点(.)开头的隐藏文件。
  • -A, --almost-all: 列出除了隐含目录(...)之外的所有文件。
  • --author: 显示每个文件的作者信息。
  • -b, --escape: 用八进制表示法显示不可打印的字符。
  • --block-size=大小: 设置以特定字节大小的块表示文件大小。
  • -B, --ignore-backups: 不列出以波浪号(~)结尾的备份文件。
  • -d: 列出目录本身,而非其内容。
  • -F, --classify: 在每个项目后添加一个指示符号(如 */=@|)以表示文件类型。
  • -g: 类似于 -l,但不显示文件所有者信息。
  • --no-group: 不显示文件的组信息。
  • -i, --inode: 显示每个文件的 inode 号。
  • -I, --ignore=模式: 不显示符合 shell 通配符模式的文件。
  • -k: 设置块大小为 1K。
  • -l: 使用长格式列出文件信息。
  • -L, --dereference: 显示符号链接指向的实际文件信息,而非链接本身的信息。
  • -m: 以逗号分隔的方式显示所有文件,并填满整行宽度。
  • -n, --numeric-uid-gid: 类似 -l,但显示用户和组的数字ID。
  • -N, --literal: 显示原始文件名,不处理控制字符。
  • -p, --file-type: 在每个项目后添加一个指示符号以表示文件类型。
  • -Q, --quote-name: 用双引号括起每个项目名称。
  • -r, --reverse: 反向排序。
  • -R, --recursive: 递归地列出子目录内容。
  • -s,–size:以块大小为序。
  • -t,并根据文件的修改时间进行排序

这些选项使得 ls 命令在文件和目录管理方面非常灵活和强大。

应用举例

在Linux系统中,ls 命令是使用频率极高的工具之一,它拥有众多参数选项,这也使得它成为Linux命令中参数最为丰富的一个。使用 ls 命令时,文件和目录会以不同颜色显示,以便于区分。例如,蓝色代表目录,绿色表示可执行文件,红色用于压缩文件,浅蓝色标识链接文件,加粗的黑色表示符号链接,而灰色则用来表示其它类型的文件。其中,ls -l 是最常用的格式,其输出示例如图1所示。

在Linux中,文件的类型和权限由一个10字符的字符串描述。第一个字符标识文件类型,具体如下:

  • -: 普通文件
  • d: 目录
  • l: 符号链接
  • b: 块设备文件
  • c: 字符设备文件

接下来的9个字符分为3组,每组3位,代表不同用户的权限:

  • 第1组(字符2-4): 文件属主权限
  • 第2组(字符5-7): 同组用户权限
  • 第3组(字符8-10): 其他用户权限

每组权限的字符表示:

  • r: 读权限
  • w: 写权限
  • x: 执行权限
  • s: 设置UID/GID
  • t: 粘着位(设置标志位)

特殊权限s代表执行文件时,进程将获得文件或目录的UID或GID。特殊权限t对于目录意味着只有超级用户、目录拥有者或文件属主可以删除目录中的文件;对于可执行文件,意味着文件正文段保留在内存中,加快再次执行速度。

diff

diff 命令在Unix和类Unix系统中,如Linux,是一个非常有用的命令行工具。

作用

它用于比较两个文件的内容,并显示它们之间的差异。这个工具常常在源代码管理或者检查文本文件版本之间的差异时使用。

diff 的基本语法如下:
diff [options] 源文件 目标文件
[options] 是可选的参数

一些常用的选项包括:

  • -a:将所有文件当做文本来处理
  • -i:忽略大小写的差异。
  • -b:忽略行尾空格的差异。
  • -B:忽略空白行的差异。
  • -u:以统一格式显示差异,这种格式常用于创建补丁。
  • H:利用试探法加速对大文件的搜索
  • c 选项:使用纲要输出格式

实际案例

例如,如果您想比较两个文件 file1.txtfile2.txt,您只需在命令行中输入:

diff file1.txt file2.txt

然后,diff 会输出两个文件内容的差异。如果两个文件完全相同,diff 不会输出任何内容。

cmp

cmp(“compare’”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户。

格式
cmp [options] 源文件 目标文件

其功能和diff很相似,此处直接忽略了。

options主要参数
  • -l :将字节以十进制的方式输出,并方便将两个文件中不同的以八进制的方式输出。

cat

cat(源自“concatenate”的缩写)命令主要用于合并并展示一个或多个指定文件的内容。它可以将文本文件的内容输出到标准输出(通常是屏幕),让用户能够快速浏览。此命令对所有用户开放,无需特殊权限即可使用。

格式

以下是使用cat命令的基本形式:

cat file1 file2

该命令将连续显示file1file2的内容。如果指定了多个文件,cat将按照指定的顺序将它们的内容依次输出。此外,cat命令也常用于创建文件、文件合并以及向已存在的文件中追加内容等操作。

options主要参数
  • -n :为每行输出添加行号,从第一行开始编号。
  • -b:类似于一,但不为空白行添加行号。
  • -s:当存在两行或更多连续的空白行时,将其合并为单一的空白行。
案例分析

“cat命令的一个基本功能是展示文本文件的内容。例如,若想在命令行中查看README文件的内容,可使用以下命令:”

$ cat README

合并文件

将多个文件合并成一个,并将合并结果保存到一个新的文件中。cat命令可以接受一个或多个文件作为输入,并将它们合并为单一文件输出。

例如,要将README和INSTALL文件的内容合并,并为非空白行添加行号后,再将合并后的内容附加到一个新的文本文件File1中,可以使用以下方法:"

使用 cat 命令合并 READMEINSTALL 文件,并为非空白行添加行号,再保存到名为 File1 的新文件中,可以使用以下命令组合:

cat README INSTALL | grep -v '^$' | nl > File1

这里的命令解释如下:

  • cat README INSTALL:将 READMEINSTALL 文件的内容合并输出。
  • grep -v '^$':过滤掉所有空白行(即只保留非空白行)。
  • nl:为过滤后的输出添加行号。
  • > File1:将最终的输出重定向到新文件 File1 中。
输出编号

对行进行编号功能有-b(只能对非空白行进行编号)和-n
(可以对所有行进行编号)两个参数:

  • -b 参数用于对非空白行进行编号。
  • -n 参数用于对所有行进行编号,包括空白行。

使用方法如下:

  • 只对非空白行编号:

    cat -b filename
    
  • 对所有行编号:

    cat -n filename
    

如果需要将编号的结果输出到一个新文件,可以使用重定向操作符 >

  • 只对非空白行编号并输出到新文件:

    cat -b filename > newfile
    
  • 对所有行编号并输出到新文件:

    cat -n filename > newfile
    

ln

在Linux和类Unix操作系统中,创建文件链接的命令是ln。这个命令可以被系统上的所有用户使用,但创建链接的位置可能受到文件系统权限的限制。

格式

ln [options] 源文件 [链接名]

参数
ln命令主要有两种类型的链接

链接有两种,一种被称为硬链接(Hard Link);另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

  1. 硬链接(Hard Link)
  2. 符号链接(Symbolic Link,也称为软链接或symlink)

硬链接

硬链接是利用索引节点(inode)实现的一种文件链接方法。在Linux文件系统中,无论文件的类型如何,系统都会为存储在磁盘分区上的每个文件分配一个唯一的标识号,即索引节点号(inode Index)。在Linux中,是可以有多个文件名指向同一个索引节点的情况。这种链接通常被称为硬链接。

硬链接的作用

硬链接的主要功能是允许一个文件存在多个有效的路径名,从而使得用户可以为重要文件创建硬链接,以防止因误操作而删除。这是因为每个文件的索引节点可以有多个关联的链接。因此,即使其中一个链接被删除,只要索引节点还有其他链接存在,文件本身并不会被删除,保证了文件的安全性。

硬链接直接指向文件的物理位置,它们与原始文件共享相同的inode。创建硬链接的命令如下:

ln target_file link_name

这里target_file是要链接的原始文件,link_name是硬链接的名称。

注意,硬链接不能跨文件系统创建,也不能用于目录。

符号链接

在与硬链接相辅相成的Linux系统中,我们还可以找到另一种链接类型——符号链接(Symbolic Link),通常也被称作软链接。软链接在某种程度上类似于Windows操作系统中的快捷方式。它本质上是一种特殊的文件。在符号链接的情况下,该文件实际上是一个文本文件,里面存储的是指向另一个文件的路径信息。这种链接方式为文件或目录创建了一个轻量级的引用,从而提供了一种灵活的文件访问机制。

创建符号链接的命令如下:

ln -s target_file link_name

使用-s选项来指定创建符号链接。符号链接可以跨文件系统,也可以链接到目录。

权限

在使用ln命令时,用户必须具有对target_file的读权限和对创建链接位置的写权限。如果用户没有这些权限,命令将失败。

总结

总之,学习Linux指令对于在技术领域工作或对技术感兴趣的人群来说都是非常有价值的。无论您是专业人士还是爱好者,通过学习和实践,您都可以获得更深入的理解和技术能力。

文章来源:https://blog.csdn.net/l569590478/article/details/135582408
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。