写在前面
上一篇文章,我们学习了Linux的一些常用指令,
学习了如何理解Linux系统,介绍了对Linux系统的理解:Linux下一切皆文件
介绍了重定向还有管道相关的知识。这里是上一篇博客的链接:http://t.csdn.cn/2d6fc
接下来我会对Linux常用指令进行收尾,并谈一谈如何理解指令。
目录
写在前面
1. date
描述:
用法:
例子:
例1:
例2:
例3:
例4:
2. cal
描述:
用法:
例子:
例1:
例2:
3. find(重要)
描述:
用法:
例子:
例1:
例2:
例3:
4. grep(非常重要)
描述:
用法:
例子:
例1:
例2:
例3:
例4:
5. zip/unzip
描述:
用法:
例子:
例1:
例2:
例3:
6. tar
描述:
用法:
例子:
例1:
例2:
例3:
7. bc
描述:
用法:
例子:
例1:
例2:
8. uname
描述:
用法:
例子:
例1:
例2:
9. 常用快捷键介绍
tab 补齐功能
Ctrl d
Ctrl r 查找历史命令
上下键查找最近使用过的命令
history
10. shutdown
指令原理的理解
指令的运行原理:
解析:
总结:
写在最后:
1. date
描述:
date指令可以用来查看时间。
用法:
date
选项:有很多,我待会儿会实操介绍
例子:
例1:
直接使用date指令:
例2:
携带选项,自己设置格式:
Y代表年,m代表月,d代表日,H代表小时,M代表分钟,C代表秒。
例3:
查看时间戳:
补充:
什么是时间戳?
时间戳是从1970年1月1日开始计算到现在的秒数。
我们为什么需要时间戳?
就程序员而言,以后我们工作,写代码都会需要携带日志信息,
而日志信息包括了时间信息,而使用我们现在的时间并不太准确,
为什么呢?因为世界各地之间是有时差的。
所以日志信息包括的时间是使用这个统一的时间戳。
例4:
如何将时间戳转换成具体时间:
在date后面加上 -d @时间戳 即可,我这里前面携带了自定义的格式。
2. cal
描述:
查看日历(西历)
用法:
cal 查看本月日历
cal + 年份 查看该年的日历
例子:
例1:
直接用cal。
例2:
cal + 年份
3. find(重要)
描述:
查找文件
用法:
find + 路径 + -name + 文件名
例子:
例1:
比如说,查找根目录下所有叫 test 的文件:
操作系统就递归搜索了所有叫 test 的文件。
例2:
查找指定地址下的 ls 命令
(注:我们之前有讲过,其实指令就是一个可执行程序,所以我们能在指定目录下找到他们)
例3:
奇怪的现象:
我们在 /usr 目录下面查找 ls 指令的时候,出现了 Permission denied 这样的提示,
其实是在查找的过程中出现了一些不允许进入的区域,就是有些地方被禁止(用户)访问了。
4. grep(非常重要)
描述:
查找文件内容。
用法:
选项:
-i 无视大小写
-n 顺便输出行号
-v 反向选择(就是显示出你没搜索的内容)
例子:
例1:
我用 shell 脚本写了一些东西进 log.txt 文件中
脚本提供:cnt=0; while [ $cnt -le 100 ]; do echo "hello linux $cnt"; let cnt++; done > log.txt
使用 grep 查找所有带有 9 的内容:
例2:
测试 -n
测试 -v
不难观察出,我们看不到 9。
例3:
我们还能通过 grep 指令批量查找文件内容:
再创建一个文件:(并输入99)
通过 grep 查找当前目录下所有文件的 99 都在哪里:
(注:* 是通配符)
例4:
通过 grep 查找根目录下所有文件的main函数在哪一行:
grep -nR "int main() " ~
为了不让它刷屏啊,我就中途停止了,
我们可以看到他确实能将所有包含int main()的信息查找出来。
(注:~ 就是根目录的意思(之前的文章有提到过))
其实grep之后还有很多应用的场景,我们以后还会经常见到它。
5. zip/unzip
描述:
压缩和解压的指令。
用法:
zip + 压缩后的文件名 + 被压缩文件名
选项:
-r 递归压缩
-d 指定目录
例子:
例1:
首先我想补充一些内容,我们为什么要压缩文件,
1. 我们将文件打包压缩到一起,可以很方便我们发送给其他人,就算丢失,也是全部都丢了;
如果我们一下子传输一堆文件,容易出现有一些文件丢失了,那就非常难受,不知道丢了那个文件
2. 压缩后的文件比较小,更容易传输
那废话不多说,现在开始:
使用 zip 打包目录和文件:
我们先创建一些文件:
打包压缩:
解压:
我们把这个压缩文件在上级目录解压,发现确实解压出来了。
结果一查看,d1里面什么都没有,这是为什么呢?
(注:如果你的Linux里面没有zip,下载指令:yum install -y unzip zip(要在root用户下载))
例2:
对于目录,我们需要递归打包压缩:
我们还是一样的操作,在上级目录解压该文件:
查看:
例3:
解包解压到指定目录:
解包到 test 目录下面了。
6. tar
描述:
主要功能:打包压缩、预览、解压解包。
用法:
tar + czf + 压缩后文件名 + 文件名 = 打包压缩
tar + tzf + 文件名 = 预览
tar + xzf + 文件名 = 解压解包
例子:
例1:
打包压缩:
例2:
预览:
例3:
解包解压:
7. bc
描述:
计算器。
用法:
bc
例子:
例1:
直接bc:
你可以随意计算。
例2:
其实我们还可以用管道:
这样也可以调用计算器。
8. uname
描述:
uname用来获取电脑和操作系统的相关信息。
用法:
选项:
-r 查看操作系统内核版本
-a 查看基本信息
例子:
例1:
-r 和 -a 选项:
我们可以看到 3.10.0 这个其实就是我们的内核版本,x86_64位机器。
例2:
扩展:我们还有命令可以查看CPU信息:
lscpu 命令:
9. 常用快捷键介绍
之前我已经介绍了 Ctrl c 结束当前程序,
还有一些好用的快捷键,
tab 补齐功能
比如说,我有一个命令忘记了:(clear命令)
双击 tab 键:
会有提示,其他命令也是如此,你可以试试。
另外,
tab 键的补齐非常好用,平时进入目录的时候,也可以用 tab 键补齐。
Ctrl d
一直按Ctrl d可以直接退出xshell。
Ctrl r 查找历史命令
我使用该命令:
只输入了while,他就自动帮我找到了之前使用的脚步,非常好用。
上下键查找最近使用过的命令
这个我就不演示了,大家知道就行,
非常好用。
history
实际上,为什么我们能查找到曾经用过命令呢,因为Linux帮我们存起来了,
用history我们就能查看:(太长了,我就截一小段)
10. shutdown
这个是关机指令,直接输入就能关机,
但是我想说:Linux服务器永不关机,记住这个点,
因为我们以后工作,也是不会关机的。
指令原理的理解
经过上述的学习以及之前文章的学习,我们总算是把常见常用的指令都学习了一遍,
在这其中我也穿插了不少对于Linux操作系统的理解,那么现在我们也来理解一下指令。
指令的运行原理:
我们来看看我们平时输指令的地方:
输入指令的过程,本质就是输入字符串。
我们之前也有讲过如何理解指令,
指令的本质其实就是编译好的程序和脚本,
一定是存放在系统的某一个地方。(之前也找过在哪)
图中的那一行其实叫做 bash 命令行。
先说结论:我们输入指令到 bash 命令行,命令行解释器告诉操作系统,
然后操作系统处理结果返回给命令行解释器,命令行解释器再将结果告诉用户。
那么这是个什么原理呢?
解析:
我们输入的所有指令,最终都要在OS内部运行,
但是OS的操作难度很高,普通人很难说直接去操作我们的OS,
这个时候就出现了:图形化界面 / 命令行解释器
平时我们用的Windows系统就是图形化界面,我们现在用的Linux就是命令行解释器
也就是图中的 bash 命令行,就是我们这个版本的命令行解释器。
这就有了上面说的,命令行解释器将用户的命令翻译给操作系统,
同时,也将操作系统的处理结果翻译给用户。
不仅如此,命令行解释器还能保护系统,它可以驳回用户的错误/非法操作。
像这样:(找不到命令)
就像一个外壳一样保护这操作系统:(如图)
我们将命令行解释器统称为shell,
举个例子,如果说shell是学生的总称,
那么我们的 bash 命令行就是一个大一学生张三
其他类型的命令行解释器例如 sh 就是大二学生李四
他们都是学生。他们都是shell。
等以后学了进程,我会带着你们自己实现一个shell,到时候我们能对它有更深的理解。
总结:
文章将常用的指令基本讲解完了,
最后讲述了如何理解指令的运行原理,希望对大家有所帮助。
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果感到有所收获的话可以给博主点一个赞哦。
如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~