【Linux】常用指令(中)(附带基础指令的详细讲解、Linux的一些附加知识)

news2024/11/15 18:54:51

文章目录

  • 前言
  • 1. Linux基础常用指令
    • 1.1 通配符 "`*`"
    • 1.2 man指令(重要)
      • 1.2.1 man指令的语法
    • 1.3 何为"指令"?(附带知识)
    • 1.4 echo指令
    • 1.5 cat指令
    • 1.6 Linux下一切皆文件!
      • 1.6.1 ">" 输出重定向
      • 1.6.2 ">>"符号
    • 1.7 cp指令(重要)
    • 1.8 mv指令(重要)

前言

在操作系统 && 常用指令(上)这篇文章中,我给大家讲解操作系统概念的同时还介绍了一些基本的Linux操作指令。诸如:ls指令、pwd指令、mkdir指令、touch指令等等。说"操作系统是一款管理软硬件的程序",对下管理资源,对上提供服务!

当然,Linux的基本常用指令远不止上述文章所讲的那么的少。本文会继续讲解Linux常用基本指令的同时,根据现象提出一些Linux的基础知识!!!

话不多说,让我们开启Linux基础指令的探索吧!!!🚢⚓⚓⚓

hahaha

1. Linux基础常用指令

在讲Linux的基本指令之前,我给大家先来一个Linux的符号—— “*”通配符

1.1 通配符 “*

什么是通配符?
从名字可以看出一点端倪,就是可以替代某些字符串或字符的一种符号

如果你还不理解上面的我想传达的意思,没有关系。我给大家创建一些实际的应用场景,帮助大家理解上面的话语。请给位公子/公主把目光聚焦到下面的例子中。

假如,现在我有一个名为ddir1的目录(文件夹),里面有十分多的文件。有一天,我想在这个的ddir1这个目录下,查找一系列后缀名为.txt的文件。
第一种方法:打开ddir1目录,一个个的去找。这个方法显然是out的!
第二种方法:使用“*”这个通配符。(为了方便演示,这里我就不创建太多的文件了,大家在脑海中有这个概念就行)

通配符"*“的演示:
这个是用来测试目录下面的所有文件:
测试目录下面的所有文件
现在我要查找后缀名为.txt的所有文件:
查找之后的结果
如果我想查找更加详细的文件信息,还可以这样做:
查找之后详细的结果
OK,上面的例子足以展示通配符的重要性。当然通配符”*"不仅仅只在查找方面有特点,在删除等方面也起着一定的作用。

可以这么理解,在查找的角度,有通配符"*"就相当于批量查找。在删除的角度,那就是批量删除。至于通配符的使用场景,大家下来可以自行探索!!!

1.2 man指令(重要)

我们先给出man指令的功能,再来谈谈为什么要学习man指令。

man指令功能:访问Linux的手册页。

这个手册页,大家可以理解为一本Linux的指令说明书。

相信讲到这里,大家也意识到了这指令的重要性了。Linux下的指令死鬼多,我们不可能每一个都记得住。但是只要我们能够知道这个指令的名称,再通过man指令的帮助,我们就能查找到man指令的具体用法和功能讲解了

1.2.1 man指令的语法

man语法: man [选项] 命令

常用的选项:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。

Linux的手册分为8个章节:

  • 1 是普通的命令
  • 2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
  • 3 是库函数,如printf,fread
  • 4是特殊文件,也就是/dev下的各种设备文件
  • 5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
  • 6 是给游戏留的,由各个游戏自己定义
  • 7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
  • 8 是系统管理用的命令,这些命令只能由root使用,如ifconfig

举个例子,我们现在要查找ls指令的用法,我们可以这样写:
查找指令ls的用法

哈哈哈
可能有一种特殊的情况,就是不同的章节中会存在相同名称的指令或函数,那这时候该怎么做?

