【Linux】基本指令学习3
目录
- 一、指令学习
- 1.1 date 指令
- 1.2 cal 指令
- 1.3 find 指令 及 理论补充
- 1.4 alias 指令
- 1.5 which 指令
- 1.6 whereis 指令
- 1.7 grep 命令
- 1.8 top 命令
- 1.9 zip 和unzip 指令
- 1.10 rzsz 指令
- 1.11 tar 指令(重要)
- 1.12 uname 指令
- 1.13 重要热键
- 1.14 shell命令及其运行原理
个人主页<—请点击
Linux专栏<—请点击
一、指令学习
1.1 date 指令
指定格式显示时间:date +%Y/%m/%d_%H:%M:%S
,显示年月日时分秒。
它就会获取显示当前时间,指令中间的连接符号/、_、:
可以随便更改,但不能是空格。这个指令并不重要,重要的是下面的时间戳。
时间戳定义:记录从UTC时间1970年1月1日00:00:00(称为“Unix纪元”或“Unix Epoch”)
开始所经过的秒数。
获取时间戳:date +%s
它是在不断增长的一串数字,由时间戳获取当时的时间:date -d@时间戳
。
时间戳0
所代表的时间:
上图中不是1970
年零时零分零秒,是因为北京在东八区,这八个小时是时差。
时间戳对于Linux
而言是很重要的,文件都有三个时间戳:修改时间、变更时间、访问时间
。对于系统而言:时间戳为整个系统运行提供时序上下文,是运维和开发的绝对依据。
总结:时间戳将Linux
系统中一切无序的事件(文件改动、系统日志、任务执行)转化为有序的、可查询的历史时间线,是系统可知、可控、可审计的根本前提。
1.2 cal 指令
cal
可以用来查看日历,常用选项-3
查看上个月、本月和下个月
,cal
后接具体年份,显示那年所有月份。
1.3 find 指令 及 理论补充
作用:在指定目录层级中递归地搜索和定位符合用户指定条件的文件和目录。 find
的选项有很多,我们学习一个常见的:find 路径 -name 名称
。
既然find
可以指定文件和目录,那我一直搞不懂我们所学的这些指令本质到底是什么呀,我们可以以ls
为例查询一下。
如上图,Linux
一切皆文件,ls
是一个可执行文件!
理论认识:所学习的大部分指令都是可执行文件!
那我们思考一下,我们之前编写的代码,最后不也编译成可执行文件了吗?这里我准备了如下图的代码,并将其编译成了可执行文件mycmd
。
现在我们单独运行mycmd
:
它说找不到对应的文件。ls
是二进制文件,我们mycmd
也是二进制文件,凭什么ls
可以找到,而mycmd
不能找到。虽然不懂,但是可以大胆猜一下,是不是系统在找命令时,默认在/usr/bin/
路径下查找呢? 我们可以尝试将mycmd
拷贝到该目录一份。
如上图,我们程序拷贝到/usr/bin/
目录下了,我们再次尝试:
我们发现成功了,恭喜你刚刚将自己的命令安装到了系统上。 所以我们所写的可执行文件和我们所学习的系统的指令没有任何区别! 这也是为什么,我们写好的可执行文件系统找不到,因为系统默认会去/usr/bin/
路径下查找。
理论认识:所学习的大部分指令都是Linux
系统固定目录下的可执行文件!
最佳实践:不建议将你写的可执行文件拷贝到/usr/bin/
路径下,会污染系统的命令池。
1.4 alias 指令
作用:设置命令的别名。 语法:alias 别名='原命令 -选项 参数'
假设我们要将ls -al
命令起名为hsl
。
如图,这样就可以起别名了,如果不想使用了,可以引号中的内容清空。
注意:别名是一种内存级的,重新登录就没有了。
最佳实践:除非对Linux
系统特别熟悉,否则不要给命令起别名。
1.5 which 指令
功能:搜索系统指定的命令。告诉你,当你输入一个命令时,系统实际会执行哪个位置的可执行文件。
如上图,会告诉你系统实际会执行哪个位置的可执行文件。并且从上图中,我们发现,系统对ls
起了一个别名,那有什么作用呢?我们可以使用ls
和/usr/bin/ls
进行辨识。
如上图,我们发现我们所使用的ls
是原来ls
的ls --color=auto
的别名,所以我们可以得出结论:执行命令时会优先搜索别名,如果存在别名不会再/usr/bin/xxx
查找。
1.6 whereis 指令
功能:用于找到程序的源文件、二进制文件或手册。
1.7 grep 命令
grep
命令叫做行文本过滤工具,上期博客我们创建了一个有一万行的文件,我们可以拿它使用一下grep
。
假设我要过滤文本文件中包含999
的行:
现在有如下需求,要求过滤出2000
行到2100
行中包含9
的行,我们可以使用管道将我们所学的命令组合起来使用。
grep
指令的常用选项:-i
:忽略大小写的不同,所以大小写视为相同;-n
:输出行号;-v
:反向选择,即显示出没有 ‘搜寻字符串’ 内容行。
输出2000
到2010
行有关9
的行:
输出2000
到2010
行与9
无关的行:
现在准备了如下代码:
筛选出与hello
无关的行,并带上行号:
1.8 top 命令
top
命令相当于Linux
下的任务管理器,它可以实时、动态地显示当前整个系统的资源占用状况,以及各个进程的运行状态。选项-d
:刷新的时间间隔,-n
:刷新的次数。按q
退出top
。
当然top
不够直观,htop
是top
的增强版,支持鼠标操作,界面更友好,显示更直观。Centos
的安装指令:sudo yum install htop -y
;Ubuntu
的安装指令:sudo apt install htop -y
。
1.9 zip 和unzip 指令
zip
和unzip
是Linux
系统中实用的压缩解压工具。
zip
语法:zip 压缩文件.zip 目录或文件
,常用选项:-r
:递归处理,将指定目录下的所有文件和子目录一并处理。
现在准备了一份空目录test
和非空目录test1
。
我们要将test1
打包成test1.zip
,并在test
目录中解压并解包。
如图test1
已经被打包成了test1.zip
,接下来就是在test
目录下解压并解包。
unzip
的选项-d
:解压到指定目录,所以也可以直接解压到指定目录,不需要移动。
如果你在Linux
下运行zip
和unzip
时,系统反馈没有找到,就是没有安装该指令,安装一下就好了,Centos:sudo yum install zip unzip
;Ubuntu:sudo apt install zip unzip
。
1.10 rzsz 指令
rz
和sz
是两个用于在本地计算机与远程Linux
服务器之间,进行文件传输的工具。rz
: 从本地计算机上传文件到Linux
服务器。sz
:从Linux
服务器发送文件到本地计算机。
rz
和sz
的安装指令:Centos:sudo yum install -y lrzsz
;Ubuntu:sudo apt install -y lrzsz
。
从本地计算机获取文件:
在安装了rz
的情况下,也可以直接将本地计算机的文件拖拽到Linux
下。
使用sz
将Linux
下的文件传输到桌面上:
假设我们想将刚刚打包的压缩包传送到桌面上就可以直接sz
了。
1.11 tar 指令(重要)
tar
是Linux
系统中用于文件打包、压缩、解压和归档管理的基石工具。
语法:tar [选项] 文件与目录 ....
,常用选项:-c
:建立一个压缩文件的参数指令;-x
:解开一个压缩文件的参数指令;-z
:是否同时具有gzip
的属性,即是否需要用gzip
压缩;-f
:指定归档文件的文件名。这个选项后面必须紧跟你指定的文件名;-v
:压缩的过程中显示压缩的文件;-C
: 解压到指定目录。
常用组合,打包:czf
;解包:xzf
。
我们要将test1
打包成test1.tgz
:
将它解压到test
目录下:
这些压缩解压工具并不很重要,重要的是要了解到计算机
与Linux
之间(lrzsz)
,Linux
与Linux
之间(scp)
,可以进行网络传输。
1.12 uname 指令
题目:如何查看你的Linux
机器的体系架构?
以上题目中询问体系架构就是询问CPU架构
。uname
指令的功能是用来获取电脑和操作系统的相关信息。选项-a
:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。选项-r
:显示Linux
内核版本。
上图中x86_64
是64
位机器,在有的场景下会直接显示x64
。单一显示x86
是32
位机器。
扩充:显示cpu
的详细信息指令lscpu
;显示系统内存的详细信息指令lsmem
。
1.13 重要热键
【Tab】键:具有命令补全功能。
【Ctrl+C】:让当前程序停掉。
【Ctrl+R】:搜索历史命令。
小技巧:【!+ 字母】执行最近一次以该字母开头的命令。
1.14 shell命令及其运行原理
Linux
严格意义上说的是一个操作系统,我们称之为核心,(广义操作系统:操作系统内核、外壳程序,必要的应用软件;狭义操作系统:操作系统内核)。
我们用户不擅长与内核打交道,那太过复杂,所以就有了外壳程序,Shell
是外壳程序的统称,它最简单的定义就是一个命令行解释器,它将使用者的命令翻译给内核处理,同时将内核处理结果翻译给使用者,例如你输入人类可读的文本命令如 ls
,Shell
会理解这些命令,然后调用操作系统内核提供的相应功能来执行它们。
在Linux
中的Shell
外壳程序是bash
。
另一方面,Shell
外壳程序也保护了内核,它防止了直接和错误的访问,Shell
绝不仅仅是一个被动的命令输入框
,它是一个主动的、至关重要的安全层和治理层,通过验证、翻译和抽象,有效地保护了精密而脆弱的内核,确保了整个操作系统的稳定和安全。
总结:
以上就是本期博客分享的全部内容啦!如果觉得文章还不错的话可以三连支持一下,你的支持就是我前进最大的动力!
技术的探索永无止境! 道阻且长,行则将至!后续我会给大家带来更多优质博客内容,欢迎关注我的CSDN账号,我们一同成长!
(~ ̄▽ ̄)~