【Linux】基本指令(中)

简介: 【Linux】基本指令(中)

👉基本指令👈


rmdir 指令 && rm 指令


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


语法: rmdir [-p] [dirName]

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



功能:删除空目录



常用选项:


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


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



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



适用对象:所有使用者



功能:删除文件或目录



常用选项:


-f 即使文件属性为只读(即写保护),亦直接删除

-i 删除前逐一询问确认

-r 删除目录及其下所有文件


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

025cce76db5f47c7b910950ebe3a6af4.png


rmdir 空目录


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


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

fef8603ebd8049f2943b32dffd711d7e.png


rm 文件 / 目录名


rm 文件名  #删除该文件


2970850f568640b1b02c2c1ea74d3bf0.png


注:rm 指令默认是删除普通文件的,如果想要删除目录,需要加上 -r 选项。


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

d75a3c4715704deb93ae85968623d38f.png


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


a9a728e4c03a4a01846eb857804e5f97.png

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


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


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

17005f39240648e080ccf3f2562c3a71.png

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


7dd9c15331a54afc8a462d966c068027.png

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


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


10ecd3d805ac46d6984d8043f9c0e05f.png


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


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


50eb9794ecd24de1a3ed67171fc26b45.png


我们只需要了解前三个章节,其他章节不要求掌握。


man top  #查看top命令

5b6157a2e1de436cb4399341836c279d.png


9722149bcb01445f9c85fb469ed9a26b.png


注:printf 也是一条指令,所以我们可以这样用它。如下图:


fc85e868233843b48fe4f91bf603623b.png


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


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


54d3762e32584259a9779f5883dbb132.png


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


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

c3ec189b01cf4750923679efd7d62e18.png


将文件拷贝到目录中去


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


a2c0792eb7b14a00ab2ec1a5fd014708.png


将目录拷贝到目录中去


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


af00b368d88c4124a12a4a559aff5f0b.png

注意:cp 指令可以加上 -r 、-f 和 -i 选项。


mv 指令


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

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



功能:


视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录中。

当第二个参数类型是文件时, mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。

当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv 命令将各参数指定的源文件均移至目标目录中。


常用选项:


-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖


剪切文件到目录中去


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


cc7402698abc4a21b25116f2e3dcadb6.png


剪切目录到目录中去


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


b107314be1d94e3092215e3cb959c7e5.png


对文件进行重命名


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


6c41f31e1e604c2c902fa54e31f3dfa8.png


对目录进行重命名


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


692ca1e7869a4d338f0d5fa4145f4544.png

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


cat 指令


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


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

常用选项:

-b 对非空输出行编号

-n 对输出的所有行编号

-s 不输出多行空行


使用脚本生成大文件


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


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

d8912971888c457faf6e2e1b3a90f19e.png


查看文件内容


cat 文件名  #查看文件内容


aef7a53ca10340b0b06b2c94a645973b.png


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

b46b85056b7941278fd24ae81d1b8099.png

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

d381b1160ab34b0ebf5c6ad7ec7e15d2.png


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


more 指令


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


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


常用选项

  • -n 对输出的所有行编号
  • q 退出more



more 文件名  #查看文件内容


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


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

34ee947820de4237ab8079a404982b60.png


输入 more 指令后,也可以查找指定的内容。

56b4616bae97498d8bc8ef2be14606ef.png

7d821efdab784d209ee136bdecd9f78a.png


less 指令

  • less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极 其强大。
  • ss 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看 。

但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!

除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。


语法: less [参数] 文件



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



选项:


-i 忽略搜索时的大小写

-N 显示每行的行号

/ 字符串:向下搜索“字符串”的功能

? 字符串:向上搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

q: quit


查看文件内容

457da16d8fc84e4da04ad40d98386884.png


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


head 指令


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


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


功能

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


选项

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



查看文件头部的内容


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


7504847d2268495e8e09af1327d89f41.png

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

a3de841b7483459eafba361bf9e2155a.png

tail 指令


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

语法

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


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


选项

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


查看文件尾部的内容

384221c36fbc4e939edf1eb8e987c09e.png

7bd68f7800a04c2c9b14d03ab9e0cb9d.png


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


借助临时文件


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

b05f8dd87f3a4c0e9e1aa56322c6869f.png


借助管道


head -1010 test.txt | tail -10


27f6f83bf569418f97d74fe85098032d.png


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


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


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


96573ed1c4cc415d820c6292a695e7b8.png


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


6e764bbf494e416c80431e10c35dc4da.png


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


19163d210dff45a6853420a98359fb43.png

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


cb5bec78afeb48c09dd7c8154162d0be.png

时间相关的指令


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


09b4413665134e5fb2b5c7272138c36d.png

d83cf71ea46745288dcaaaea17fc7059.png

34e1ee0d0a1a4f74a9a7cff8470a2bab.png

除了%,其余符号可以任意填写,但不能是空格符。


2.时间戳


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


35b46e53495741bf94517ee526fd34c3.png

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


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


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


cf3ce42926694b96865e076e1f3b48a6.png

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


cal 指令


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

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


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


常用选项:


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

-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

-y 显示当前年份的日期

1c966a4653d6401c90368c60040b1e4e.png


查看日历


cal 数字  #显示该年的日历


86925cc899a4437380e458a3afed96b6.png


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

0bef024154a34152a12bae8fd326be95.png


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

18a22706d4bd4465b495e1a172dd6051.png


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


👉总结👈


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




















相关文章
|
2月前
|
Linux 数据安全/隐私保护
Linux文件权限调整:chmod指令解析
在日常使用或系统管理中,对 `chmod`的熟练应用是提高工作效率和维持系统稳定性的关键。掌握如何给予或限制权限是每个Linux使用者都应该具备的技能。
227 17
|
2月前
|
移动开发 Linux Windows
Linux常用基本指令
对Linux中常用命令,包括文件创建与销毁,压缩与打包,查看搜索文件的方式等指令的介绍
198 1
|
3月前
|
存储 人工智能 Unix
Linux常见指令汇总
最常见的就是 ll (为ls -l的省略)
161 0
|
8月前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
613 20
|
10月前
|
Linux
linux-du指令
`du`命令是Linux系统中查看磁盘使用情况的基本工具之一。通过灵活使用 `du`命令的各种选项,可以准确、高效地获取文件和目录的大小信息,有助于系统管理员进行磁盘空间管理。无论是查找大文件、分析目录结构还是排除特定类型的文件,`du`命令都提供了丰富的功能和灵活的配置。理解和掌握 `du`命令的使用,对于维护和优化Linux系统的磁盘空间至关重要。
346 4
|
11月前
|
Linux Windows
【Linux】-基本指令(下)
【Linux】-基本指令(下)
116 1
【Linux】-基本指令(下)
|
11月前
|
Linux
【Linux第一弹】- 基本指令
【Linux第一弹】- 基本指令
107 1
|
10月前
|
安全 Ubuntu Unix
【Linux】基础指令
本文介绍了Linux操作系统的基本概念及特点,强调了其开源性、多用户多任务处理能力、稳定性和安全性。文章重点讲解了多个Linux基础命令,如ls、cd、touch、mkdir、rm、man、cp、mv、cat、less、find、grep、tar等,旨在帮助初学者快速掌握Linux命令行操作,为后续深入学习奠定基础。
242 0
|
11月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
160 3
|
11月前
|
Unix Linux 索引
【Linux】-基本指令(上)
【Linux】-基本指令(上)