【Linux学习】常见基本指令

🐱作者:一只大喵咪1201
🐱专栏:《Linux学习》
🔥格言:你只管努力,剩下的交给时间!
图

今天本喵开始分享一些Linux的知识,至于环境搭建什么的本喵就不讲解了,直接进入正文。

Linux和我们用的Windos一样,它也是一款操作系统,只是它没有图形化界面,当然也有一些企业发行了商业版是有和Windows一样的图形化界面的。它的使用也非常的广泛,不仅因为它是开源的,而且它的稳定性,安全性都非常的好。

操作系统是什么呢?我们来看这样一张图:

图

  • 应用软件:就是我们平常在电脑上使用到的各种软件,像Word,Matlab,视频播放软件,甚至是游戏。
  • 操作系统:它处于应用软件的下面,给应用软件提供各种的接口,应用软件通过这些接口来向操作系统发送一些指令。
  • 设备驱动:当操作系统收到应用软件的各种要求时,操作系统就会调用各种驱动程序来让硬件工作。
  • 硬件:就是我们平时可以看得见莫得着的设备,比如键盘,显示器等,还有电脑里面的各种芯片,当相应的驱动程序执行时,对应的硬件就会按要求来工作。

这样看好像似乎有点不太容易理解,下面举一个例子:

应用软件相当于客户,操作系统就相当于一个公司的老板,当然这个公司是一个扁平化管理的公司,设备驱动就相当于部门主管,硬件就相当于是硬件。

当客户有需求的时候会向老板提,而老板会根据用户的需求给各个部门的主管布置任务,然后各个部门的主管会让自己部门的员工来完成相应的任务,如此就可以满足用户的需求。

所以说,操作系统就是通过一些手段来管理硬件,进而达到为应用软件提供良好的,稳定的运行环境。

在大概了解了什么是操作系统以后,接下来本喵介绍一些Linux的基本指令,这些基本指令就和你在刚开始用Windows系统的电脑时是一样的,你需要学习用鼠标点击哪里对应着什么样的操作。

只是Windows是图形化界面的操作,而Linux是命令行的形式来操作,所以会对比着Windows来讲解。

🎙查看文件路径指令

图
这是Windows系统下的一个界面:

  • 红色框中是当前所在文件的路径
  • 蓝色框中是当前所在文件夹中的文件内容

Linux中,我们将文件夹称为目录。具体的文件,比如txt为后缀的称为普通文件。

🎤ls指令

  • 语法: ls [选项] [目录或文件]
  • 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
    图
    上图中的内容是在ls命令后的选选项中可以填写的,这里本喵仅介绍几个常用的。

来看Linux中的操作:

图
红色框中的是指令ls,绿色框中的是执行完ls命令以后的结果,可以看到,在当前文件夹中有3个txt类型的文件。

图
红色框中我们增加了-l的选型,指令就成了 ls -l,绿色框中是执行完后的结果,可以看到,这次的显式结果和只有ls的不一样,它是每一行一个文件名,并且每个文件名前面还有其他信息,这些信息是该文件的创建时间。

图
红色框中我们增加了-a选项,成了ls -a,绿色框中的执行结果中,除了文件名以后还有几个点。

  • 加了-a选项后,显式的就是当前目录下的所有文件,包括隐藏文件,绿色框中的点就是隐藏文件
  • 一个点表示是当前文件
  • 俩个点表示上一级文件
  • 点的使用在后面会用到

图
红色框中加了-al的选项,这其实是-a和-l选项的组合,绿色框中是结果。

  • 指令后的选项是可以任意组合的,比如-a和-l可以组合成-al,表示按行显式所有的文件,并且加上文件的其他信息。

图
红色框中使用了ll指令,该指令等价于ls -l,相当于ls指令后加-l选项,绿色框中是执行后的结果,可以看到和ls -l的效果是一样的,我们以后会使用ll来代替ls -l指令。

