Linux常见基本指令

本文将详细的介绍Linux中各常见指令的用法,并且在每个指令都有使用样例。一共有以下指令:

[1. man指令](#1. man指令)

2.目录基础指令:[2.1 pwd指令](#2.1 pwd指令)、[2.2 ls指令](#2.2 ls指令)、[2.3 cd指令](#2.3 cd指令)

3.文件创建与删除:[3.1 touch指令](#3.1 touch指令)、[3.2 mkdir指令](#3.2 mkdir指令)、[3.3 rmdir 指令 && rm 指令](#3.3 rmdir 指令 && rm 指令)

4.文件修改指令:[4.1 cp 指令](#4.1 cp 指令)、[4.2 mv 指令](#4.2 mv 指令)

5.文件查看指令:[5.1 cat 指令](#5.1 cat 指令)、[5.2 more 指令](#5.2 more 指令)、[5.3 less 指令](#5.3 less 指令)、[5.4 head 和 tail 指令](#5.4 head 和 tail 指令)

6.时间相关指令:[6.1 date 指令](#6.1 date 指令)、[6.2 cal 指令](#6.2 cal 指令)

7.文件查找指令:[7.1 find 指令](#7.1 find 指令)、[7.2 grep 指令](#7.2 grep 指令)

8.文件解压缩指令:[8.1 zip/unzip 指令](#8.1 zip/unzip 指令)、[8.2 tar 指令](#8.2 tar 指令)

9.一些其他指令:[9.1 bc 指令](#9.1 bc 指令)、[9.2 一些重要的热键[Tab],[ctrl]-c,[ctrl]-d](#9.2 一些重要的热键[Tab],[ctrl]-c,[ctrl]-d)、[9.3 关机指令 shutdow](#9.3 关机指令 shutdow)

注:本文中使用的Linux版本为CentOs7.9。若需要查看对应的指令用法,可直接根据目录进行查找。

1. man指令

所谓授人以鱼不如授人以渔,man 指令相当于matlab中的help函数可以帮助查询指令的用法。Linux的命令有很多的参数,我们不可能记全,但是我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是:

cpp 复制代码
man指令
使用语法:
man [选项] 命令

注:当执行该命令时,会跳转到另一个页面,按 q 才会退出该界面。

我们在使用 man 指令之前,需要先在我们的Linux环境中对 man 指令进行相关的扩展安装,在原有的环境中有关于 man 指令的手册,但是不全,我们可以使用以下指令来进行扩展:

cpp 复制代码
yum -y install man-pages

现在我们就可以开始对指令进行查询,查看指令的用法,如下:

输入指令: man rm,得到:

当我们输入rm指令时就会跳转到另一个界面,该界面会详细讲解该指令的用法,其中,红框表示该指令的全称,蓝框表示该指令的用法,橙框表示该指令与其他参数的使用方法。

那当我们输入:man man指令时呢,就表示查询 man 指令的用法,如下:

我们会发现,man指令一共可以搭配1~9的数字指令,其中每个数字指令代表的意思都不同,但比较常见的是前三种,至于后面的指令,由于不重要,我们就不做介绍。其中用得最多的是 2 。

数字1~3的搭配以及解释:

cpp 复制代码
man 1 printf  //在系统的默认手册中查找可执行程序、指令的用法(普通命令)
man 2 printf  //系统调用,如open、write之类的指令
man 3 printf  //在C库函数查找printf函数的用法

当我们执行了以上三条命令时,得出结果如上,1和3中的printf指令的用法不同,而在2中没有找到该指令的用法。

2.目录基础指令

2.1 pwd指令

功能:显示用户当前所在目录

语法:pwd

如上图,表示现在处于/root/test.dir这个目录当中。

2.2 ls指令

功能:对于目录,该命令列出该目录下所有子目录与文件。对于文件,将列出文件名以及其他信息。

语法:ls [选项][目录或文件]

常用选项:

cpp 复制代码
-a 列出目录下的所有文件,包括以.开头的隐含文件;
-d 将目录像文件一样显示,而不是显示其下的文件,如:ls -d 指定目录
-l 列出文件的详细信息
-r 对目录反向排序
-t 以时间排序
-1 一行只输出一个文件

当我输入 ls -l 指令时,如下:

对于得出的文件,红框表示的是,该目录下的文件或者目录名,名前面的表示该文件或者目录的详细信息。

当输入ls -a 命令和ls -a -l 命令时:

由上对比可知,指令的参数之间可以叠加使用,ls -a -l 表示列出该目录下所有文件的详细信息(ls -a -l 同样可以写成ls -al 或者ls -la)。

当我们对比上图ls -l 列举出来的文件,发现ls -a 多列举出两个文件,其文件名为" . "和" .. ",其中" . "表示:当前目录," .. " 当前目录的上一级目录。

2.3 cd指令

功能:改变工作目录。将当前工作目录改变到指定目录下。

语法:cd 目录名。

在Linux系统中,磁盘上的文件和目录组成了一颗目录树,每个节点都是目录或者文件,如下:

我们还可以通过命令操作来查看文件和目录是否为树状结构,如下:

在使用 tree 指令前需要先安装,如下:

cpp 复制代码
yum install -y tree

其中,对于cd的操作,有以下几种:

cpp 复制代码
cd .. :返回上级目录
cd /home/litao/linux/ :绝对路径
cd ../day02/ :相对路径
cd ~ :进入用户家目录
cd - :进入最近访问目录

如上图,通过 cd 指令对当前目录的切换的使用。

3.文件创建与删除

3.1 touch指令

功能:touch的命令参数可以更改文档或者目录的日期时间,包括存取时间和更改时间,或者创建一个新的不存在的文件。

语法:touch [选项]... 文件...

常用选项:

cpp 复制代码
-t :使用指定的日期时间,而非现在的时间
-r :把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
-m :或--time=mtime或--time=modify 只改变时间
-f :此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题
-d :指定的日期时间。而非现在的时间
-c :或--no-create 不建立任何文档
-a :或--time=atime或--time=access或--time=use  之更改存取时间

touch创建文件,如下:

对于该文件的创建,我们还可以使用另一个指令查看文件更为详细的信息,如下:

cpp 复制代码
stat 文件名 

如上,stat 指令只能查看文件的详细信息,但是不能查看目录的详细信息。

3.2 mkdir指令

功能:在当前目录下创建一个名为"dirname"的目录。

语法:mkdir [选项] dirname...

常用选项:

cpp 复制代码
-p,--parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项将自动建立好那些尚不存在的目录,即一次性可以建立多个目录;

mkdir -p test/test1 :递归建立多个目录

如下:

使用递归创建出了多级目录。

3.3 rmdir 指令 && rm 指令

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

功能:删除空目录。

语法:rmdir [-p][dirName]

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

常用选项:

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

当我们想要删除目录时,rmdir 指令只能删除空目录,并且需要到对应路径下才能将其删除。

rm 指令可以同时删除文件或者目录。

功能:删除文件或者目录。

适用对象:所有使用者,不在局限于空目录或者空文件。

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

常用选项:

cpp 复制代码
-f 及时文件属性为只读(即写保护),同样直接将其删除
-i 删除前逐一询问确认
-r 删除目录下所有文件

如上图,当我们适用 rm 删除目录时,不能直接删除,需要加上 -r 参数,并且删除时,系统还会提醒是否需要删除该目录,输入 y 则表示同一,输入 n 则表示不同意删除。 若我们直接使用 -f 参数,那么系统将不会提醒是否需要删除该目录。另外,参数之间可以直接配合使用。

4.文件修改指令

4.1 cp 指令

功能:复制文件或者目录

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

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

常用选项:

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

如上图所示,我们可以使用类似于 rm 指令的参数形式进行 copy ,并且将其拷贝到另一个路径时,我们会发现,如果另一个路径没有该目录,那么会将源文件进行改名,并在该路径下创建。

若我们没有使用 -r 或 -f 参数,很可能遇到和上面直接使用 rm 指令相类似的问题。

4.2 mv 指令

mv 指令是 move的缩写,可以用来移动文件或将文件改名,是Linux系统下常用的指令之一,经常用来备份文件或目录。

功能:1. mv 指令中的第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录中;

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

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

常用选项:

cpp 复制代码
-f :force强制,如果目标文件已经存在,不会询问而直接覆盖。
-i :若目标文件已经存在,就会询问是否将其覆盖。

如上图所示,当我们直接使用 mv 指令时,若遇见同名文件时,那么会询问是否将其覆盖,若加上 -f 参数,则会直接将其覆盖,不会询问。当然,如果没有遇见同名文件时,也不会出现这种情况。 当然这只是对文件进行剪切,我们还可以对文件进行重命名,但其实底层逻辑是一样的,将其剪切到当前路径下,并且重命名,用在同一目录下就是重命名。

5.文件查看指令

5.1 cat 指令

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

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

常用选项:

cpp 复制代码
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行

与cat相类似的一个指令:tac 文件名。可以将文件内容从最后开始打印。

另外,当我们需要在文件中写入内容时,我们可以使用以下指令对文件进行写入,如下:

cpp 复制代码
nano 文件名
//若Linux中未安装nano,输入:yum -y install nano

当输入 nano 文件名 时,会进入这个界面,接下来就可以开始对文件进行编辑了。如果要退出来,ctrl+x退出,然后输入y,最后回车就可以退出来了。

如上所示,cat的各种用法,已经使用 tac 指令将文件内容倒着打印。

5.2 more 指令

功能:more 指令的功能类似于cat,但是如果对于大文件来说的话,cat会直接加载整个文件信息,而more只能显示部分信息,只能向前浏览,不能向后浏览,若想要查看到对应的位置,需要输入指令。

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

常见选项:

cpp 复制代码
-n 对输出的所有行编号
q  退出more

如上图所示,当输入对应的编号时,会自动进行查找。找到对应的位置,不过唯一的缺点就是不可以向后浏览,只能向前浏览。

5.3 less 指令

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

语法:less [参数][文件]

cpp 复制代码
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串 :向下搜索"字符串"的功能
n :重复前一个搜索(与 / 或 ?有关)
N :反向重复前一个搜索(与 / 或 ?有关)
q :quit退出

less的优点:1.less 工具也是对文件或其他输出进行分页显示的工具,应该说是Linux正统查看文件内容的工具

2.less 的用法比起 more 更加有弹性。在 more 的时候,我们并没有办法向前面翻,只能往后面查看。

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

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

当我输入 less big.txt时,输出的结果如上,我们可以按pageup和pagedown,来查看上下的信息。也可以直接 /关键字 来查找对应的位置。

5.4 head 和 tail 指令

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

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

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

语法:head [参数]... [文件]... tail [参数]... [文件]...

常用选项:

cpp 复制代码
-n 显示的行数

如上所示,可以显示文件内容的头和尾。

如何用头和尾来获得文件的中间部分内容呢,比如在这一万行的数据中,找到数据5090 ~ 5100行的数据,如下:

在命令行中使用了 " | " 来对数据链接,先将前5100各数据筛选出来,然后在筛选后11个,这样就得出了中间的数据。

6.时间相关指令

6.1 date 指令

在显示方面:

语法:date +%Y:%m:%d

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

cpp 复制代码
%H :小时
%M :分钟
%S :秒
%X :相当于%H:%M:%S
%d :日
%m :月份
%Y :完整年份
%F :相当于%Y-%m-%d

时间戳:

时间转化为时间戳:date +%s

时间戳转化为时间:date -d@1508749502(时间戳)

Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

如上,对于时间的输出格式,可以由我们自己来定,对于时间戳的显示也如上。

6.2 cal 指令

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

语法:cal [参数][月份][年份]

常用选项:

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

7.文件查找指令

7.1 find 指令

功能:用于在文件树中查找文件,并做出相应的处理。

语法:find pathname -options

常用选项:

cpp 复制代码
-name 按照文件名查找文件
  1. Linux下find命令在目录结构中搜索文件,并执行指定的操作。

  2. Linux下find命令提供了相当多的查找条件,功能很强大。

3.即使系统中含有网络文件系统(NFS),find 命令在该文件系统中同样有效,只你具有相应的权限。

4.在运行一个非常消耗资源的 find 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

上图所表示的以上按照名称在 " / "目录中查找code.c文件。find 的查找其实是在目录的树形结构中查找文件,也就是说其实相当于对目录的遍历。

7.2 grep 指令

功能:在文件中搜索字符串,将找到的行打印出来。

语法:grep [选项] 搜索字符串 文件

常用选项:

cpp 复制代码
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,即显示出没有"搜索字符串"内容的行

如上图,我们得出的在code.c文件中含关键字 999 的行。

8.文件解压缩指令

8.1 zip/unzip 指令

功能:将目录或文件压缩成zip格式/将zip格式的文件解压。

语法:zip 压缩文件.zip 目录或文件。

unzip 压缩文件.zip [-d /path/to/directory]

常用选项:

cpp 复制代码
-r 递归处理,将指定目录下的所有文件和子目录一并处理

如上所示,将根目录下的 a 目录压缩在了 / 目录中,并更名尾 new.zip。

上图所示即为将压缩文件解压到目标文件。

8.2 tar 指令

功能:与 zip 、unzip 指令一样,具有压缩和解压缩文件的功能;

语法:tar [-cxtzjvf] 文件与目录 ...

常用选项:

cpp 复制代码
-c :建立一个压缩文件的参数指令(Create)
-x :解开一个压缩文件的参数指令
-t :查看tarfile里面的文件
-z :是否同时具有gzip的属性?即是否需要使用gzip压缩
-j :是否同时具有bzip2的属性?即是否需要用bzip2压缩
-v :压缩的过程中显示文件,常用,但不建议用在背景执行过程
-f :使用档名,注:在f之后要立即使用档名,不要在有其他参数,即f是最后的参数
-C :解压到指定目录

对于以上的常用参数,我们通常只需要记住两个就可以了:

cpp 复制代码
tar -cvzf name.tgz file1 file2 ...  //压缩文件
tar -xvzf name.tgz [-C path]        //解压文件

左图为压缩,右图为解压。

9.一些其他指令

9.1 bc 指令

bc 指令可以用于进行浮点运算,相当于一个计算器。

如上图,可直接输入 bc 指令进行计算器模式,ctrl+c退出计算器模式,也可以使用管道连接来计算。

9.2 一些重要的热键[Tab],[ctrl]-c,[ctrl]-d

[Tab]按键具有指令补全以及档案补全的功能;

[ctrl]-c按键可以让当前程序立即停掉,特别是一些陷入死循环的程序;

[ctrl]-d按键通常代表:键盘输入结束,另外,可以用来取代exit。

如上图的橙框,当输入的一些指令不全时,按两下 Tab 键,下面就会显示可能的指令,若只有一种指令则直接补全。ctrl+c 终止当前程序。 ctrl+d 会导致直接退出当前操作系统。

9.3 关机指令 shutdown

语法:shutdown [选项] ** 常见选项:**

cpp 复制代码
-h :将系统的服务关掉,立即关机
-r :在将系统的服务关掉之后重启
-t sec :-t 后面加秒数,即过几秒后关机

因为我是云服务器的缘故,我便不在展示关机指令的操作。(理论上:云服务器严禁关机,但其实也可以关机,只不过之后操作起来稍微麻烦了一点)

相关推荐
舞动CPU4 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
秦jh_6 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
keep__go7 小时前
Linux 批量配置互信
linux·运维·服务器·数据库·shell
矛取矛求7 小时前
Linux中给普通账户一次性提权
linux·运维·服务器
Fanstay9857 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker
大熊程序猿7 小时前
ubuntu 安装kafka-eagle
linux·ubuntu·kafka
daizikui9 小时前
Linux文件目录命令
linux·运维·服务器
NikitaC9 小时前
ldconfig 和 LD_LIBRARY_PATH 区别
linux·c++
清源妙木真菌9 小时前
Linux:进程概念
linux