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

文件处理指令-下

  • 背景前言
  • 专栏介绍
  • 面向对象
  • 重点内容
    • 文件处理命令
      • mv
        • 作用
        • 格式
        • [options] 主要参数
        • 应用实例
          • 将文件cjh.txt重命名为wjz.txt
      • ls
        • 作用
        • 格式
        • options主要参数
        • 应用举例
      • diff
        • 作用
        • `diff` 的基本语法如下:
        • `[options]` 是可选的参数
      • 实际案例
      • cmp
        • 格式
        • options主要参数
      • cat
        • 格式
        • options主要参数
        • 案例分析
          • 合并文件
          • 输出编号
      • ln
        • 格式
        • 参数
          • `ln`命令主要有两种类型的链接
      • 硬链接
        • 硬链接的作用
      • 符号链接
      • 权限
  • 总结

背景前言

在当今的数字化时代,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指令对于在技术领域工作或对技术感兴趣的人群来说都是非常有价值的。无论您是专业人士还是爱好者,通过学习和实践,您都可以获得更深入的理解和技术能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/319496.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ssm基于Java的药店药品信息管理系统的设计与实现论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,药品信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大…

AI辅助编程:同义千问挑战力扣

大家好我是在看,记录普通人学习探索AI之路。 今天我们来聊一聊如何使用AI进行辅助编程。 ChatGPT对于各行各业都带来了工作效率的提升,尤其是程序员这一行。因为ChatGPT可以帮助程序员来生成各种各样的程序代码。 我们先来看一个简单的例子&#xff0c…

test-04-test case generate 测试用例生成 tcases 快速开始

拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) 自动生成测试用例 入门指南 关于…

windows安装conda环境,开发openai应用准备,运行第一个ai程序

文章目录 前言一、windows创建openai开发环境二、国内代理方式访问openai的方法(简单方法)三、测试运行第一个openai程序总结 前言 作者开发第一个openai应用的环境准备、第一个openai程序调用成功,做个记录,希望帮助新来的你。 …

Centos7 安装与卸载mysql

卸载 ps ajx | grep mysql : 查看当前服务器是否有mysql 没有的话就不需要卸载咯。 centos7 通过yum下载安装包通常是以.rpm为后缀,rpm -qa 可以查看当前服务器上所有的安装包: rpm -qa | grep mysql | xargs yum -y remove :将查询到的mysql…

一张图总结架构设计的40个黄金法则

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,很多小伙伴拿到非常优质的架构机会,常常找尼恩求助: 尼恩,我这边有一个部门技术负责人资深架构师的机会,非常难得, 但是有一个大厂高P在抢&#xff0…

Gaara靶机练习

渗透测试 一.信息收集1.确定IP地址2.nmap扫描3.目录扫描 二.hydra爆破1.ssh连接2.信息探索 三.提权gdb提权提权 一.信息收集 1.确定IP地址 ┌──(root㉿kali)-[~/kali/web] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 192.168.9.10 S…

基于协方差矩阵自适应演化策略(CMA-ES)的高效特征选择

特征选择是指从原始特征集中选择一部分特征,以提高模型性能、减少计算开销或改善模型的解释性。特征选择的目标是找到对目标变量预测最具信息量的特征,同时减少不必要的特征。这有助于防止过拟合、提高模型的泛化能力,并且可以减少训练和推理…

ubuntu双系统安装注意事项(磁盘分区大小设置,安装Ubuntu后系统windows无法启动)

安装教程可参考: 1.(视频):双系统启动效果_哔哩哔哩_bilibili 2.Ubuntu20.04双系统安装详解(内容详细,一文通关!)_ubuntu20.04安装教程-CSDN博客 详细安装教程视频已经给出,本文主要补充一些…

godot初学笔记

godot开发工具下载地址 godot下载地址 godot入门视频 godot入门教学b站地址 素材下载地址 素材下载地址 最终成品图 2D3D如何切换 添加2D场景 添加其他节点 添加人物节点 设置人物为接地 给人物添加Sprite 2d 给人物设置材质 解决材质糊的问题 设置材质包切割 在场景中实…

北京大学 wlw机器学习2022春季期末试题分析

北京大学 wlw机器学习2022春季期末试题分析 前言新的开始第一题第二题第三题 前言 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的开始 第…

使用lodash原地起飞,总结了几个常用的lodash方法

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 目录 什么是lodash lodash的按需引入 数组操作 求交集 求合集 求差集 求总和…

小程序基础学习(请求封装)(重点,核心)

目录 首先: 封装一个request请求的js文件,用的是Promise 然后: 请求编写 原理:首先在页面加载完成以后发送一次请求数据,由于请求的数据会反复使用,直接把他抽离到外面,以后直接调用。在使用a…

【IDEA】瑞_IDEA模版注释设置_IDEA自动生成注释模版(详细图文步骤)

文章目录 1 概要2 类的自定义模版注释3 自定义模版注释3.1 方法的自定义模版注释3.2 属性的自定义模版注释 🙊 前言:在Java开发中,注释具有不可或缺的重要性,注释负责解释代码,能帮助开发人员深入理解代码的逻辑和功能…

Python 潮流周刊#35:Python JIT 编译器和 Numpy2 即将推出

△△请给“Python猫”加星标 ,以免错过文章推送 你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿[1]。另有电报频道[2]作为副刊,补充发布更加丰富的资讯,…

反序列化提升刷题

例题&#xff1a; <?php //flag is in flag.php highlight_file(__FILE__); error_reporting(0); class Modifier { private $var; public function append($value) { include($value); echo $flag; } public function __invoke(){ …

AcWing 843. n-皇后问题

#include <iostream> #include <cstring> #include <algorithm>using namespace std; const int N 10; int n; int col[N], dg[N N], rdg[N N]; // 列占用// 正对角线占用// 副对角线占用 char table[N][N]; // 棋盘void dfs(int index) {if(i…

大型语言模型综述/总结 LLM A Survey of Large Language Models

A Survey of Large Language Model AbstractINTRODUCTIONOVERVIEW背景LLM的新兴能力LLM的关键技术GPT 系列模型的技术演进 大语言模型资源公开可用的模型检查点或 API常用语料库代码库资源 预训练数据收集架构 论文标题&#xff1a;A Survey of Large Language Model 论文地址&…

ssm基于java的智能训练管理平台论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#x…