图
红色框中,我们在ll指令后加了目录名字2022_10_5,表示要列出该目录下的文件内容,绿色框中是执行后的结果。

🎤pwd指令

  • 语法: pwd
  • 功能:显示用户当前所在的目录
  • 常用选项: 无

该指令的使用非常简单,在开始的Winodws界面的红色框中显示的是当前文件路径,该指令是在Linux下显示当前所处目录的路径。

图
红色框中是指令pwd,绿色框中是执行后的结果,显示当前目录所处的路径。

以上内容对标着开头的Windows的操作。

🎙路径转换指令

图
在Windows中,我们双击一个文件夹就会进入这个文件夹,进而可以看到文件夹中的文件。

在Linux下这样的操作也有对应的指令。

🎤cd指令

  • 语法:cd 目录名
  • 功能:改变工作目录。将当前工作目录改变到指定的目录下。

这里需要先介绍一个知识点:

图
在我们使用pwd指令查看当前目录的时候,结果中出现了一个路径。

  • 第一个/表示的是根目录
  • 之后的/表示分级目录,每个/后是一个目录名字

图
这是Linux下的文件系统,所有的文件都在是根目录/下面创建的,这些目录就像一颗树一样。

  • 叶子节点处肯定是普通文件,比如是txt结尾的文件
  • 路径节点,也就是我们说的父节点,肯定是目录,也就是一个文件夹。

图
我们当前所处目录的名字是2022_10_5,它的上一级目录是learning,我们现在要进入learning目录,有俩种方式:

  1. 绝对路径
    图
    红色框中,指令cd后根的是我们要进入目录的绝对路径,绿色框中是指令执行完后,再查看当前所处目录的结果。

  2. 相对路径
    图
    红色框中,在cd指令后面加了俩个点,上面我们提到过,俩个点表示的是上级目录,下面的绿色框中是执行结果,可以看到,在执行完该命令以后,成功进入到了上级目录learning中。

相对路径相对的是当前所处目录,必须知道当前的目录,而绝对路径就不需要知道当前路径,它可以按照路径访问到指定的地方。

图
红色框中,在cd指令后面加了~ 号,表示进入家目录亦或者工作目录,绿色框中是执行后的结果。因为我们当前登陆的账号是root账号,所以我们创建的所有文件都是在root目录下的,而root目录也叫做家目录,通过cd加~我们可以直接进入到家目录。

图
使用cd加-指令,可以实现在最近访问的俩个目录之间反复横跳。

🎙文件创建指令

图
在Windows下,

  • 我们可以创建新的文件夹,
  • 也可以创建新的普通文件

下面我们来看看Linux下对应的操作。

🎤touch指令

  • 语法:touch [选项]… 文件…
  • 功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
  • 常用选项:
    图

touch文件是专门用来创建普通文件的,任何后缀形式的文件都可以。当然在指令后面可以加选项,这些选项如上图中的选项。

图
首先,当前目录下的普通文件如上图中第一个绿色框。在第二个红色框中我们使用touch创建了3个普通文件,再第三个绿色框中可以看到创建文件后,该目录下的文件增加了。

本喵在这里介绍一个工具tree,我们知道,Linux下的文件像一颗树,所以可以以树的形式显示出来。

图
在红色框中,使用tree加一个点,表示以树状的形式显示当前目录下的文件。但是在绿色框中可以看到,它说没有找到这个指令,原因是我本喵并没有安装这个工具,所以需要先安装一下。

图
输入红色框中的指令后,可以看到,它就开始安装tree这个工具了。

图

等看到绿色框中的内容后就说明安装完成了,我们就可以使用tree这个工具了。

图

这次输入红色框中的tree加一个点以后,就会以树状的形式显示出当前目录下的文件。

🎤mkdir指令

  • 语法:mkdir [选项] dirname…
  • 功能:在当前目录下创建一个名为 “dirname”的目录
  • 常用选项:
    -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

需要注意的是,该指令是专门用来创建目录的,也就是专门用来创建文件夹的,不能用来创建普通文件。

