【Linux】基本指令(中)

作者:@阿亮joy.
专栏:《吃透西嘎嘎》
座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根
在这里插入图片描述

目录

    • 基本指令
      • rmdir 指令 && rm 指令
      • man 指令
      • cp 指令
      • mv 指令
      • cat 指令
      • more 指令
      • less 指令
      • head 指令
      • tail 指令
      • 时间相关的指令
      • cal 指令
    • 总结

基本指令

rmdir 指令 && rm 指令

rmdir是一个与mkdir相对应的命令。 mkdir是建立目录,而rmdir是删除命令。

语法: rmdir [-p] [dirName]

适用对象:具有当前目录操作权限的所有使用者

功能:删除空目录

常用选项

  • -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

rm命令可以同时删除文件或目录

语法: rm [-f-i-r-v] [dirName/dir]

适用对象:所有使用者

功能:删除文件或目录

常用选项

  • -f 即使文件属性为只读(即写保护),亦直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下所有文件

为了演示接下来的指令,我先通过mkdirtouch创建几个新文件。
【Linux】基本指令(中)_第1张图片
rmdir 空目录

rmdir 空目录名称  #删除该空目录

注:rmdir指令只能删除空目录,不能删除非空目录和普通文件。

【Linux】基本指令(中)_第2张图片
rm 文件 / 目录名

rm 文件名  #删除该文件

【Linux】基本指令(中)_第3张图片
注:rm 指令默认是删除普通文件的,如果想要删除目录,需要加上 -r 选项。

rm -r 目录名  #递归删除指定的目录及其内部文件

【Linux】基本指令(中)_第4张图片
有时候,我们删除一些文件,系统总会问我们是否想要删除。其实,Linux 系统也会这样。接下来,我给大家举个例子,这个例子涉及了权限的问题,大家可能还做不了,不过我们目前看一下知道就行了。

【Linux】基本指令(中)_第5张图片

sudo touch 文件名是一个提权创建新文件的命令,也就是说用 root 用户的身份创建一个新文件。如果删除一个 root 身份创建的文件的话,Linux 系统会提示你是否要删除该文件,n 表示不是, y表示是。

rm -f 文件名  #强制删除该文件

如果删除一个不属于我们的文件,系统将会询问我们是否要删除,但是有时候我们需要删除很多的文件,每次都询问我们将会很麻烦。所以我们可以加上-f选项,表示强制删除。

【Linux】基本指令(中)_第6张图片

rm -rf 目录名  #递归强制删除指定的目录及其内部文件

【Linux】基本指令(中)_第7张图片

rm -rf 目录名指令可以删除 Linux 系统下的任何文件,所以就有了rm -rf /这条删库跑路的指令。需要提醒大家的是,这条指令一定不要去尝试。如果你执行了这条指令,那么你的操作系统一定会挂掉,所以说要慎用。当然,如果作为一个实习生在公司实习,我们一般没有这么高的权限来接触到重要的数据,但是也不要尝试这条指令,因为这是要承担相应责任的。

如果我们在以上的指令都加上-i选项的话,那么我们删除一个文件或者目录,系统都会询问我们是否删除该文件或者目录。注意:-r 选项最好不要和 -f 选项搭配使用。

【Linux】基本指令(中)_第8张图片

那为什么我们删除一个文件或者目录,系统还要询问我呢?因为删除这个文件或者目录,我肯定是想删除的。但是有时候我们可能会出现误删的情况,系统询问你是否真的需要删除,给你一个挽留的机会,这样你也不会骂系统没有这个功能了。

man 指令

Linux 的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问 Linux 手册页的命令是 man

语法: man [选项] 命令。
常用选项

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。

解释一下,man 手册分为8章 :

  • 1 是普通的命令
  • 2 是系统调用,如 open,write 之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件
  • 3 是库函数,如 printf,fread等
  • 4是特殊文件,也就是 /dev 下的各种设备文件
  • 5 是指文件的格式,比如 passwd等就会说明这个文件中各个字段的含义
  • 6 是给游戏留的,由各个游戏自己定义
  • 7 是附件还有一些变量,比如向 environ 这种全局变量在这里就有说明
  • 8 是系统管理用的命令,这些命令只能由 root 使用,如 ifconfig

man 是一个查看指令、系统调用和 C语言接口的一个手册。

man man  #查找man手册

【Linux】基本指令(中)_第9张图片
我们只需要了解前三个章节,其他章节不要求掌握。

man top  #查看top命令

【Linux】基本指令(中)_第10张图片

man printf  #查看printf命令

【Linux】基本指令(中)_第11张图片
注:printf 也是一条指令,所以我们可以这样用它。如下图:

在这里插入图片描述

当然,printf也是 C语言中的一个库函数。所以我们可以输入man 3 printf来查看printf函数。

man 3 printf  #查看第三章节的printf

