当前位置: 首页 > news >正文

【Linux】基本指令(下)

目录

  • 一、详解指令
    • 7. man 指令
      • 选项1~9
      • 补充知识1(上)
      • 补充知识2:echo 指令
      • 补充知识3:重定向操作符 `>`
        • (1)清空文件的作用
        • (2)新建文件的作用
      • 补充知识4:追加重定向 `>>`
      • 补充知识5:cat 指令
      • 补充知识6:输入重定向 `<`
      • 补充知识1(下):证明
    • 8. cp 指令
      • (1)-r -f 选项
      • (2)特殊用法:拷贝且更改文件名
      • (3)特殊用法:覆盖文件
      • 补充知识7:什么是指令?
      • 补充知识8:which 指令
      • 补充知识9:alias 指令
    • 9. mv 指令
      • (1)特殊用法:更改文件名
      • (2)特殊用法:移动到其他路径且更改文件名
    • 10. cat 指令
      • (1)-n 选项
      • (2)-s 选项
      • (2)-b 选项
      • 补充知识10:tac 指令
      • 补充知识11:关于日志
    • 11. more 指令
    • 12. less 指令
    • 13. head 指令
    • 14. tail 指令
      • 补充知识12:管道操作符 `|`
    • 15. date 指令
      • (1)按格式输出时间
      • (2)显示时间戳
      • 补充知识13:时间戳
    • 16. cal 指令
    • 17. find 指令

一、详解指令

接上回基本指令(上),继续讲解基本指令(下)

7. man 指令

作用:查找指令的文档
简单理解,系统内部有一个“男人”,有什么不知道或者想不起来了可以问问他。
当有指令不知道是用来干什么的了,可以用man指令查一下
例如查询pwd指令,按q键就可以退出了
在这里插入图片描述
在这里插入图片描述
也可以man manman本身也是一个指令,man手册分为9个章节,默认从1往后查询,只要查到了就不向后继续查找了。
前三个是比较常用的,我们可以简单了解一下。
手册1:默认的手册,查询可执行程序或者是命令行中的命令
手册2:查询系统调用
手册3:查询库函数(C语言)
其他暂且先不用了解
在这里插入图片描述

选项1~9

作用:从指定手册进行查询
man也可以查库函数,例如printf,需要在man后面带上选项3,表示从第三个手册中查询printf
在这里插入图片描述
输入/return val可以直接跳转到函数的返回值部分
在这里插入图片描述
在这里插入图片描述
但其实man指令一般不用来查询库函数,因为C/C++的库函数有多种渠道可以查询,man指令一般用查询指令以及指令所对应的选项
有的同学可能无法使用man指令,原因是没安装,安装指令如下:

yum install -y man-pages'CentOS系统'
apt install -y man-pages'Ubuntu系统'

补充知识1(上)

Linux下一切皆文件!
在过去,有的同学可能不太理解,什么是输入、输出、写入、读取
这里我们先来理解一下关于:输入、输出、写入、读取这几个概念
注意一下数据的流向和这几个名词的对应关系,就可以理解了。
在这里插入图片描述
我们刚刚说过Linux下一切皆文件,那么
把数据打印到显示器,显示器是文件,把数据输入(写入)到显示器
从键盘读取数据,键盘也是文件,把数据从键盘文件中输出(读取)出来

补充知识2:echo 指令

作用:默认将跟在指令后面的内容打印在显示器上(向显示器文件进行写入)
也可以带上单引号或者双引号,Linux中单双引号不做区分,都表示字符串。
在这里插入图片描述

补充知识3:重定向操作符 >

作用:更改输出方向
例如:echo hello > test.txt,将echo指令原本打印在显示器上的hello写入到test.txt文件中去,在指令后面跟上一个>可以进行输出重定向,也就是向指定文件进行写入。
在这里插入图片描述
如果文件不存在,就新建一个文件。
在这里插入图片描述
再例如:ls -l是在做什么,其实就是把目录里面的内容写入到显示器文件中去,所以目录中的内容显示在显示器上,我们也就可以看得到
在这里插入图片描述
ls -l > ls.txt就把本应该输出到显示器的内容写入到ls.txt文件中去了
在这里插入图片描述
以此类推任何具有输出的指令都可以输出重定向。