图
可以看到,最开始当前目录下只有一个2022_10_5的目录,在使用mkdir创建了几个目录以后,当前目录下有多个目录,并且用蓝色的高亮表示出来,这里蓝色高亮表示这是一个目录。

图
第一个红色框中,使用mkdir加-p选项,可以创建一个路径,在这个路径下创建一个文件夹,可以看到,在learning目录下,多了一个2022_10_10的目录,进入这个目录以后又有一个Stack目录。

🎙文件删除指令

这个现象本喵就不演示Windows的界面了,相信大家都知道在Windows下可以通过鼠标右键来删除一个文件夹或者是一个文件。

下面来看Linux下对应的操作。

🎤rmdir指令

  • rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
  • 语法:rmdir [-p][dirName]
  • 适用对象:具有当前目录操作权限的所有使用者
  • 功能:删除空目录
  • 常用选项:
    -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

这里需要注意的是,rmdir只能用来删除目录,并且只能是空目录。

图
红色框中使用rmdir指令来删除目录2022_10_10,在绿色框中可以看到,删除失败,原因是该目录不是空目录,这也证明了rmdir只能用来删除空目录。

难像这样里面还有目录的目录只能一级一级的去删除吗?不是的,可以加-r选项来删除。

我们在学习二叉树的时候,有前序遍历,中选遍历,以及后序遍历,我们知道,Linux下的文件系统是一颗树型结构,所以我们也可以采用递归的形式来删除文件。

图
当前目录下的文件如上图所示。

图
使用递归方式删除2022_10_10下的Stack目录后,2022_10_10目录也成了空,所以就也被删除了。

图
可以看到,现在目录下就没有了2022_10_10目录了,包括它里面的目录。

🎤rm指令

  • rm命令可以同时删除文件或目录
  • 语法:rm [-f-i-r-v][dirName/dir]
  • 适用对象:所有使用者
  • 功能:删除文件或目录
  • 常用选项:
    -f 即使文件属性为只读(即写保护),亦直接删除
    -i 删除前逐一询问确认
    -r 删除目录及其下所有文件

真正使用多的是rm指令,因为它不仅可以删除普通文件,还可以删除目录,并且不用管目录是否为空,它一律可以删除。

图
在2022_10_5目录中有很多文件,包括一个目录,图中蓝色框。

图
使用rm指令删除test1.txt,在执行后,系统会询问你确认删除吗?输入y后确认删除。

图
此时可以看到,test1.txt文件就被删除了。

那么如何用rm指令来删除一个目录以及里面的内容呢?

图
红色框中,在rm指令后加一个-r,就表示删除该目录以及该目录下的所有内容。在输入该指令后,会出现很多询问,该目录下的每一个文件在删除之前都会询问一下,当所有的都输入y后也就都被删除了,可以看到,此时就没有2022_10_5,这个目录了。

但是这样每次删除一个都会询问这么多次,还得回答,是不是太烦了,有没有办法让它不询问我,直接删除,答案是有的,需要再加一个选项-f,表示强制执行,不用询问。

图
在目录2022_10_6下新创建几个文件,如上图所示。

图
红色框中,使用rm指令加-r和-r合并后,可以不用询问直接删除2022_10_6整个目录,包括里面的文件。

注意:
Linux系统下,删除就是删除了,就没有了,不像Windows下还有一个回收站,在Linux下是没有的。

我们知道,Linux系统下,所有文件都是在根目录下创建的,使用rm -rf /指令可以将系统中的所有文件都删除,而且不可逆转,系统也会挂掉,所以该指令一定要慎重使用,但愿你永远都用不到,如果用到了,也就是你删库跑路了。

🎙手册查询指令

图
这是本喵Windows中的MSDN应用软件,使用该软件可以查询C语言的各种库函数,也就是一个手册。

在Linux下也有手册。

