Linux常见指令(3)

Linux常见指令 ⑶

  • date指令
    • 引入
    • 描述
    • 用法
    • 例子
      • 时间
      • 时间戳
  • cal指令
    • 描述
    • 用法
    • 例子
  • find指令
    • 描述
    • 用法
    • 例子
    • 补充
      • which指令
      • whereis指令
  • grep指令
    • 描述
    • 用法
    • 例子
      • grep 对文件的操作
      • grep 对目录的操作
    • 补充
  • 打包压缩 和 解压解包
    • zip && unzip
      • 描述
      • 用法
      • 例子
        • 对文件的操作
        • 对目录的操作
    • tar指令
      • 用法
      • 例子
        • 对文件的操作
        • 对目录的操作
  • bc指令
    • 描述
    • 用法
    • 例子
  • 了解系统
    • 用法
    • 例子
  • 热键
    • 用法
    • 例子
  • 指令的运行原理

date指令

引入

时间 对Linux来说是非常重要的. 有可能我们现在对这个重要性没多大体会, 但在以后得 日志 就会体会的非常明显.
日志是对我们的 检查 工作来说是很重要的. 程序运行到每一个关键时刻, 都需要程序员自己来打日志.
⇒ 就引出了 date指令, 用来查询时间.

这里还有一个概念, 就是 时间戳: 从1970年1月1日午夜到当前时间的秒数
时间戳出现的原因:

  1. 时间是人定义的, 每个国家的时间不是统一的
  2. 互联网运行时间快, 需要一个统一的时间
  3. 时间戳是单调递增的, 便于我们进行范围查找(可以采用 二分的思想)

描述

date指令是用来查询 时间 和 时间戳的

用法

date — — 按照默认的方式输出当前时间
date +格式要求(%Y分隔符%m分隔符%d… …) — — 按照要求输出当前时间
date +%s — — 输出当前的时间戳
date -d @时间戳 — — 按照默认的方式输出此时间戳对应的时间
date 格式要求 -d @时间戳 — — 按照要求输出此时间戳对应的时间

例子

时间

Linux常见指令(3)_第1张图片
注意:
%F 相当于 %Y-%m-%d
%X 相当于 %H:%M:%S
中间的分隔符, 可以是任意符号, 但是 不能是空格

时间戳

Linux常见指令(3)_第2张图片
️老陈, 你刚才不是说时间戳是从 1970年1月1日午夜到当前时间的秒数, 这上面显示的是 8点?

  • 时间戳又叫做格林威治时间, 是外国人定义的. 由于存在时差, 在我们中国就是 8点.
    其实, 这也变相的说明了 时间戳存在的意义: 每个国家在国内都能统一使用, 在国际, 也有一个统一的时间标准.

cal指令

描述

cal指令是用来输出日历的

用法

cal — — 输出当前月份的日历
cal 年 — — 输出这一年的日历
cal -3 — — 输出这当前月份, 上个月份, 下个月份的日历

例子

Linux常见指令(3)_第3张图片
Linux常见指令(3)_第4张图片

find指令

描述

find指令: 在目录结构中搜索文件, 并执行指定的操作

用法

find 指定目录 -name 文件名 — — 从指定目录开始以递归的方式搜索此文件名的所有文件

例子

Linux常见指令(3)_第5张图片

  • 发现: 普通用户下, find指令可能会受到权限限制
    家目录 下, 即 /home/用户名/xxx 或 ~, 不会受到权限限制. 因为家目录下的一棵 ‘树’ 就是自己的!!
    其他目录 下, 尤其是 /usr/xxx 可能会受到权限限制. 解决方法就是用 root用户去搜索
    Linux常见指令(3)_第6张图片

补充

同为搜索的指令, 还有 whichwhereis

which指令

which 指令 — — 在指令路径下 /usr/bin/xxx 搜索指令所在位置

Linux常见指令(3)_第7张图片

whereis指令

whereis 指令/文件 — — 在系统特定路径下进行搜索(搜索结果一般是 文件路径, 头文件, 可执行程序, 手册, 安装包 ... ...)


Linux常见指令(3)_第8张图片


  • find指令可以搜索任意文件, 但是速度较慢
    which指令, 搜索指令所在位置, 输出的信息更加详细
    whereis指令, 界于两者之间, 既可以搜索指令也可以是文件

grep指令

描述

grep指令: 在文件中以 为单位搜索字符串( 行文本过滤 ),将找到的行打印出来

用法

