• 【Linux】基本指令(中)


    👉基本指令👈

    rmdir 指令 && rm 指令

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

    语法: rmdir [-p] [dirName]

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

    功能:删除空目录

    常用选项

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

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

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

    适用对象:所有使用者

    功能:删除文件或目录

    常用选项

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

    为了演示接下来的指令,我先通过mkdirtouch创建几个新文件。

    在这里插入图片描述
    rmdir 空目录

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

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

    在这里插入图片描述
    rm 文件 / 目录名

    rm 文件名  #删除该文件
    
    • 1

    在这里插入图片描述
    注:rm 指令默认是删除普通文件的,如果想要删除目录,需要加上 -r 选项。

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

    在这里插入图片描述
    有时候,我们删除一些文件,系统总会问我们是否想要删除。其实,Linux 系统也会这样。接下来,我给大家举个例子,这个例子涉及了权限的问题,大家可能还做不了,不过我们目前看一下知道就行了。

    在这里插入图片描述

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

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

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

    在这里插入图片描述

    rm -rf 目录名  #递归强制删除指定的目录及其内部文件
    rm * -rf	#强制删除当前目录下的所有文件
    
    • 1
    • 2

    在这里插入图片描述

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

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

    在这里插入图片描述

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

    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手册
    
    • 1

    在这里插入图片描述
    我们只需要了解前三个章节,其他章节不要求掌握。

    man top  #查看top命令
    
    • 1

    在这里插入图片描述

    man printf  #查看printf命令
    
    • 1

    在这里插入图片描述
    注:printf 也是一条指令,所以我们可以这样用它。如下图:

    在这里插入图片描述

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

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

    在这里插入图片描述
    如果指定在第几个章节找,那么系统就只会在这个章节找。如果没有指定在第几个章节找,那么系统会从第一个章节找,如果没有找到会给出提示系统没有你想要查找的东西。

    有些小伙伴可能没有安装 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指令输出到文件流中,需要加上>输出重定向。

    在这里插入图片描述

    将文件拷贝到目录中去

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

    在这里插入图片描述
    将目录拷贝到目录中去

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

    在这里插入图片描述
    注意:cp 指令可以加上 -r 、-f 和 -i 选项。

    mv 指令

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

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

    功能:

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

    常用选项

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

    剪切文件到目录中去

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

    在这里插入图片描述
    剪切目录到目录中去

    mv 源目录 目的目录 #将某个目录剪切到指定的目录中去
    
    • 1

    在这里插入图片描述
    对文件进行重命名

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

    在这里插入图片描述
    对目录进行重命名

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

    在这里插入图片描述

    注意: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
    
    • 1

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

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

    cat 文件名  #查看文件内容
    
    • 1

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述
    注意:cat 和 tac 指令并不适合查看大文本,只适合小文本或者代码片段。如果想要查看大文件,我们就需要学习 more 和 less 指令。

    more 指令

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

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

    常用选项

    • q 退出 more
    more 文件名  #查看文件内容
    
    • 1

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

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

    在这里插入图片描述
    输入 more 指令后,也可以查找指定的内容。
    在这里插入图片描述

    在这里插入图片描述

    less 指令

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

    语法: less [参数] 文件

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

    选项:

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

    查看文件内容

    在这里插入图片描述
    less 指令可以通过上下键来实现上下翻阅,也支持显示行号和搜索功能,大家可以自己尝试一下。因为 less 指令比较好用,所以就推荐大家使用 less 指令来查看大文本。通常来说,大文本就是是大型代码和日志。

    head 指令

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

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

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

    选项

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

    查看文件头部的内容

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

    在这里插入图片描述

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

    在这里插入图片描述

    tail 指令

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

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

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

    选项

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

    查看文件尾部的内容

    在这里插入图片描述
    在这里插入图片描述
    我们可以通过head指令和tail指令来查看文件头部和尾部的内容,那如果我想查看中间的十行内容呢?比如第 1000 行到第 1009 行的内容。

    借助临时文件

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

    在这里插入图片描述
    借助管道

    head -1010 test.txt | tail -10
    
    • 1

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

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

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

    在这里插入图片描述
    管道除了能实现系统自带的指令,也能实现我们自己实现的功能。比如我们写一个可以将小写字母转换成大写字母的 C语言代码。

    在这里插入图片描述
    我们再将可执行程序change拷贝到上一级目录中,然后逆置后的前三行内容全部改成大写。

    在这里插入图片描述
    这就是我想要向大家介绍管道的作用。那么我还想跟大家说明一件事,其实键盘和显示器也是一种文件流。因为 Linux 系统有着一切皆文件的设计哲学。
    在这里插入图片描述

    时间相关的指令

    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  #显示时间
    
    • 1

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    除了%,其余符号可以任意填写,但不能是空格符。

    2.时间戳

    date +%s  #显示从1970年1月1日0时0分0秒到当前时间的秒数
    
    • 1

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

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

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

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

    cal 指令

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

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

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

    常用选项

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

    在这里插入图片描述

    查看日历

    cal 数字  #显示该年的日历
    
    • 1

    在这里插入图片描述

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

    在这里插入图片描述

    cal -j	#显示当前月的日期是当年的第几天
    
    • 1

    在这里插入图片描述

    有关千年虫问题的一个优质视频:点击即可跳转

  • 相关阅读:
    基于51单片机的教室智能照明控制系统
    引擎入门 | Unity UI简介–第1部分(7)
    73、SpringBoot 直接整合 JDBC
    通俗易懂-OpenCV角点检测算法(Harris、Shi-Tomas算法实现)
    算法入门篇-STL之Vector,Stack,Queue,list
    初识EFCore
    WebRTC实战-第一章-理论基础
    CompletableFuture详解-初遇者-很细
    【C语言】如何正确的理解数组 (一维)
    第十届蓝桥杯省赛C++C/研究生组,第十届蓝桥杯省赛JAVAC/研究生组——扫地机器人题解(二分)
  • 原文地址:https://blog.csdn.net/m0_63639164/article/details/127588110