(1)清空文件的作用

准确的说,>操作符会先清空文件的内容,再对指定文件进行写入
这里我们可以发现,hello.txt里原本的hello,被清空替换成了happy
在这里插入图片描述
既然会先清空文件再进行写入,那不使用echo直接使用>,输入指令> hello.txt会怎样呢?
果然文件被清空了。
在这里插入图片描述
所以当你想要清空一个文件的时候:> 文件名,即可清空文件内容。

(2)新建文件的作用

单独使用>也可以新建文件,当目标文件不存在时,> 文件名,就可以新建一个文件
在这里插入图片描述

补充知识4:追加重定向 >>

作用:将前面指令的输出内容追加到后面的文件中去
不同于>这个操作符,>>它能追加内容
在这里插入图片描述

补充知识5:cat 指令

用法:cat+文件名
作用:读取文件内容
前面我们也用过好多次了
在这里插入图片描述
下面我来介绍一种之前没提到过的
其他用法:单独使用cat指令
作用:默认从键盘中输入内容,输入什么打印什么,其实就类似于ls指令默认将内容打印到屏幕上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

补充知识6:输入重定向 <

作用:更改输入方向
前面讲了那么多类似的,现在我们已经轻车熟路了
cat指令默认从键盘输入,那输入重定向就可以改变它的默认输入方式了呗?
这里我们可以发现,本应该从键盘输入,现在从test.txt文件中输入,而且<好像是可以省略的
在这里插入图片描述

补充知识1(下):证明

刚刚我们提到Linux中一切皆文件,其实我们Linux系统的终端,本质上也是一个文件
/dev/pts目录下的0文件就是我打开的终端1
在这里插入图片描述
我再打开另一个终终端试试呢,可以发现果然多了个1文件,它就是终端2
在这里插入图片描述
再用echo指令+输出重定向试试
在这里插入图片描述
在这里插入图片描述
这也就很好的证明了,在之前的我们看起来不像文件的东西,已经证明它是文件了,至少目前就这两个终端来说

8. cp 指令

语法:cp [选项] 源文件 目标路径
作用:复制文件或目录
全称:copy
在这里插入图片描述

(1)-r -f 选项

作用:-r表示递归式的拷贝一串目录,-f表示强制(不询问),老朋友了不赘述
我们发现当我们想cp一个目录时,失败了,这是因为,目录是树形结构需要递归
在这里插入图片描述
在这里插入图片描述

(2)特殊用法:拷贝且更改文件名

语法:cp 源文件 目标路径/新文件名,此时cp指令会帮我们把文件拷贝到指定路径下且更改名称
确实帮我们拷贝到了目标路径下,且更改了文件名
在这里插入图片描述

(3)特殊用法:覆盖文件

语法:cp 源文件 目标路径,当目标路径下已经有了与源文件相同的文件时,会对目标路径下的同名文件进行覆盖
在这里插入图片描述

补充知识7:什么是指令?

其实我们之前用到的指令,都是在/usr/bin路径下的可执行程序,指令的本质:就是程序!特定系统路径下的程序!
在这里插入图片描述
我们不止可以直接输入指令,也可以用指令的绝对路径来执行:
比如说:pwd,比如说:ls
在这里插入图片描述

补充知识8:which 指令

作用:查询指令所在的路径
在这里插入图片描述
这里我们发现了alias,那什么是alias呢?

补充知识9:alias 指令

作用:给指令起别名
不知道有没有细心的同学发现刚刚,我们使用绝对路径下的ls指令时,test1目录是没颜色的,这是为什么呢?
在这里插入图片描述
当我们在绝对路径下添加--color=auto时,我们发现它就有颜色了
在这里插入图片描述
这时就可以推断出,原来是--color=auto起的作用,ls指令本来是不带颜色的,只不过是用alias指令给ls --color=auto起了个别名叫ls,所以他就有了颜色,之前我们说ls -l简称ll,其实它只不过就是ls -l的一个别名,现在就可以理解为什么了。
在这里插入图片描述