grep 条件 文件名/文件地址 — — 在文件中以行为单位, 将满足条件的行的内容默认输出到显示屏文件
grep -r 条件 目录/目录地址 — — 在目录路径下以递归的方式, 在各个文件中以行为单位, 将满足条件的行的内容默认输出到显示屏文件

跟选项:
-i — — 忽略条件中的大小写
-v — — 逆反, 将不满足条件的行的内容输出出来
-n — — 显示输出结果的行号

例子

grep 对文件的操作

Linux常见指令(3)_第9张图片
可以看出, 还是非常简单的, 很容易入手. 当然还有两个 极端情况:
Linux常见指令(3)_第10张图片
'' 这是一个 空字符, 满足这个要求的, 就是文件本身喽.
-v , 逆反, 那就是空了

grep 对目录的操作

Linux常见指令(3)_第11张图片

补充

一般指令后面跟的有文件, 可以尝试使用 管道 来进行优化. 这样写有两点好处:

  1. 管道文件是内存级的文件, 速度快
  2. 指令后面就不需要跟上 文件喽

grep指令常用的用法是: 配合管道, 来查看进程. 由于进程是后面才学习的, 这个以后再讲!!

打包压缩 和 解压解包

zip && unzip

描述

我们熟知的Windows操作系统, 有很多的打包压缩, 解包解压的软件. 打包压缩有很多的优势, 比如:

  1. 有多个文件变成一个文件, 不容易造成文件的缺失(就是不容易丢失其中的一两个)
  2. 体积变小, 下载时间变短

总结下来, 就是不容易造成文件的缺失 和 下载时间变短

️Linux也是一个操作系统, 那么它在什么场景下使用打包压缩呢?

  • Linux有充当服务器的时候, 也有各种网络应用场景, 满足通讯的需求, 这时候就有打包压缩的需求

安装zip 和 unzip 的命令: yum install -y zip unzip(记得要在root用户下)

zip 和 unzip 指令就是打包压缩 和 解压解包的功能

用法

zip指令默认后面跟的是一个文件
zip xxx.zip 文件 — — 打包压缩一个文件
zip -r xxx.zip 目录 — — 打包压缩整个目录
unzip xxx.zip — — 默认解压到当前目录下
unzip xxx.zip -d 目录路径 — — 解压到指定路径下

例子

对文件的操作

Linux常见指令(3)_第12张图片
Linux常见指令(3)_第13张图片

对目录的操作

Linux常见指令(3)_第14张图片

打包压缩 可以使多个目录/文件 变成一个文件

tar指令

用法

tar czf xxx.tgz 文件/目录 — — 打包压缩
tar tzf xxx.tgz — — 预览
tar xzf xxx.tgz — — 默认解压到当前路径下
tar xzf xxx.tgz -C 目录路径 — — 解压到指定路径下

例子

对文件的操作

Linux常见指令(3)_第15张图片

对目录的操作

Linux常见指令(3)_第16张图片
️为什么tar指令后面的压缩后缀是 .tgz

  • xxx.tgz 的全称是 xxx.tar(打包后缀) .gz (压缩后缀).
    起着打包压缩的功能, 所以简写就是 xxx.tgz

️如果我们想到指定目录下解压解包, 除了用 -r 或 -C这两个选项, 我们能不能用别的方式实现同样的功能呢?

  • 先明白一个点: 不能在原路径下解压, 因为已经存在一个一样的目录/文件, 就算你在原路径下进行解压解包, 也是无用的.
    其次, 我们可以巧用 mv指令, 将压缩包移动到指定路径, 并在那个路径下进行解压解包.

️有很多的打包压缩工具啊, 老陈, 为啥只介绍了这两个??

  • 确实有很多的打包压缩工具, 但是这两个工具是很经典的, 其它的不清楚的可以直接去网上查询

bc指令

描述

bc指令可以进行浮点数的运算, 类似于 Windows下的 calc(计算器)

用法

首先进入 bc模式
然后输入计算的式子

例子

Linux常见指令(3)_第17张图片

️老陈, 有没有一种方式: 不进入 bc模式, 直接输出式子的结果

  • 首先, 输入 — — echo
    其次, 把输入的结果给 bc — — 管道 |

总结就是: echo 式子 | bc

Linux常见指令(3)_第18张图片

了解系统

用法

由于对系统的一些相关知识并没有深入了解, 在此处我们就看一看就行, 就当有这一回事~~

uname— — 系统的名字
uname -a — — 查看系统的详细信息
uname -r — — 查看系统的体系结构 和 内核版本
free -单位(m, g, t … …) — — 查看内存
df -h — — 查看磁盘

例子

Linux常见指令(3)_第19张图片

别的东东, 老陈在这里就不多说了. 这里直说一个点:

