前言:本节内容标题虽然为指令,但是并不只是讲指令, 更多的是和指令相关的一些原理性的东西。 如果友友只想要查一查某个指令的用法, 很抱歉, 本节不是那种带有字典性质的文章。但是如果友友是想要来学习的, 那么本篇文章很适合, 而且非常适合初入linux的小白。
时间指令date
date能够打印当前或者某个时间的日期。 使用方法如下
什么都不加直接date :
date后面也可以加上参数, 比如加上+%Y-%m-%d%H%M%S, 其中Y是年, m是月,是日, H是时, M分, S是秒:(注意, 中间的分隔符可以自己控制)
也可以使用冒号
也可以不加某些参数,比如说不加年, 不加日
最重要的一种用法就是使用date +%s, 这个是打印时间戳:
那么, 知道了时间相关指令。 那么这些指令有什么作用呢?
在我们工作后, 公司中都要写日志。当程序运行到某个关键的时刻的时候, 都要打印日志。日志的内容有着分类: 时间、日志等级、日志的具体信息、 其他信息。所以,时间的指令,尤其是时间戳的概念和公司要写的日志密切相关。
因为对于时间戳来说, 时间戳是一个从1970年1月1日到现在所经过的秒数。这个数字是一直在增大的。 它单调递增, 所以我们如果规定一个起始时间, 一个终止时间。 那么它就很容易进行范围的查找。这就是为什么公司日志和时间戳密切相关。
而我们使用时间戳。 date指令也可以将某一个时刻的时间戳换算成年月日的形式, 如图:
另外:注意这里打印的时间是北京时间。 而时间戳的规定是从伦敦(好像是伦敦, 0度经线位置)1970年1月1日零时, 所以我们打印0时间戳的时候, 打印的是八点:
补充:linux日历
cal可以打印linux中的日历, 后面参数可以加某个年份就会打印出该年所有月份的日历:
查找
查找指令有三个:find, which, whereis
- find:find 路径 -name 文件名——》在某个路径下寻找所有文件名是要查找的文件名的文件, 它真的会在磁盘中进行全面查找。 (这里可以使用*号配合查找)
- which: which 指令——》主要是在特定目录下寻找某个指令, 特定目录就是/usr/bin:
- whereis:whereis也是在特定的路径下进行查找, 使用whereis不仅可以找到文件所在路径, 还可以找到man手册, 压缩包, 安装包静态库之类的东西:
行过滤grep
grep是行过滤文件指令, 它能够过滤掉文本中不需要的行, 只打印我们想要的或者我们想要知道的文本行。
用法:grep 文本内容 文本。 意思就是将文本中那些没有文本内容的行过滤掉不打印, 纸打印存在文本内容的行。
同时grep上也可以添加指令
- -v: -v指令能够将文本中原本应该打印的过滤掉, 原本应该过滤掉的重新打印。
- -i: -i能够在进行文本选择是否过滤的时候忽略文本内容的大小写。
- -n: 打印行号
grep后面也可以加上多个文件或者目录。 如果跟目录, 就要在前面加上-R选项, 意思是递归搜索。 最终结果都是打印文件路径 : 文件内容。
打包和压缩
首先, 我们要想明白为什么要打包和压缩, 打包和压缩有什么好处。
首先, 能够被打包和压缩的, 一定是一个整体。 那么它们就不能轻易的分开, 如果我们没有把文件打包, 那么在传输过程中就容易丢失文件。 而打包就是将多个文件——》一个文件, 不容易造成文件的丢失。
其次, 压缩文件后还能减小文件的体积, 方便我们下载, 减少占用磁盘空间。 这里起始最重要的是方便我们下载。
打包的工具有zip, tar, unzip
//zip
zip是一个linux中的软件(也可以叫做打包压缩方案, 打包压缩方案有很多, 想windows中的好压, 快压等等都是不同的压缩软件, 也叫压缩方案), 所以我们要先使用root账号下载。
下载后我们就可以使用zip压缩或者解压文件。 使用方法:
zip 文件名 要压缩的文件:将选择的文件进行压缩, 如果要压缩的是一个文件夹, 就要加上-r——》zip -r 文件名 要压缩的文件, 也可以使用多个文件进行压缩——》zip 文件名 要压缩的文件1 要压缩的文件2……
//unzip
zip和unzip是对应的, unzip就是解压。 用法如下:
- unzip 文件名: 就是将对应文件名的压缩包解压
- unzip 文件名 -d 要解压到的路径: 将文件名对应的压缩包解压到某个路径。
//tar
tar也能够进行压缩和解压操作。 这是系统中自动配备的压缩方案。不需要进行下载。 这里列出三种常用用法:
- tar czf 文件名 要压缩的文件 : 将要压缩的文件压缩
- tar tzf 文件名: 预览压缩包
- tar xzf 文件名: 解压压缩包
bc计算器
bc是linux中的计算器,类似于windows中的浮点。
uname
uname可以打印和计算机相关的信息。
uname - a是打印全部的信息:
第二个蓝框框打印的是linux的内核版本, 第三个蓝框框是计算机的体系结构, x86是代表32位。 x86_64 等同于 x64。
如果我们只想获取计算机的体系结构, 那么就可以使用uname -r, 那么就只获得内核版本以及体系结构
//lscpu可以查看当前cpu的版本:
//tab
tab健可以快速打出指令, 连点两次tab可以打印出我们可以使用的指令个数。
//cral + r
cral + r可以对历史中的指令进行搜索, 然后快速打出指令。 但是cral只会保存我们最近使用的1000条指令, 可以修改。 同时使用history可以进行查看。
指令的运行
如何理解指令的运行。
首先我们要先理解什么是命令行, 什么是命令行解释器。
首先, 图中的用户名, 主机名, 当前目录, 以及命令行提示符等等这些, 组成了命令行。 这其实是就是bash命令行。 bash是一种命令行解释器。
命令行解释器有: shell, bash、sh, 这些shell包含了bash,sh。 它是所有命令行解释器的同城。 windows的图形化界面本质上也是一种命令行解释器。
那么, 为什么要有命令行解释器, 这需要知道命令行解释器的作用和意义:命令行解释器可以将命令翻译给操作系统的核心处理。 同时还能将核心的处理结果翻译给使用者。也就是说命令行解释器是对命令行进行解释, 同时还能变相的保护操作系统, 可以对于用户的非法请求进行拦截。
为什么说命令行解释器会保护操作系统?这需要从宏观和微观角度理解操作系统。
首先, 宏观上的操作linux就是linux上面的各种应用, 命令行解释器以及linux内核组合成的linux机器。 但是微观上面的操作系统就是linux内核。 kernel。 linux内核并不相信用户, 所以会在外面设置一个shell, 壳子。 来作为与用户进行交互的中转层, 也就是命令行解释器。
而且,我们所有的指令操作, 最终都会在linux内核中进行执行。 而操作系统, 也就是linux内核的操作难度较高, 我们不能直接对linux内核打交道, 所以我们需要有一个命令行解释器进行辅助。
知道了这些之后, 我们就可以知道, 我们输入的指令, 其实就是我们输入一串字符。 然后命令行解释器将这些指令翻译给linux内核, 然后内核运行出结果再交给命令行解释器, 命令行解释器再显示给我们。
--------以上, 就是本节全部内容。 下面是本节内容的笔记