Ⅰ . 初始重定向
01 输出重定向 >
在上一节中我们为了方便讲解 head 和 tail 指令,我们用到了 > 去生成了一千行文本。
通过 > 将生成的一千行文本写入到了 large.txt 中……
我们现在来正式介绍一下:
$ echo "内容" > [目标]
本来应该写入到显示器的内容,把他写入到文件中,我们称之为 输出重定向 。
注意事项: > 会清空原始的文件内容,进行重新写入。
02 追加重定向 >>
输出重定向 > 会清空原始内容,如果你不想清空原始内容呢?
我们可以使用 " 追加重定向 >> " ,可以做到在原有内容后 "追加" :
说明:追加重定向不会清空原始内容,而是在原始文件的结尾进行新增式的写入。
$ echo "内容" >> [目标]
03 输入重定向 <
在这之前我们先来补充一下 cat 后面什么都不加:
$ cat
cat 后面什么都不加,cat 就会默认从键盘(标准输入):
输入重定向:将本来应该从键盘中读取的方式,改成从指定的文件中读取。
04 Linux 下一切皆文件
Linux 操作系统有自己的设计哲学,它认为所有的东西都可以当作文件,
甚至你所看到的键盘、显示器、显卡等外设,都可以当作文件。
现阶段还没有去讲解系统方面的知识,至于底层是如何做到的我们暂时不深入讲解。
我们把磁盘、显示器、网卡、显卡、键盘、鼠标等设备(我们统称之为外设),
都看作文件,以同样的方式看待这些设备。
注意事项:
Linux 是不把 CPU 看成文件的,因为 CPU 是要帮你完成 "一切皆文件" 的设计理念的。
Ⅱ . 时间相关的指令
01 date 指令
在 Linux 中我们可以直接输入 date 去查看当前的时间:
date # 显示时间
指令功能 : 显示时间
在显示方面,Linux 也是可以设定格式去显示时间的。
date +%Y:%m:%d # date 指定格式显示时间
date 标记列表:格式设定为一个加号后接数个标记,其中常用的标记列表如下:
- %H : 小时(00..23)
- %M : 分钟(00..59)
- %S : 秒(00..61)
- %X : 相当于 %H:%M:%S %d : 日 (01..31)
- %m : 月份 (01..12)
- %Y : 完整年份 (0000..9999)
- %F : 相当于 %Y-%m-%d
我们就可以通过这种方式去控制格式,显示我们想要显示的:
02 时间戳
概念:自 1970 年 1 月 1 日午夜开始,到现在为止所累积的秒数,即为时间戳。
date +%s # 查看当前时间戳
那么问题来了,时间戳有什么用途呢?
它可以作为日志的一部分,如果一个项目比较大,必须得有日志的能力。
因为时间戳是不断递增的,递增值有很强的唯一性,所以在做日志信息归档的时候很方便。
日志我们一般从尾部看,时间 + 错误信息。日志,具有排查错误的能力!
03 cal 指令
在 Linux 中输入 cal 就显示出一个日历:
cal
指令功能 :用于查看日历等时间信息。
如果只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份。
cal [参数][月份][年份]
常用选项:
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
思考:Linux 命令的时间和日历存在的意义是什么?
有些语言是基于 Linux 命令组成起来的语言,比如 shell 。因为脚本也是要打日志的,所以脚本也是需要有时间的。现在用命令行看时间的人很少,但是如果把时间倒退到 40 年前,就会有人去拿命令行去查看时间。
Ⅲ . 文件查找
01 find 指令
find 路径 -[选项]
指令功能 :用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)。
指令介绍:
- Linux 下 find 命令在目录结构中搜索文件,并执行指定的操作。
- Linux 下 find 命令提供了相当多的查找条件,功能很强大。由于 find 具有强大的功能,所以它的选项也很 多,其中大部分选项都值得我们花时间来了解一下。
- 即使系统中含有网络文件系统(NFS),find 命令在该文件系统中同样有效,只要你具有相应的权限。
- 在运行一个非常消耗资源的 find 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间 (这里是指30G字节以上的文件系统)
常用选项:
- name 按照文件名查找文件
用法演示:在家目录下查找所有 .c 文件
02 grep 命令(行文本过滤工具)
在我们之前形成的有一千行的大文本 large.txt 中,
如果我想把其中的 123 关键字的行拎出来,我们就可以使用 grep 命令:
$ grep '123' large.txt # 显示large.txt中带有123的行
grep [选项] 搜寻字符串 文件
指令功能 :在文件中搜索字符串,将找到的行打印出来。
常用选项:
- -i 忽略大小写的不同,所以大小写视为相同。
- -n 顺便输出行号。
- -v 反向选择(反选),凡是具有关键字的文本行,去掉并保留没有匹配关键字的行。
注意事项:
① 只要某行存在你要找的关键字,整行都会被保留显示出来,所以称 grep 为行文本过滤工具。
② grep 匹配时是明确大小写的 ,如果想忽略大小写,须加 -i 选项。
操作演示
① -v 反向选择 | -iv 忽略大小写并反向选择
② -n 选项,将查找的结果带上匹配行所在行号
Ⅳ . 打包与压缩
01 zip 指令
为了方便讲解,我们先准备如下操作:
zip [压缩文件.zip] [目录或文件]
指令功能 :将目录或文件压缩成 zip 格式
常用选项:
- -r 递归处理,将指定目录下的所有文件和子目录一并处理。
操作演示:
02 unzip 指令
那么如何解压呢?
unzip [目标] # 解压目标文件
操作演示:我们可以使用 zip 指令对应的 unzip 指令对它进行解压操作:
先把之前的 tar_package 移走
此时我们 cd 到 tar_package 文件中,却发现什么都没有
原来我们一开始就压了个寂寞,
只是把目录打包了,里面的 file 文件都没打包进去,相当于你只打包了个文件夹!
注意事项:直接 zip 目录,是打包不了目录里面的东西的!
正确做法是 —— 对于目录的打包,如果你想打包目录里的东西:
$ zip -r [压缩包名称] [压缩对象] # 递归压缩
操作演示:使用 zip -r 去打包目录
用 unzip 解压:
注意事项:unzip 解压出来的原始数据,都会被放在当前路径下。
如果你想指定解压到指定目录下,可以在 unzip -d 后加上路径。
思考:我为什么要打包压缩?
① 节约空间,压缩一下可以节约空间。
② 我们下载下来的软件是压缩包,曾经提供软件的人,上传的是压缩包。
所有的软件写好之后,不是只有一个文件的!所有的互联网公司后台都是 Linux 系统,开发人员开发的软件,将来都是要部署在 Linux 系统上的,所以所有的软件开发好之后都要打包压缩上载到 Linux 上,进行安装部署。所以 Linux 必须支持解包解压。
03 tar 指令
一般一个压缩包是需要有两个步骤的:① 打包 ② 压缩。
我们还要讲一种压缩方式,这种压缩方式也是 Linux 中最常见的一种 —— tar 指令。
tar [-cxtzjvf] 文件与目录 .... 参数
指令功能 :打包 / 解包(不打开它,直接看内容)
常用选项:
- -c 建立一个压缩文件的参数指令(create 的意思)。
- -x 解开一个压缩文件的参数指令!
- -t 查看 tarfile 里面的文件!
- -z 是否同时具有 gzip 的属性?以及是否需要用 gzip 压缩?
- -j 是否同时具有 bzip2 的属性?以及是否需要用 bzip2 压缩?
- -v 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f 使用档名,请留意,在 f 之后要立即接档名!不要再加参数!
- -C 解压到指定目录。
操作演示:打包 tar czf 和压缩 tar xzf 都可以用 tar 指令去完成:
操作演示:tar zcvf 、tar xzvf 在压缩过程中显示文件
操作演示:-C 选项,解压到指定目录下:
Ⅴ . 其他常见指令
01 bc 指令
Linux 下,我们可以用 bc 命令很方便地进行浮点运算:
echo " [计算内容] " | bc
02 uname -r 指令
不同的平台下对应的指针大小是不一样的,在 VS32 位下指针对应的大小是 4 个字节,
在64位下系统,我们的指针大小就是 8 字节。我们该怎么知道当前系统的体系结构信息呢?
我们可以用 uname -a 查看系统中的很多信息,如果只想看内核版本,可以输 uname -r:
uname [选项]
指令功能 :获取电脑和操作系统的相关信息
指令介绍: uname 可显示 Linux 主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:-a 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。
03 常用热键
什么是热键?热键即组合键,可以理解为经常使用的按键。
热键有什么用呢?比如下面这些情况。
ctrl + C - 令当前程序暂停(可终止失控程序)
tab - 命令的自动补齐
Ctrl + r - 搜索历史命令
Ctrl + d - 快速退出账户
04 关机
注意事项:如果使用的是云服务器,云服务器是不需要关机的,永远不关机。
shutdown [选项] ** 常见选项: **
指令功能 :关机
常用选项:
- -h 将系统的服务停掉后,立即关机。
- -r 在将系统的服务停掉之后就重新启动 -t sec :
- -t 后面加秒数,为 "过几秒后关机" 的意思