🎤man指令

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

  • 语法: man [选项] 命令
  • 常用选项 :
    -k 根据关键字搜索联机帮助n
    um 只在第num章节找
    -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,搜到就停止,用a选项,他会继续往后面搜索,直到所有章节都搜索完毕。

图
首先使用上面的指令在Linux下安装man。

图
红色框中,使用man指令,后面根命令行 pwd,意思就是从手册中查询pwd。

图

执行后就会出来这样一个界面,这就是pwd对应手册中的内容,红色框中在说明pwd的作用,绿色框中是pwd指令后面可以跟的选项。

不仅可以查Liux的命令行,还可以查询C语言的库函数。

图
可以看到,查询到的都是和printf有关的,包括头文件等等信息。C++不可以查,因为Linux底层是用C语言实现的,所以只能使用man来查询C语言的库函数。

图

使用man指令来查man指令:
图
将结果通过上下键可找到这样一部分内容,意思是,man手册一共有9部分,也就是有9册,其中我们经常用到的也就是前三册。

  • 第一册中的是Linux的系统指令,像pwd,ll,rm等等
  • 第二册中的是Liunx的各种接口
  • 第三册中的就是C语言的库函数了。

在查询C语言中的Printf的时候,需要加选项3

图
如果不加选项3查到的就是系统指令中的printf
图
可以看到,此时查到的就是第一册中的printf,和我们要的结果不符。因为它是从第一册按照顺序往下查询的,当查到后便停止了,不会继续往后查,所以结果就是第一册中的结果。

当然也可以加选项-a,来查询所有册:

图

🎙复制剪切文件指令

这个本喵也不在Windows下演示了,直接看Linux下是如何实现文件的复制和剪切的。

🎤cp指令

  • 语法:cp [选项] 源文件或目录 目标文件或目录
  • 功能: 复制文件或目录
  • 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
  • 常用选项:
    -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
    -i 或 --interactive 覆盖文件之前先询问用户
    -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
    -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

图
此时只有2022_10_7目录下有三个文件,Add.c,Stack目录,Sub.cpp文件。其他俩个目录2022_10_8和2022_10_9里面是没有任何东西的。

图
红色框中使用cp指令,将Add.c源文件复制到上级目录下的2022_10_8目录。绿色框中可以看到,此时在2022_10_8目录中也有了Add.c文件。

图
红色框中,指令cp加选项-R后,将目录2022_10_7及其里面的内容全部复制到了目录2022_10_9下。

🎤mv指令

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

  • 语法: mv [选项] 源文件或目录 目标文件或目录
  • 功能:
  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
  • 常用选项:
    -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

剪切功能:

图
原本目录2022_10_8下是有Add.c文件的,在红色框中使用mv指令后,将Add.c移动到了目录2022_10_9下,相当于Windows下的剪切。

同样的,可以将整个文件夹移动:

图
在红色框中执行mv 指令后,将2022_10_7的整个目录包括里面的文件全部移到了2022_10_8目录下面。可以看到,移动整个目录,mv指令不需要像cp指令那样加-R选项。

图
可以在原本没有目录的地方创建一共目录,并且将内容移动进去。

重命名功能:
图
在红色框中,使用mv指令给Sub.cpp文件重命名为Div.cpp。

那么mv指令到底是移动文件呢还是重命名呢?

看mv指令后的第二个文件名,如果是一个存在的文件名,那么就是移动,如果是一个不存在的文件名,那么就是重命名。

🎙文件内容查看指令

图
在Windows下,我们通过双击一个文件是可以看到它的文件内容的。

接下来看Linux下是如何实现这个功能的。

🎤cat指令

  • 语法:cat [选项][文件]
  • 功能: 查看目标文件的内容
  • 常用选项:
    -b 对非空输出行编号
    -n 对输出的所有行编号
    -s 不输出多行空行

图
在第一个红色框中,使用echo指令将字符串hello wold重定向到test.txt文件中,我们可以看到,第一个绿色框中,就有一个test.txt的普通文件。