这里我就不跟大家卖关子了,其中有一个特殊的指令就是printf。
printf指令
可能有的人就问了,那这个不久跟那个C语言里面的printf函数一样的吗?
我要跟大家说的是,这两个不是一个同一个东西,不要混为一谈!
在Linux下,printf会被看成是一条指令,而在C语言中printf是一个函数。

那我们用man查找时,是怎样查找的呢?
命令

查找
可以看到的是,它优先在手册1上去查找,找到了就直接返回。那如果我们只想看看手册3里面的printf,又该怎么做呢?
指令
输入这条指令即可。

可以总结一点经验,就是man和待查指令中间可以加入手册的编号,进行指定编号内的手册查找。
哈哈哈

1.3 何为"指令"?(附带知识)

我们在上述说可以用man指令来查找相关指令的用法,我们只知道输入指令,操作系统就能完成相应的功能。

那指令到底是什么呢?在我们输入完指令后,操作系统又做了那些事呢?

为了减轻大家的代码负担,这里我就用一个已经编译执行完毕的a.out的一个C语言程序给大家做讲解。
a.out
我们可以用这个指令运行a.out这个可执行程序:

内容
确实是打印出来了。

仔细一想,那指令好像也是这样水灵灵的输进去,就直接执行了。
没错!!!对!!!你没有猜错!!!

指令其实就是可执行程序!!!

理解这一点后,我们再来从现象挖其本源。请大家,看下面出现的现象:
乱来
这个是我胡乱输入的,它显示指令未被找到,这是无可厚非的。

这里我想说的是:
这个现象提供给我们一个重要的线索,就是我们输入指令会先被操作系统所查找。如果找不到的话,就会告诉我们指令没有找到,那如果找到的话,指令就会被直接执行。

那这里又会引出一个问题,指令到底存放在哪里?
指令会被存放在这个目录之下:/usr/bin/

我们可以用这个指令去查看:ls /usr/bin,或者我们可以用一下which指令来查看指令被存放的位置。

图

总结:到这里,我们就知道了我们平常输入的指令其实就是一个可执行文件,与我们平常自己写的程序编译之后生成的可执行程序没有本质的区别。要说用区别的话,那就是别人写的功能比你的更加完善!

1.4 echo指令

语法echo string
作用:将字符串的内容,输出到屏幕中。

使用演示:
图片

注意:这里可以不用加双引号。甚至可以用单引号将字符串给引起来!!!
总之记住一个点,echo指令后面跟的参数都会被视作字符串。

比如:
错误示范
那迄今为止,我们学习了如何查看/删除一个文件,但是我们还没学习怎样将内容写入到一个文件中。没有关系,echo指令会教你做事!

我们只需要这样做,就可以将内容写入到文件中,

echo [字符串] > 文件名(注意别忘记了空格)
作用:将指定内容写入到文件中
haha

这里补充两个点:

  1. 如果指定的文件名不存在的话,操作系统会给你先创建这个文件名再写入数据。
  2. echo指令会自动加上一个换行符。所以不需要我们手动换行。

我们现在是写进去了,但是怎么验证呢?此时我们先学另一条指令,学完后再回来讲这个问题。

1.5 cat指令

语法:cat [选项] [文件]
功能:查看目标文件的内容
常用选项

  • -b 对非空输出行编号
  • -n 对输出的所有行编号
  • -s 不输出多行空行

有了cat指令,我们就可以验证echo指令是否真正的把内容写入到test.txt文件中。
图片
确实!!!"hello Linux"确实被写入到了文件中。

为了验证cat的选项所带来的效果,我们现在把test.txt的内容变为这样(至于指令是怎样编写的,我先不说,埋下一个伏笔。后面讲):
test.txt文件里面的内容
-n选项带来的效果
-b选项带来的效果
-s带来的效果
我们当然也可以组合选项一起使用,比如:
选项组合使用
好了。以上就是cat指令的详细用法了。
哈哈哈

1.6 Linux下一切皆文件!

针对于echo指令,我相信大家有很多问题还没有弄懂。比如,为什么加一个">“就能把内容写入到指定文件中?”>"符号又是个什么东东?