x86 — — 32位机器
x86-64 == x64 — — 64位机器

热键

用法

tab — — 自动补全
ctrl + r — — 历史命令查询(ctrl + c 结束)
nano — — 记事本
ctrl + d — — 退出终端, 退出用户
ctrl + c — — 让当前命令 强制停止

例子

Linux常见指令(3)_第20张图片

  • 总结一下:
    连按两次 tab键, 就会输出这个系统现在已有的命令
    ctrl + r ⇒ 就会出现 ’ ', 然后在里面输入想要查找的历史命令, 退出就是 ctrl + c
    ctrl + d: 不仅可以退出终端(即退出xshell), 亦可以回退到上一个用户
    nano: 就相当于Windows下的记事本, 保存退出: ctrl + x 然后 y 然后 enter

️ctrl + r 是查找历史命令, 难道Linux操作系统有历史存储功能??

  • 观察力真不错!! 下面介绍一个命令 : history

    Linux常见指令(3)_第21张图片
    只不过, 不是把命令全部保存了下来, 只是记录最近的 1000 个左右. 不过这个默认记录个数是可以修改的, 这个其实没多大意义~

指令的运行原理

前面我们已经知道了, 指令的本质就是编译好的程序或者脚本, 只不过是放在了系统的特殊路径下.⇒ 指令其实就是字符串, 只不过这个字符串经过了系统的处理和加工; 和我们输入的字符串是不同的.
Linux常见指令(3)_第22张图片

️既然谈到了输入, 那么每次输入的时候前面的一段东西是什么?



  • 这个叫做 bash命令行, 我们先谈一下它的构成:
    muyu — — 是当前用户名
    @C-muyu-Y — — 主机名
    ~ — — 当前目录
    $ — — 命令行提示符. root用户下的命令行提示符是 #, 而普通用户下的命令行提示符是 $

    这个是我使用的云服务器的名字, 即主机名
    Linux常见指令(3)_第23张图片
    当我们改变用户为 root用户, 我们发现: 当前用户名 和 命令行提示符都发生了变化

️ 老陈, 我之前听过 shell bash sh, 现在又有一个bash命令行, 这些怎么进行区分啊??


  • Shell — — 命令行解释器, 相当于 一个 类群的总称, 这里就以程序员来做比喻吧
    bash/ sh — — 类群中的一个个成员, 程序员1, 程序员2, 程序员3 … …
    bash命令行 — — bash的样子, 程序员bash长什么样

️ 命令行解释器 Shell 是干什么的??

  • 命令行解释器是介于用户 和 操作系统的的一个 中间人 , 起着承上启下的一个作用.
    上达用户, 将操作系统的运行结果翻译给用户
    下至操作系统(OS), 将用户的需求翻译给操作系统

这里多说一句, 通过前面的学习, 我们知道了 Linux下的命令行解释器 和 Windows下的图形化界面操作 的作用是一样的. 只不过它们的使用群体不一样, Windows面向大众, 操作简单; 而Linux面向程序员, 是需要一定的技术基础的!!

️老陈, 我们用户为什么不能直接操作 操作系统 (Windows 和 Linux … …), 而是要借助一下 "中间人" (图形化界面管理 和 命令行解释器) ?

  • 设想一下: 如果我们丢掉 图形化界面管理 和 命令行解释器, 直接操作 操作系统:
    站在操作系统的角度:
    首先, 操作系统不知道用户的一个需求, 即我们输入一个指令操作系统不认识
    其次, 如果我们的需求是没有道理的, 蛮横的, 那么就会损伤操作系统
    站在用户的角度(假设我们的输入有结果输出):
    操作系统输出的命令也是指令类型的, 我们用户根本看不懂

    总结下来, 中间人 (图形化界面管理 和 命令行解释器) 是必不可少的. 它的意义是:
    1.命令处理:
    上达用户, 将操作系统的运行结果翻译给用户
    下至操作系统(OS), 将用户的需求翻译给操作系统
    2.保护操作系统, 拦截用户的非法请求
  • 通过上面 老铁们的重重问题, 我们基本可以得知 操作系统, 用户, 命令行解释器 三者之间的关系

Linux常见指令(3)_第24张图片

各位老铁, 关于Linux常见指令的知识, 老陈就先讲到这里.
Linux指令众多, 在以后的学习中, 我们一边学习其它知识, 一边巩固记忆指令操作
先说一下 后面的的内容: Linux权限
预知权限如何, 且听下回分解

放弃时间的人,时间也会放弃他. —— 莎士比亚

你可能感兴趣的:(Linux,linux,服务器,运维)