9. mv 指令

语法:mv 源文件 目标路径
作用:把文件或者目录移动到指定目录中去
全称:move(移动)
mv普通文件
在这里插入图片描述
mv目录
在这里插入图片描述

(1)特殊用法:更改文件名

语法:mv 源文件 新文件名(当前路径下)
这里要保证新文件名是不存在的,否则会进行覆盖
其实更改文件名的本质就是把文件mv到当前目录下,且对旧文件进行改名
在这里插入图片描述
这里hello.c改完名后把原本的test.c给覆盖了,这里便不做证明了,我已经验证过了。
在这里插入图片描述
当然也可以更改目录名:
在这里插入图片描述

(2)特殊用法:移动到其他路径且更改文件名

语法:mv 源文件 目标路径/新文件名
在这里插入图片描述

10. cat 指令

语法:cat [选项] [文件]
作用:查看目标文件的内容
刚刚讲过cat指令了,这里在补充一些其他用法

(1)-n 选项

作用:在打印文件内容时,带上行号
在这里插入图片描述

(2)-s 选项

作用:去除多行空行,多行空行部分只保留一行
在这里插入图片描述

(2)-b 选项

作用:对不是空行的部分进行编号
在这里插入图片描述

补充知识10:tac 指令

作用:将目标文件倒置(反向)输出(查看)
说明:tac指令不支持选项
在这里插入图片描述
cat, tac这样的指令主要用途是用来方便用户查看小文件
有小文件,就有大文件,那什么是大文件呢?

补充知识11:关于日志

在程序运行前,需要打开日志文件,程序运行期间,把所有程序的执行痕迹,以及所对应的时间,写入到日志文件中去,这个行为就叫写日志。
为什么要存在日志呢?
假如某时某刻,程序挂掉了,就可以通过日志文件进行问题排查。
举个例子便于理解:
小明每天都写日记,他的爸爸妈妈也知道小明爱写日记,突然有一天小明失踪了,他的爸爸妈妈可以看一下小明最后一天写的日记,就可以大概推断出小明失踪的日期了。
在Linux中也有日志,比如在这个路径下,就有几个日志,可以cat查看一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这时我们发现,按下回车后就会进行刷屏,所以cat指令就不建议用来查看大文件了
在这里插入图片描述
那我们该如何查看大文件呢?

11. more 指令

作用:查看文件内容(一般用来查看大文件)
功能:回车下翻,q键退出,/查找(不高亮)
缺点:只能按回车向下翻阅,不能向上翻阅
q键退出more指令

more /var/log/syslog 

再来查看一下刚刚的大文件,我们发现,并没有进行刷屏,而是将一屏内容打满就暂停下来了,只显示了22%的内容。
在这里插入图片描述
还可以按回车向下翻阅,但也只能向下翻阅了
在这里插入图片描述

12. less 指令

作用:查看文件内容,(一般用来查看大文件,类似more)
功能:上翻,下翻,q键退出,/查找,n键查看下一个匹配项
优点:在more指令的基础上,既可以用回车下翻,又增加了 ↑键 上翻,↓键 下翻
还可以,查找想查找的内容,而且会高亮显示,例如/root
在这里插入图片描述
构建一个大文件,查找666,演示n键查看下一个匹配项功能。

cnt=1; while [ $cnt -le 10000 ]; do echo "hello, $cnt"; let cnt++; done>log.txt

在这里插入图片描述

less log.txt

输入/66查找匹配项
在这里插入图片描述n键在这里插入图片描述再按n键在这里插入图片描述

13. head 指令

作用:默认查看文件中前10行的数据
在这里插入图片描述
可以在后面跟上head -[n]查看前n行,这里的n是一个数字,不是n本身
例如:head -5,查看前5行
在这里插入图片描述

14. tail 指令