没有关系,下面我来给大家逐一讲解:

1.6.1 “>” 输出重定向

">"表示输出重定向
在刚开始使用echo指令时,我们在没有使用">“时,内容会被打印到屏幕上。在使用”>"时,屏幕上却没有打印出这个内容了。为什么呢?

这个就是输出重定向的作用,同时也印证了一个观点:Linux下一切皆文件。

解释:Linux下一切皆文件的观点(粗略版)
文件,就有相应读取文件和写入文件的方式。
显示器是一种输出设备,站在操作系统的角度,我们能对显示器写入数据,也就是我们相当于拥有了写文件的方式。那我们可以从显示器读数据吗?显然是不需要,因此读文件的方式可以设为空,这个是对于显示器这个外部设备的。
那对于键盘来说,站在操作系统的角度,我们能从键盘读取数据,也就是我们相当于拥有了读文件的方式。那我们可以从写数据吗?显然是不需要,因此写文件的方式可以设为空,这个是对于键盘这个外部设备的。
那对于普通文件来说,站在操作系统角度,我们可以对文件进行读或者写操作。因此我们就拥有了读文件和写文件的方式。

从以上的描述,我们在心中大概有了一个概念,那就是无论是显示器、键盘还是普通文件,其都有自己对应的读写方式,那我们就可以将显示器、键盘等外部设备称为文件,因为它具备读写方式。注意这里知识粗略的讲解。

在进行拓展的话,我们就清楚的了解了一句话:Linux下一切皆文件!!!

回到重定向讲解中,它的运作机制就是将内容重定向输出到你指定的文件中

为什么这么说呢?在我们没有加">“时,会把内容输出到显示器中,由于Linux下一切皆文件,显示器也是一个文件啊,为此echo指令就默认将内容输出显示器这个文件中。当我们用了”>“符号并加上指定的文件名后,内容就会被写入到了这个指定的文件中,就相当于输出的内容换了一个方向输入到了指定文件中。这也就是为什么我们称”>"其为输出重定向

1.6.2 ">>"符号

还记得我之前给大家埋下的一个伏笔吗,就是在cat指令,我创建了一大串文本是怎样做的?
文本
用的就是">>“符号。可能有的人又会有问题了。这个和”>"符号有什么区别

异同:

  • “>”:输出重定向。以覆盖写的方式,去写文件!
  • “>>”:输出重定向。以追加写的方式,去写文件!

我们可以做个验证:
验证
好了,到此echo指令和cat指令就告一段落了!

1.7 cp指令(重要)

语法cp [选项] 源文件或目录 目标文件或目录
功能复制文件或目录
常用选项:

  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理(针对的是复制目录)

使用演示:
演示
如果当你想要拷贝的文件不存在时,它会自动创建目标文件,再将内容拷贝到目标文件上,这个点跟echo指令很像。
拷贝
我们也可以通过改变路径,将拷贝之后的文件放到上级目录上:

拷贝到上级目录
以上都是关于文件的拷贝,那如果我想要拷贝一个目录该怎么办?

答案,就是搭配选项-r一起使用。

演示

这里要说明在使用cp拷贝目录一个点:
cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存
在的目录,则会出现错误信息。

1.8 mv指令(重要)

语法mv [选项] 源文件或者目录 目标文件或目录
作用对文件进行剪切或者是将文件重命名

常用选项

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

由于这条指令比较有意思,我会分几种情况给大家讲解:

  • 1.当第二个参数为文件时,mv指令的作用就是给文件重命名。

第二个参数为文件时

  • 2.当第二个参数为一个路径时,mv指令的作用就相当于移动文件。
    第二个参数为路径时
  • 3.当第二参数为一个路径+指定文件名时,mv指令的作用就相当于是重名后再移动文件 。
    第二参数为一个路径+指定文件名时
    到这里,有的读者可能就会头大了,说这个mv指令怎么用起来这么麻烦,还分了这么多种情况。