在第二个红色框中,使用cat指令来查看test.txt文件,可以看到,在第二个绿色框中,就显示出了hello wold字符串。

这里本喵不讲解重定向是什么,在后面学到的时候在讲解,这里仅需要知道,就是将字符串放在了test.txt文件中。

我们再创建一个大文本来查看,一次批量化生成10000行的文本,需要写一个shell脚本:

图
通过写的脚本,生成10000行的文本,放在了test.txt文件中。

图
通过红色框中的指令cat,我们可以查看test.txt文本,可以看到,屏幕上显示了10000行文本。
还可以给文本加上行号:
图
在红色框中,cat指令后加选项-n,执行后在绿色框中显示的文本前面有行号。

可以看到,10000行的文本非常的大,只能通过键盘上的上下键去翻阅,非常的不方便。

所以说,cat指令只适合查看小文本,就像我们平常练习时写的代码这样的小文本。

🎤more指令

more指令是用来查看大文本的。

  • 语法:more [选项][文件]
  • 功能:more命令,功能类似 cat
  • 常用选项:
    -n 对输出的所有行编号
    q 退出more

图
在红色框中,使用more指令来查看test.txt文本,绿色框中开始显示,但是需要按回车键才会向下翻阅,因为屏幕无法一次性都显示完,而且在下面有显示文本所占的比例。

同样的,more在查看大文本的适合也不方便。

🎤less指令

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

所以说,less才是我们查看大文本的指令。

  • 语法: less [参数] 文件
  • 功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
  • 选项:
    -i 忽略搜索时的大小写
    -N 显示每行的行号
    /字符串:向下搜索“字符串”的功能
    ?字符串:向上搜索“字符串”的功能
    n:重复前一个搜索(与 / 或 ? 有关)
    N:反向重复前一个搜索(与 / 或 ? 有关)
    q:quit

图
红色框中使用less指令来查看文本,并且加上-N选项,显示行号。绿色框中是文本的显示,可以通过上下键来翻阅,不像more那样,只能通过回车键向下翻阅。

除此之外,less还支持文本关键字的搜索,在演示之前,需要在文本中加一些特殊的字符串来搜索。

这里我们使用nano,是一个文本编译器,也是一个工具,来给这个文本加一些东西。
TU
使用nano打开test.txt文本,当然,如果你的Linux下没有的话需要安装一下:

图
使用该条指令安装就可以了。

图
用nano将test.txt文本打开以后,写入一行字符串learning。

图
在红色框中,使用less指令查看test.txt文本,在显示出的文本最下方,也就是绿色框中,写/加learning,其中/表示向下查找,learning表示要查找的内容。再按回车。
图
可以看到,此时就查找到了learning字符串,并且显示该字符串后面的部分内容。

🎤head指令

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

  • 语法: head [参数]… [文件]…
  • 功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
  • 选项:
    -n<行数> 显示的行数

图
红色框中,使用head指令查看test.txt文件,绿色框中打印出test.txt文件中的前10行,没有加选项时,默认打印十行。

图
红色框中,使用head指令加选项-20,绿色框中显示出文本中的前20行。

🎤tail指令

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

  • 语法: tail[必要参数][选择参数][文件]
  • 功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
  • 选项:
    -f 循环读取
    -n<行数> 显示行数

图
在红色框中,使用tail指令加-20选项,绿色框中打印出test.txt文本中的后二十行,也就是从尾部选取20行来打印。

文本查看指令中,主要记住,小文本用cat指令来看,大文本用less来看。

🎙时间相关的指令

图
在我们windows上,桌面的右下角会显示时间,同样的,在Linux下也可以显示时间。

🎤date指令

  • date 指定格式显示时间: date +%Y:%m:%d date
  • 用法:date [OPTION]… [+FORMAT]
  1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
    图
    TU
    红色框中使用date指令+各种显示格式,可以看到,+号是必须有的,然后每个%后面接一个显示内容,显示内容直接是任意组合的,但是不能出现空格。
    绿色框中是不同形式组合下时间的显示形式。