【Linux】基本指令(中)_第12张图片
如果指定在第几个章节找,那么系统就只会在这个章节找。如果没有指定在第几个章节找,那么系统会从第一个章节找,如果没有找到会给出提示系统没有你想要查找的东西。

有些小伙伴可能没有安装 man 手册,那么可以通过输入yum install -y man-pages来安装。安装完成后,就可以查看 man 手册了。注意,需要用 root 用户安装 man 手册。

cp 指令

语法: cp [选项] 源文件或目录 目标文件或目录

功能: 复制文件或目录

说明:cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

常用选项

  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链 接,则一律视为普通文件处理
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

echo 指令

echo指令是将信息输出到某个流中,可以是标准输出流,也可以是文件流。如果该文件流不存在,echo指令会创建该文件流。如果该文件流存在,会清空该文件流里的内容,再进行写入。但是echo指令并不能像printf指令那样可以格式化输出。注意:如果使用echo指令输出到文件流中,需要加上>输出重定向。

【Linux】基本指令(中)_第13张图片

将文件拷贝到目录中去

cp 文件名 目录名  #将指定的文件拷贝到指定的目录中去

【Linux】基本指令(中)_第14张图片
将目录拷贝到目录中去

cp -rf 目录名 目录名  ##将某个目录强制递归拷贝到指定的目录中去

【Linux】基本指令(中)_第15张图片
注意:cp 指令可以加上 -r 、-f 和 -i 选项。

mv 指令

mv命令是 move 的缩写,可以用来移动文件或者将文件改名(move (rename) files),是 Linux系 统下常用的命令,经常用来备份文件或者目录。

语法: mv [选项] 源文件或目录 目标文件或目录

功能:

  • 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录中。
  • 当第二个参数类型是文件时, mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  • 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv 命令将各参数指定的源文件均移至目标目录中。

常用选项

  • -f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

剪切文件到目录中去

mv 文件名 目录名  #将指定的文件剪切到指定的目录中去

【Linux】基本指令(中)_第16张图片
剪切目录到目录中去

将某个目录剪切到指定的目录中去

【Linux】基本指令(中)_第17张图片
对文件进行重命名

mv 文件名 不存在的文件名  #重命名文件

【Linux】基本指令(中)_第18张图片
对目录进行重命名

mv 目录名 不存在的目录名 #重命名目录

【Linux】基本指令(中)_第19张图片

注意:mv 指令只有 -f 和 -i 选项,并没有 -r 选项。

cat 指令

语法: cat [选项][文件]

功能: 查看目标文件的内容

常用选项

  • -b 对非空输出行编号
  • -n 对输出的所有行编号
  • -s 不输出多行空行

使用脚本生成大文件

cnt=0; while [ $cnt -le 10000 ] ; do echo "hello 106 [$cnt]"; let cnt++; done > test.txt

该脚本生成了一万零一行的hello 106的大文件。注意:这条指令要和我写的一模一样。

在这里插入图片描述
查看文件内容

cat 文件名  #查看文件内容

【Linux】基本指令(中)_第20张图片

cat -n 文件名  #带行号查看文件内容

【Linux】基本指令(中)_第21张图片

tac 文件名  #将文件内容反过来打印

【Linux】基本指令(中)_第22张图片
注意:cat 和 tac 指令并不适合查看大文本,只适合小文本或者代码片段。如果想要查看大文件,我们就需要学习 more 和 less 指令。

more 指令

语法: more [选项][文件]

功能: more命令,功能类似 cat

常用选项

  • -n 对输出的所有行编号
  • q 退出more
more 文件名  #查看文件内容

注意:more 指令查看的内容并不会将全部内容直接显示出来,需要通过 Enter 键来下翻来查看剩下的内容。但是 more 指令只能下翻而不能上翻。q 退出查看内容。

more -数字 文件名  #查看文件的指定行内容

【Linux】基本指令(中)_第23张图片
输入 more 指令后,也可以查找指定的内容。
【Linux】基本指令(中)_第24张图片

【Linux】基本指令(中)_第25张图片

less 指令

  • less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极 其强大。
  • less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看 。
  • 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
  • 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

语法: less [参数] 文件

功能:less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

选项:

  • -i 忽略搜索时的大小写
  • -N 显示每行的行号
  • / 字符串:向下搜索“字符串”的功能
  • ? 字符串:向上搜索“字符串”的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • N:反向重复前一个搜索(与 / 或 ? 有关)
  • q: quit

查看文件内容

【Linux】基本指令(中)_第26张图片
less 指令可以通过上下键来实现上下翻阅,也支持显示行号和搜索功能,大家可以自己尝试一下。因为 less 指令比较好用,所以就推荐大家 使用 less 指令来查看大文本。通常来说,大文本就是是大型代码和日志。

head 指令

head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head 用来显示档案的开头至标准输出中,而 tail 当然就是看档案的结尾。