其实有个通用的记忆方法,现在我来给你说到说到:

可以看到,当mv指令的第二个参数不同时,效果好像是不一样的。但是这也仅仅只是你看到的那样。仔细思考一下,mv mytest.txt code.txt是不是等价于mv mytest.txt ./code.txt。mv指令如果后面路径后面没有加文件名就默认使用源文件的名称。根据以上两点,我们就可以总结出,无论mv指令的第二种参数为何种情况,它都表达一个意思,那就是:先对文件进行剪切操作后,再进行重命名操作

那mv指令针对文件的操作我讲了,那对于目录的操作有怎么说呢?

mv指令针对目录的操作:
针对目录的操作
至此,关于本文的内容我就讲完了!

由于本文的内容较为丰富,这里就给大家做一个小结:
我们讲了通配符"*",各种基本指令以及输出重定向,指令的本质和Linux下一切皆文件的观点。

如果觉得本文写得还不错的话,麻烦给偶点个赞吧!!!

哈哈哈

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FP6296XR-G1 10A电流模式非同步PWM升压转换器芯片IC

一般说明 F1 6296是目前最先进的直流一直流转换器。是一个带有内置15mΩ功率MOSFET使此稳压器具有高功率效率。误差放大器的非逆变输入端连接到1.2V的精密基准电压。电流模式控制和外部补偿网络使系统稳定容易灵活。FP6296采用SOP-8L(EP)封装,可用于应用领域…

基于 K8S kubernetes 搭建 安装 EFK日志收集平台

目录 1、在k8s中安装EFK组件 1.1 安装elasticsearch组件 1.2 安装kibana组件 1.3 安装fluentd组件 文档中的YAML文件配置直接复制粘贴可能存在格式错误,故实验中所需要的YAML文件以及本地包均打包至网盘 链接:https://pan.baidu.com/s/15Ryaoa0_…

各大平台统遭入侵??区块链市场遭攻击损失近3亿!

今年,全球发生多起骇人听闻的勒索入侵软件攻击事件,黑客组织利用各种手段和技术,不断试图突破网络安全防线,窃取敏感信息、破坏系统运行,甚至进行勒索和敲诈,使得网络安全问题日益凸显其重要性和紧迫性。 S…

【北京迅为】《STM32MP157开发板使用手册》- 第三十五章 A7 和 M4 联合调试

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

【MySQL】表的操作【有关表结构的操作】【创建、查看、删除、修改表结构】

目录 表的操作1.创建表2.查看表结构3修改表3.1修改表名3.2添加字段/列3.3修改字段/列3.4删除字段/列3.5对单一字段/列 重命名 4.删除表 表的操作 1.创建表 创建表的语句语法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) ch…

基于SSM的在线家用电器销售系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSSMVueMySQL的在线家…

【学习笔记】SSL/TLS安全机制之HSTS

1、What:HSTS全称HTTP Strict Transport Security,HTTP严格传输安全。 2、Why:因为HTTP 在重定向到 HTTPS 之前存在漏洞 用户在浏览时很少明确输入 https:// 有时,用户正好通过http来访问网站,网站服务器知道这应该是…

43.哀家要长脑子了!

1.53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxSubArray(vector<int>& nums) {int pre 0, maxRes nums[0];for(int x : nums){pre max(pre x, x);maxRes max(maxRes, pre); }return maxRes;} }; 其实弄懂也就挺简…

初写MySQL四张表:(3/4)

我们已经完成了四张表的创建&#xff0c;学会了创建表和查看表字段信息的语句。 初写MySQL四张表:(1/4)-CSDN博客 初写MySQL四张表:(2/4)-CSDN博客 接下来&#xff0c;我们来学点对数据的操作&#xff1a;增 删 查&#xff08;一部分&#xff09;改 先来看这四张表以及相关…

python-简单的数据结构