其中,显示年月日的是他们英文的首字母,

  • 年——year,必须是大写,写成%Y
  • 月——month,必须是小写,写成%m
  • 日——day,必须是小写,写成%d

显示时间也是他们英文的首字母

  • 小时——hour,必须是大写,写成%H
  • 分——minute,必须是大写,写成%M
  • 秒——second,必须是大写,写成%S
  1. 在设定时间方面
    图
    按照上图中的选项可以更改时间,有兴趣的小伙伴可以去试试,这里本喵就不再演示了。

  2. 时间戳

  • 时间->时间戳:date +%s,时间转换为时间戳
  • 时间戳->时间:date -d@1508749502,时间戳转换为时间
  • Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

图
红色框中,使用指令date +选项%s,可以显示当前时间的时间戳。

图
红色框中,使用指令date加选项-d@时间戳,可以将@后面的时间戳转换成对应的日期。

这里是时间戳为0时转换出来的日期入绿色框中,是格林维治时间,1970年1月1日星期四,时间是八点整。

为什么是八点整呢?因为在格林维治时间的1970年1月1日的0时开始,时间戳从0开始增长,但是我们国家所处的时间区域是东八区,所以有8个小时的时差,所以对应时间戳0的时间就是八点整。

🎤Cal指令

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

  • 命令格式: cal [参数][月份][年份]
  • 功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
  • 常用选项:
    -3 显示系统前一个月,当前月,下一个月的月历
    -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
    -y 显示当前年份的日历

图
红色框中,只使用cal指令时,绿色框中显示当前所在年份和月份的日历。

图
红色框中,使用cal指令加参数-3,显示的是,当前年份中,当前月,前一个月以将后一个月的日历。

图
红色框中,使用cal指令加-j参数,显示的现在处于当前年份的第多少天。

图
在红色框中,使用指令cal加参数-y,就可以显示当前年份。

虽然在Linux上显示时间和日历没有什么价值,但是要记住使用date +%s来显示时间戳和date -d@时间戳进行时间转换还是非常重要的。

在-j后面再加年份的话也可以显示其他年份的日历。

🎙查找指令

图
这是在Windows系统下搜索文件夹的界面,Linux同样也可以搜索文件。

🎤find指令

  • Linux下find命令在目录结构中搜索文件,并执行指定的操作。
  • Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
  • *即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只要你具有相应的权限。
  • 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
  • 语法: find pathname -options
  • 功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
  • 常用选项:
    -name 按照文件名查找文件。

图
在红色框中,使用find指令加文件路径,再加文件名来查找文件,在下面的绿色框中显示查找结果。find指令是全局的查找,会查找所有的文件,当find需要访问磁盘的时候,会导致效率低下。

🎤which指令

  • 语法: whic 指令名
  • 功能: 只用于查找命令行所在目录
    图
    上图中,红色框中使用which指令查找命令行,绿色框中给处命令行所在的目录。

其中,蓝色框中涉及到另一个命令alias,该命令的意思是给命令行重命名,这里就是将ls -l重命名为ll,后面的–color = auto是只给显示的文件自动配色。

图
在红色框中,使用alias将ls -a指令重命名为zhangsan,并且给它自动配色,执行后zhangsan就成了一条指令,输入后就会显示处绿色框中的内容,和ls -a的作用一样,蓝色高亮表示这是目录。

🎤grep指令

  • 语法: grep [选项] 搜寻字符串 文件
  • 功能: 在文件中搜索字符串,将找到的行打印出来
  • 常用选项:
    -i :忽略大小写的不同,所以大小写视为相同
    -n :顺便输出行号
    -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行

图

使用nano在那10000行的文本中增加china字符串。

图
在红色框中,使用grep指令加-i选项,将要搜索的字符串设置成CHINA,在data.txt文件中搜索,可以看到,绿色框中搜索到了小写的china。