语法: head [参数]… [文件]…

功能
head 用来显示档案的开头至标准输出中,默认head 命令打印其相应文件的开头10 行。

选项

  • -n<行数> 显示的行数

查看文件头部的内容

head 文件名  #默认打印文件开头的十行内容

【Linux】基本指令(中)_第27张图片

head -数字 文件名  #查看文件的开头指定行的内容

【Linux】基本指令(中)_第28张图片

tail 指令

tail 命令从指定点开始将文件写到标准输出。使用 tail 命令的 -f 选项可以方便地查阅正在改变的日志文件,tail - f filename 会把 filename 里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。

语法
tail [必要参数][选择参数] [文件]

功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

选项

  • -f 循环读取
  • -n<行数> 显示行数

查看文件尾部的内容

【Linux】基本指令(中)_第29张图片
【Linux】基本指令(中)_第30张图片
我们可以通过head指令和tail指令来查看文件头部和尾部的内容,那如果我想查看中间的十行内容呢?比如第 1000 行到第 1009 行的内容。

借助临时文件

head -1010 test.txt > tmp.txt #将test.txt的前1010行内容重定向到tmp.txt文件中去
tail -10 tmp.txt  #显示tmp.txt文件的尾部10行内容

【Linux】基本指令(中)_第31张图片
借助管道

head -1010 test.txt | tail -10

【Linux】基本指令(中)_第32张图片
我们可以看到,该指令借助了管道一次就能完成任务。那什么是管道呢?指令中的|就是管道。在 Linux 系统下,管道是用来传输“资源”的,且只有一个入口和一个出口。在这里,我们学习一下管道的命令行操作,到了后面的进程间通信,我会给大家讲解管道的原理和实现编码。

注:head指令默认是往显示器打印的,而tail指令默认是从文件中读取数据的。但是加上管道后,head指令就往管道中打印了,而tail指令就从管道中读取数据了。其实管道是内存空间(以后讲解)。

如果我们想将这十行内容逆置并提前前三行,通过管道|也能够做到。见下图:

【Linux】基本指令(中)_第33张图片
管道除了能实现系统自带的指令,也能实现我们自己实现的功能。比如我们写一个可以将小写字母转换成大写字母的 C语言代码。

【Linux】基本指令(中)_第34张图片
我们再将可执行程序change拷贝到上一级目录中,然后逆置后的前三行内容全部改成大写。

【Linux】基本指令(中)_第35张图片
这就是我想要向大家介绍管道的作用。那么我还想跟大家说明一件事,其实键盘和显示器也是一种文件流。因为 Linux 系统有着一切皆文件的设计哲学。
【Linux】基本指令(中)_第36张图片

时间相关的指令

date 显示
date 指定格式显示时间: date +%Y:%m:%d date
用法: date [OPTION]… [+FORMAT]

1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:

  • %H : 小时(00~23)
  • %M : 分钟(00~59)
  • %S : 秒(00~59)
  • %X : 相当于 %H:%M:%S
  • %d : 日 (01~31)
  • %m : 月份 (01~12)
  • %Y : 完整年份 (0000~9999)
  • %F : 相当于 %Y-%m-%d

显示时间

date  #显示时间

【Linux】基本指令(中)_第37张图片
在这里插入图片描述
在这里插入图片描述
除了%,其余符号可以任意填写,但不能是空格符。

2.时间戳

date +%s  #显示从197011000秒到当前时间的秒数

在这里插入图片描述
注意:时间戳是非常重要的概念,各行各业都要使用到时间戳。如果时间戳失效了的话,会导致非常大的问题。比如:如果时间戳出现了误差,那么列车的运行就会受到很大影响,甚至发生事故。

将时间戳转换成标准的时间

date +%Y/%m/%d-%H:%M:%S -d@时间戳 

在这里插入图片描述
可以注意到,时间为 0 转换成标准时间并不是格林威治时间的 1970 年 1 月 1 日 0 时 0 分 0秒,原因是该时间转换成了北京时间的 1970 年 1 月 1日 8时 0 分 0秒。

cal 指令

cal 命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。 “阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

命令格式: cal [参数][月份][年份]

功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

常用选项

  • -3 显示系统前一个月,当前月,下一个月的月历
  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前
    月在一年中的天数)
  • -y 显示当前年份的日日份

【Linux】基本指令(中)_第38张图片

查看日历

cal 数字  #显示该年的日历

【Linux】基本指令(中)_第39张图片

cal -3  #显示系统前一个月,当前月,下一个月的月历

【Linux】基本指令(中)_第40张图片
有关千年虫问题的一个优质视频:点击即可跳转。

总结

本篇博客主要讲的还是 Linux 的基本指令,以上的指令不需要记,多敲敲就能够记住了。以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!谢谢大家!❣️

你可能感兴趣的:(学会Linux,linux,服务器,运维,基本指令)