题目描述 小理有一天在网上冲浪的时候发现了一道很有意思的数据结构题。 该数据结构形如长条形。 一开始该容器为空&#xff0c;有以下七种操作。 1 a从前面插入元素 a ; 2 从前面删除一个元素; 3 a从后面插入一个元素; 4 从后面删除一个元素; 5 将整个容器头尾翻转; 6 输出个…

存储数据的树形结构

目录 1、二叉查找树 2、平衡二叉树AVL Tree 3 、平衡多叉树B-Tree 4、BTree树 5 、红黑树 红黑树的应用 6.平衡树的旋转 mysql 索引数据结构&#xff1a; Btree 索引是B树在数据库中的一种实现&#xff0c;最为常见的。B树 中的B代表平衡&#xff0c;而不是二叉 1、二…

火山引擎数智平台:高性能ChatBI的技术解读和落地实践

导读&#xff1a;大模型能力的发展和成熟&#xff0c;催生出新一代智能化 BI—— ChatBI&#xff0c;即通过自然语言处理&#xff08;NLP&#xff09;与大型语言模型&#xff08;LLMs&#xff09;的结合&#xff0c;极大简化数据分析过程&#xff0c;提高效率并降低分析门槛。火…

剪画:视频怎么去水印?分享几个简单实用的视频去水印方法!

亲爱的小伙伴们&#xff0c;在视频创作的道路上&#xff0c;水印问题是不是常常让你感到困扰呢&#xff1f; 别担心&#xff0c;今天就来为大家详细介绍七种超实用的视频去水印方法&#xff0c;让你的视频制作更加顺畅。 一、剪画 - 短视频去水印 剪画是一款非常强大的视频处理…

双向NAT=源NAT+NAT Server,有这么6?

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 你们好&#xff0c;我的网工朋友。 随着移动设备的普及和云计算技术的发展&#xff0c;网络流量的规模和复杂度不断增加。网络地址转换&#xff…

像JSON一样使用ProtoBuf,空间还能缩小60%,性能提升100%

首发公众号:【赵侠客】 引言 在前面《释放你九成的带宽和内存&#xff1a;GZIP在解决Redis大Key方面的应用》一文中我使用GZIP算法可以将JSON格式数据的大小缩小88%从而节省了大量的存储和带宽资源&#xff0c;本文介绍另一种JAVA对象序列化神器——ProtoBuf&#xff08;Proto…

打破服务提供商的数据中心自动化障碍

在通信服务提供商&#xff08;CSP&#xff09;不断变革的背景下&#xff0c;数据中心发挥着越来越重要的作用。这些数据中心不仅是部署基于云的5G基础设施的重要组成部分&#xff0c;还在促进边缘计算和下一代企业解决方案的过程中发挥着关键作用。然而&#xff0c;随着数据中心…

YOLOv10改进系列,YOLOv10损失函数更换为Powerful-IoU(2024年最新IOU),助力高效涨点

改进前训练结果: 改进后的结果: 摘要 边界框回归(BBR)是目标检测中的核心任务之一,BBR损失函数显著影响其性能。然而,观察到现有基于IoU的损失函数存在不合理的惩罚因子,导致回归过程中锚框扩展,并显著减缓收敛速度。为了解决这个问题,深入分析了锚框扩展的原因。针…

PyCharm安装和使用教程(Windows系统)

一、pycharm基本使用 说明&#xff1a; PyCharm 是一款功能强大的 Python 编辑器&#xff0c; 本文简单的介绍下PyCharm 在 Windows下是如何安装的。 PyCharm 的下载地址&#xff1a;http://www.jetbrains.com/pycharm/download/#sectionwindows 如果进入网页时间过长或进不…

OpenAI震撼发布o1大模型!RL深度思考,技术差距拉开

openai放大招了&#xff0c;是奥特曼在推上宣传了很久的草莓真身&#xff0c;这次它真的来了。 又给大家带来一点小小的震撼&#xff0c;国内大模型老板们也不再迷茫了&#xff0c;4o的多模态的还没赶上呢&#xff0c;这下怎么又回到纯文本了&#xff0c;不是说大家都搞得差不多…