作用:默认查看文件中后10行的数据
在这里插入图片描述
可以在后面跟上head -[n]查看前n行,这里的n是一个数字,不是n本身,同head指令,不做演示
现在我们想查看一下文件中间的内容怎么办呢?
例如:查看[ 2001 - 2025 ]区间内的数据
法一:利用临时文件,但是这种方法会生成临时文件,不是最佳方案
在这里插入图片描述
法二:管道

补充知识12:管道操作符 |

head -2025 log.txt | tail -25

作用:将前面指令的结果传输给后面的指令继续处理
我们可以看到,利用管道确实可以解决查看区间内容的问题
在这里插入图片描述
管道其实还可以对多组指令进行连接,批量化对指令进行加工
例如:拼接上tac指令将输出结果逆置
在这里插入图片描述
还可以继续拼接,以此类推,不在演示

15. date 指令

作用:查看现在的时间
在这里插入图片描述
默认的时间格式对我们中国用户不太友好,我们来看看如何按我们想要的格式输出时间

(1)按格式输出时间

例如:date +%Y/%m/%d-%H:%M:%S
在这里插入图片描述

字符含义
%Y年份
%m月份
%d天数
%H小时
%M分钟
%S秒数

date后需要跟+号,并且日期时间的分隔符不能是空格,如果想带空格,需要用转义字符
在这里插入图片描述

(2)显示时间戳

date +%s

ps:这只是我截图的时间节点,时间戳是一直在变的。
在这里插入图片描述
将时间戳进行格式化显示:date +%Y/%m/%d-%H:%M:%S -d @时间戳
例如:date +%Y/%m/%d-%H:%M:%S -d @0
在这里插入图片描述
这里我们发现时间戳为0时,我们这里显示的是早上8点,这是因为北京时间与格林威治时间有8小时的时差。
时间戳为0时,换算为北京时间就是上面的时间
再例如,随机复制一个时间戳:在这里插入图片描述

补充知识13:时间戳

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
由于地球存在时区差异,不同地区的计算机本地时间可能不同。为了在跨系统的数据处理中提供统一的时间度量标准,1970 年 Unix 系统的设计者肯・汤普逊决定采用 1970 年 1 月 1 日 00:00:00 UTC 作为时间起点(Unix 时间戳),以秒数记录时间。这种基于 UTC 的绝对时间表示法,避免了时区转换的复杂性,确保了全球计算机在时间数据存储和计算上的一致性。
简单来说:为了保证全球计算机时间的一致性,就诞生了时间戳。

  1. 从技术角度来说,它是一个线性递增的数据;
  2. 从应用、业务上来说,它可以让我们根据时间戳,通过数值范围查询(如[ start_time, end_time ]),可实现批量化处理(如批量筛选某天的订单数据)和分段式定位(如按小时 / 天划分数据存储区间,快速查找特定时间段的内容)。

16. cal 指令

作用:显示公历(阳历)日历

17. find 指令


http://www.mrgr.cn/news/100030.html

相关文章:

  • pycharm2024.3.2项目解释器选择问题
  • docker 配置代理
  • 面试之消息队列
  • http协议、全站https
  • 2025第十六届蓝桥杯python B组满分题解(详细)
  • 每天学一个 Linux 命令(30):cut
  • 【华为】防火墙双击热备-之-主备模式-单外网线路-分享
  • 第9章 多模态大语言模型
  • 阿里云99机器总是宕机,实测还是磁盘性能差
  • 常用第三方库:cached_network_image图片加载优化
  • 自动化标注软件解析
  • 【农气项目】基于适宜度的产量预报
  • Linux 服务器运维常用命令大全
  • CMCC RAX3000M CH EC 算力版刷机(中国移动 RAX3000M 算力版)刷机备份数据
  • 【Go】重难点知识汇总
  • 涂料油墨制造数字化转型的关键技术与挑战
  • QEMU源码全解析 —— 块设备虚拟化(21)
  • Maxscript调用Newtonsoft.Json解析Json
  • ibus输入法微软词库分享
  • 静电放电测试中垂直和水平耦合板的作用