这说明,grep指令在搜索内容的时候是区分大小写的,如果不加选项-i,则必须严格大小写才能找到。

图
使用指令grep加选项-n,不仅能够找到字符串,而且还能显示它所在的行号。

🎙压缩包指令

图
在Windows下,为了保存或者传输方便,我们通常将一些文件打包后放在一起,再通过压缩将其大小变小。在Linux下也有相应的操作。

🎤zip指令

  • 语法: zip 压缩文件.zip 目录或文件
  • 功能: 将目录或文件压缩成zip格式
  • 常用选项:
    -r 递归处理,将指定目录下的所有文件和子目录一并处理

图
红色框中,将目录2022_10_7及其内容全部打包成my_pack.zip压缩包。
第一个绿色框中显示的是它的压缩过程,后面括号中的百分数表示的压缩比率,像Stakc目录,Div.cpp,Add.c等文件的压缩率是0,因为他们里面没有内容,二data.txt是那个10000行的文本,压缩率是87%,比如原来是100K,那么压缩后就成了13K大小。

zip指令压缩后的压缩包是zip形式的,它在压缩的时候采用的是zip的算法。

🎤unzip指令

  • 语法: unzip 压缩文件.zip
  • 功能: 将zip格式的压缩包解压
  • 常用选项:
    -d 解压到特定文件夹

图
将原本文件中的2022_10_7目录删除。

图
在红色框中,使用unzip指令将压缩包解压,可以看到,原本被压缩的2022_10_7被解压到了当前目录下。

我们在Windows操作的时候,通常将压缩文件解压到其他目录下,Linux也是可以的:

图
原本2022_10_9是一个空目录。

图
红色框中,使用unzip指令,加选项-d后再加目标目录,可以看到,将压缩包中内容全部解压到了2022_10_9的目录下。

🎤tar指令

  • 语法:tar [-cxtzjvf] 文件与目录 … 参数:
  • 功能:打包压缩和解压tgz格式的压缩包
  • 常用选项:
    图

图
使用指令tar后加选项-czf,将目录2022_10_9及其里面的内容全部打包压缩成一my.tgz压缩包。

图
将目录2022_10_9删除。

图
将压缩包my.tgz解压后,被压缩的2022_10_9中的内容就又回来了。

在Windows下,有时我们不需要解压就可以查看压缩包中的内容,Linux是如果实现的呢?

图
红色框中,tar指令加选项-tf,就可以不解压就看压缩包中的内容。

同样的,也可以解压到指定文件夹:

图
在解压指令后再加上选项-C和目标目录就可以解压到指定目录下。

🎙计算器指令

图
在Windows下有非常好用的计算器,那么Linux下有没有呢?答案是有的,但是很鸡肋。

🎤bc指令

  • 功能:bc命令可以很方便的进行浮点运算

图
在红色框中输入指令bc以后,就可以进行简单的浮点数运算了,但是功能不是很强大,我们在计算的时候都是在使用Windows下的计算器。

🎙系统信息指令

图
在Windows下有这样一个界面,可以看到自己系统信息,在Linux下也可以。

🎤uname指令

  • 语法:uname [选项]
  • 功能: uname用来获取电脑和操作系统的相关信息。
  • 补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
  • 常用选项:
    -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

图
只输入uname时,显示的是当前所使用的系统,这个也没用,用户肯定知道自己使用的是什么系统。

图
红色框中使用uname加-r选项后,在绿色框中会显示当前系统的版本号,以及处理器类型等信息。

图
红色框中,使用uname指令加选项-a们可以看到更多的信息,如上图中的绿色框。

🎙总结

上面这些指令就是我们在Linux下常用的指令,就像在Winodws下使用鼠标进行的一些基本操作,点击,查询,创建文件,删除等等。指令没有必要死记硬背,遇到不确定用法的可以使用man指令来查一下,使用这些指令是一个熟能生巧的过程,用的多了自然也就记住了。

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只大喵咪1201

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值