Linux常用指令大全【详解】

本文将给大家详细介绍Linux常用的指令、演示以及一些基础知识的讲解

Linux常用指令大全【详解】_第1张图片

目录

ls指令

file指令

pwd命令

whoami指令

cd指令

相对路径和绝对路径

which指令

touch指令

mkdir指令

添加用户信任关系

rmdir指令

rm指令

man指令?

cp指令

mv指令

?

cat指令

echo指令

重定向

more指令

less指令

head 指令

tail指令

管道操作

date指令

cal指令

find指令

grep指令

zip指令/unzip指令

tar指令

bc指令

uname?指令

shutdown指令

stat指令

Linux下的三个时间

touch指令补充

Linux中的热键


没有安装linux环境的可以看看这篇文章linux环境搭建

ls指令

语法:ls [选项] [目录]

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

ls不带选项默认显示当前目录下的文件

Linux常用指令大全【详解】_第2张图片

选项:

-l :以列表的形式列出文件详细信息

Linux常用指令大全【详解】_第3张图片

Linux系统中,不以文件后缀区分文件类型,而是以第一个字符标识文件类型,不管是文件后缀是.c还是.txt或是其他后缀,只有是以-开头的就是普通文件

d:目录文件,简单来说就是文件夹,我们可以在该目录文件下新建文件

-:普通文件,分为文本文件、动静态库、可执行程序等

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

我们今天重点在前面的两类文件

单普通文件就可以分很多种,为了兼容windows同时便于我们大多数linux的用户区分文件的不同,我们还是习惯通过后缀来表示不同文件的类型。但有的文件必须加后缀,例如用c语言写的.c文件,需要特殊处理,以后缀区分类型

-a:显示目录下的所有文件包括隐藏文件,以点开头的表示隐藏文件,其中一个点表示当前路径,两个点表示上一级路径,我们将在下面的cd指令中讲解.和…

Linux常用指令大全【详解】_第4张图片

-d :将目录像文件一样显示,而不显示目录下的文件,这里的点,就表示当前路径

Linux常用指令大全【详解】_第5张图片

-R:列出所有子目录下的文件(以递归的方式) ,目录下的所有文件都会列出来

Linux常用指令大全【详解】_第6张图片

-n :用数字的 UID,GID 代替名称。

Linux常用指令大全【详解】_第7张图片

还有一些其他的选项就不演示了,大家下去可以尝试一下

-1 一行只输出一个文件

-r 对目录反向排序

-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件

-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件

-t 以时间排序

file指令

功能:查看文件类型

语法:file [文件]

[king@VM-12-11-centos ~]$ file cat.txt
cat.txt: UTF-8 Unicode text             #类型是文本文件
[king@VM-12-11-centos ~]$ file ret      #类型是目录文件
ret: directory

pwd命令

语法:pwd

功能:显示当前路径

whoami指令

功能:显示当前用户

两种写法

cd指令

功能:切换路径

用法:cd [想要切换的路径]

Linux是以多叉树的结构管理文件的,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。 根目录:/

Linux常用指令大全【详解】_第8张图片

相对路径和绝对路径

当我们需要找一个文件时,就必须知道文件所在路径文件名,例如寻找text.c文件,因为每一个节点只有一个父亲节点,从根目录出发到text.c文件的路径是唯一的。完整的描述文件位置的路径就是绝对路径,绝对路径能唯一标识一个文件,上面的pwd指令显示的就是绝对路径

Linux常用指令大全【详解】_第9张图片

而相对路径是:自己相对于目标位置而言的路径,不具有唯一性,我们可以从不同的位置找到文件

Linux常用指令大全【详解】_第10张图片

绝对路径:从跟目录出发到到指定文件的路径,能唯一标识一个文件

相对路径:从某个文件出发到指定文件的路径,不能唯一标识一个文件

cd命令就可以通过相对路径和绝对路径的方式进行路径切换

可以通过绝对路径切换到指定目录

也可以通过相对路径切换,点点表示上一级路径,cd …切换到上一级目录,cd …/…/ 切换到上上级路径

Linux常用指令大全【详解】_第11张图片

[king@VM-12-11-centos Linuxclass]$ pwd
/home/king/Linuxclass
[king@VM-12-11-centos Linuxclass]$ cd classcode
[king@VM-12-11-centos classcode]$ ls
a.out  ret.txt  test  test.c
[king@VM-12-11-centos classcode]$ cd test
[king@VM-12-11-centos test]$ cd ../../p1        #切换到上上级目录的p1路径下
[king@VM-12-11-centos p1]$ pwd
/home/king/Linuxclass/p1

有的小伙伴可能就有疑问了,**cd …可以切换到上一级路径,那么cd .**有什么用呢?我们本来就在当前目录下,不需要切换啊。

这里我们用vim编写一个hello Linux的代码,通过gcc编译,生成a.out的可执行程序,而我们要运行可执行程序就需要路径和文件名,用点就可以表示它的路径了,相比于下面用绝对路径方便很多

Linux常用指令大全【详解】_第12张图片

cd还有两个选项

[king@VM-12-11-centos Linuxclass]$ pwd
/home/king/Linuxclass
[king@VM-12-11-centos Linuxclass]$ cd ~    #cd ~进入工作目录,就是用户的路径下
[king@VM-12-11-centos ~]$ pwd
/home/king
[king@VM-12-11-centos ~]$ cd -             #cd -返回最近一次访问的路径
/home/king/Linuxclass

which指令

语法:which [指令]

功能:查看指令的系统路径和相关信息

[king@VM-12-11-centos Linuxclass]$ which ls
alias ls='ls --color=auto'                     #alias:给指令取别名
	/usr/bin/ls                                #我们的指令都是系统简化过的
[king@VM-12-11-centos Linuxclass]$ which ll        
alias ll='ls -l --color=auto'                  #ll可以代替ls -l
	/usr/bin/ls                                     
[king@VM-12-11-centos Linuxclass]$ which cd    #同时我们发现指令都是在bin目录下的
/usr/bin/cd

Linux常用指令大全【详解】_第13张图片

指令本质上就是程序,Linux中,指令、命令、工具都是可执行程序 ,都存放在普通文件中,linux下一切皆文件,我们的指令都在bin目录下

Linux常用指令大全【详解】_第14张图片

touch指令

功能:新建文件,更改文档或目录的日期,包括存取时间和更改时间,我们先了解新建文件,关于更改目录日期我们在文章的最后介绍

需要注意的是touch创建的是普通文件,不是目录文件,所以不能cd进入

[king@VM-12-11-centos test]$ touch file1 file2 file3   #touch可以连续创建多个文件
[king@VM-12-11-centos test]$ touch file4               #创建单个文件
[king@VM-12-11-centos test]$ ls
file1  file2  file3  file4

mkdir指令

功能:新建目录文件

mkdir也可以同时创建多个目录文件,cd可以进入,但是不能在一个目录文件下再创建多个子目录,这里就显示无法创建

Linux常用指令大全【详解】_第15张图片

选项-p:递归建立多个子目录

Linux常用指令大全【详解】_第16张图片

添加用户信任关系

这里的tree指令是以树状显示文件,需要用yum下载

yum intsall -y tree

如果我们是普通用户,需要在前面加sudo,sudo可以短暂提升权限,以root的身份执行相应指令

单独su表示切换为root用户,需要输入root用户的密码

[ret@VM-12-11-centos ~]$ su
Password:                            #输入root用户密码
[root@VM-12-11-centos ret]# whoami   #切换为root用户
root
[root@VM-12-11-centos ret]# su ret  #root用户可以直接切换成指定用户,不需要输入用户密码
[ret@VM-12-11-centos ~]$ whoami     #现在我们就切换到用户ret了
ret

如果我们sudo yum install -y tree显示类似如下的指令,表示当前用户没有添加信任关系

需要以root的身份帮用户添加信任关系,我们将身份切换为root用户,执行如下指令即可添加信任关系,之后我们就可以sudo 了

echo 'xxx ALL=(ALL) ALL' >> /etc/sudoers  (其中xxx代表用户名) 

rmdir指令

功能:删除空目录 ,也就是不存放其他文件的目录

这里p1不为空,所以无法删除,如要借助rm指令

Linux常用指令大全【详解】_第17张图片

rm指令

我们删除文件一般都用rm指令,rmdir有点鸡肋

功能:删除目录或文件

选项:

-f:强制删除

-r:删除目录及目录下的所有文件,以递归的方式

此时我们的p1/p2/p3就删除了

Linux常用指令大全【详解】_第18张图片

如果我们想删除目录中的所以文件而不想删除目录,也可以这样操作

切记别把根目录给删除

rm -rf /    #切记不要使用,递归强制删除根目录,可能会把系统干崩

man指令

linux中有很多的指令,如果我们不记得某个指令的使用,可以man一下,问问那个男人

选项:

1 是普通的命令

2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文 件)

3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件

5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

6 是给游戏留的,由各个游戏自己定义

7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明

8 是系统管理用的命令,这些命令只能由root使用,如ifconfig

9 内核例程

我们目前先了解 1 和 3

同样man需要我们下载,普通用户加sudo

yum install -y man-pages

man不加选项,默认解释指令

[king@VM-12-11-centos file11]$ man ls  

q退出当前界面

Linux常用指令大全【详解】_第19张图片

[king@VM-12-11-centos file11]$ man 3 printf   #我们可以查看printf库函数

Linux常用指令大全【详解】_第20张图片

cp指令

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

功能:复制文件或目录

常用选项:

-f 强行复制文件或目录, 不论目的文件或目录是否已经存在

-r 递归处理,将指定目录下的文件与子目录一并处理。

我们复制文件file11,同时命名为file

Linux常用指令大全【详解】_第21张图片

mv指令

功能:移动文件或重命名文件

用法:mv [选项] [源文件] [目标文件]

选项:

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

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

这里我们将文件file11移动到file目录下

Linux常用指令大全【详解】_第22张图片

如果mv后面跟的不是文件,而是文件名,就会将文件重命名

例如将文件file11重命名为change

Linux常用指令大全【详解】_第23张图片

cat指令

功能:查看文件内容

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

选项:

-b :对非空输出行编号

-n :对输出的所有行编号

-s :不输出多行空行

Linux常用指令大全【详解】_第24张图片

echo指令

功能:将字符串显示到标准输出,也就是屏幕上,echo默认换行

Linux常用指令大全【详解】_第25张图片

重定向

那我们可以将字符串写入文件中吗?

答案是可以的,通过重定向,字符串后面加 > 符号和文件名,就可以将本该显示到标准输出的字符串,写入文件中,如果文件不存在,就会自动创建文件,这就是输出重定向

Linux常用指令大全【详解】_第26张图片输出重定向:将本该显示到屏幕上的字符串写入目标文件中,同时输出重定向会清空文件原始内容再重新写入

在此写入时,之前的hello Linux已近被清空了

想要保留之前的内容并写入就需要追加重定向 > 符号变成 >> 符号

Linux常用指令大全【详解】_第27张图片

cat指令后面不加文件,默认从键盘中读取内容并回显到显示器上,也就是屏幕上

Linux常用指令大全【详解】_第28张图片

之前cat显示文件内容就是通过输入重定向显示的

[king@VM-12-11-centos ~]$ cat < file   #这个 < 符号可以省略
AAAAAAA
BBBBBBB
CCCCCCC

more指令

功能:和cat类似,一般用于查看日志,内容比较长的文件

选项:

-n :对行编号

q :退出more

比如这里我写一个内容从0-1000行的文件

count=0; while [ $count -le 1000 ]; do echo "hello ${count}"; let count++; done > cat.txt

Linux常用指令大全【详解】_第29张图片

more会先显示一部分内容,按回车就可以继续读取内容,按q退出,但more有一个弊端,只能往下翻,不能往上翻,所以我们一般不用more指令

less指令

功能:查看文件内容,less用法比more更具有弹性,可以使用[pageup][pagedown] (前后按键)等按键的功能来往前往后翻看文件,而且less在查看之前不会加载整个文件。

选项:

-i :忽略大小写

-N :显示行号

/字符串:向上搜索字符串的内容

字符串:向下搜索字符串的内容

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

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

q:退出less

[king@VM-12-11-centos ~]$ less cat.txt

Linux常用指令大全【详解】_第30张图片

我们输入 /3向上搜索字符3,less就会帮我们标记字符3的内容

Linux常用指令大全【详解】_第31张图片

还有其它选项大家可以直接尝试,这里就不在演示了,我们q退出less界面

head 指令

功能:显示文件内容的开头到标准输出,也就是屏幕上,head不加参数默认显示前10行

选项:

-n<行数>

[king@VM-12-11-centos ~]$ head cat.txt    #默认输出前10行
hello 0
hello 1
hello 2
hello 3
hello 4
hello 5
hello 6
hello 7
hello 8
hello 9
[king@VM-12-11-centos ~]$ head -n5 cat.txt   #指定输出前5行
hello 0
hello 1
hello 2
hello 3
hello 4
[king@VM-12-11-centos ~]$ head -5 cat.txt    # n可以省略
hello 0
hello 1
hello 2
hello 3
hello 4

tail指令

功能:用于显示指定文件末尾内容,我们一般查看日志时肯定是查看最新的内容,也就是从尾部开始查看,tail就能很好的帮助我们查看最近的内容

选项:

-f :循环读取

-n<行号> :显示行数

tail- ffilename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容,非常适合查看日志

[king@VM-12-11-centos ~]$ tail cat.txt   #tail不加行号默认显示尾10行
hello 991
hello 992
hello 993
hello 994
hello 995
hello 996
hello 997
hello 998
hello 999
hello 1000
[king@VM-12-11-centos ~]$ tail -n5 cat.txt  #指定显示尾5行
hello 996
hello 997
hello 998
hello 999
hello 1000
[king@VM-12-11-centos ~]$ tail -5 cat.txt   #n可以省略
hello 996
hello 997
hello 998
hello 999
hello 1000

那我们可以显示文件的头和尾,如果要显示文件中间的内容怎么办呢?

比如我们要显示第100行到110行,有两种方法:

1.通过重定向将前110行写入一个tmp临时文件,然后在读取尾10行,不过这种方法需要重新创建文件,不进浪费空间效率也低

Linux常用指令大全【详解】_第32张图片那有没有更好的办法呢?

答案是有的,第二种方法借助管道操作

管道操作

Linux常用指令大全【详解】_第33张图片

使用管道时,默认隐式发生了重定向

# 符号 | 表示管道,通过管道将执行的结果传给下一条指令
[king@VM-12-11-centos ~]$ head -110 cat.txt | tail -10 
hello 100
hello 101
hello 102
hello 103
hello 104
hello 105
hello 106
hello 107
hello 108
hello 109

date指令

格式

%H : 小时(00…23)

%M : 分钟(00…59)

%S : 秒(00…61)

%X : 相当于 %H:%M:%S

%d : 日 (01…31)

%m : 月份 (01…12)

%Y : 完整年份 (0000…9999)

%F : 相当于 %Y-%m-%d

[king@VM-12-11-centos ~]$ date                 #date默认显示
Fri Jan 28 16:55:54 CST 2022
[king@VM-12-11-centos ~]$ date +%s             #date +%s显示时间戳
1643360162
[king@VM-12-11-centos ~]$ date +%F%X           #按年月日 时分秒的格式显示当前时间
2022-01-2804:56:08 PM
[king@VM-12-11-centos ~]$ date +%F%X@1643360162  # @时间戳,将时间戳转换成标准时间
2022-01-2804:56:27 PM@1643360162

我们可以加_以示区分,但不能是空格,这种写法是错误的

Linux常用指令大全【详解】_第34张图片

cal指令

功能:查看日历

选项:

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

-y显示当前年份的年历

cal默认显示当前月的月历

Linux常用指令大全【详解】_第35张图片

[king@VM-12-11-centos ~]$ cal -y 2021  #也可以指定年份显示2021的年历

find指令

功能:在文件数中查找文件,并做出相应的处理(可能会访问磁盘),find指令会帮我们在当前目录以及所有该目录的所以子目录下查找相应的文件,当我们遍历一个大的文件系统时,可能会花费一点时间,然后显示相应的文件信息,但当我们下一次再用find查找时,就会快很多

find的选项非常多,这里列举一个,想了解更多可以man find

选项:-name :按照文件名查找

我们在根目录下查找文件名为text的文件,不过这里很多都是permission denied,因为普通用户的权限不够,有很多文件都不能读取

Linux常用指令大全【详解】_第36张图片

我们在自己的目录下查找文件名为file的文件,就会把该目录下的所以子文件名为file的显示出来

同时我们也可以指定目录

语法:find [起始目录位置][-name][filename]

Linux常用指令大全【详解】_第37张图片

grep指令

功能:文本行过滤,搜索字符串

常用选项:

-i:忽略大小写,大小写视为相同

-n:输出行号

-v:反向选择

还是拿那个文件内容为0-1000行的文件cat.txt举例

我们在显示文件内容时,将带’90’的字符都显示出来

Linux常用指令大全【详解】_第38张图片

我们利用输出重定向再往文件内写入两行,-i忽略大小写,就可以将这两行都搜索出来

同时grep指令也支持正则表达式,可以搜索 任意我们想要搜索的字符,大家下去可以自行尝试

我们先追加两行到cat.txt中,用正则表达式就可以将这两行搜索出来

[king@VM-12-11-centos ~]$ echo "he9999" >> cat.txt
[king@VM-12-11-centos ~]$ echo "he9290" >> cat.txt
[king@VM-12-11-centos ~]$ cat cat.txt | grep 'he[0-9]*$'   
he9290
he9999

zip指令/unzip指令

zip语法:zip [压缩后的文件名.zip] [目标文件]

功能:将文件压缩成.zip格式

常用选项:

-r :将指定目录下的所有文件和子目录一并处理,按递归方式

unzip 语法 :unzip [压缩文件.zip]

选项:

-d:压缩到指定路径下

如果我们不加-r选项,直接压缩文件

我们以压缩test文件为例,其中test还有3个子目录file,file22和file33,压缩后的file.zip大小只有160

Linux常用指令大全【详解】_第39张图片

解压后发现test文件是个空目录,没帮我们将所以文件都压缩过来

Linux常用指令大全【详解】_第40张图片

所以我们需要带上选项-r,解压后我们发现cur.zip的大小为774,明显大于之前的160

Linux常用指令大全【详解】_第41张图片

加选项-d,将cur.zip解压到指定路径ret文件中

Linux常用指令大全【详解】_第42张图片

tar指令

和zip/unzip类似,不过解压后的文件后缀为.tgz

功能:完成打包,压缩,解压

选项:

-c:建立一个压缩文件的参数指令(create的意思)

-x:解开一个压缩文件的参数指令

-t:查看tarfile里面的文件!

-z:是否同时具有gzip的属性?亦即是否需要用gzip压缩?

-j:是否同时具有bzip2的属性?亦即是否需要用bzip2压缩?

-v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

-f:使用档名,请留意,在f之后要立即接档名喔!不要再加参数!

-C : 解压到指定目录

通常将-czf和-xzf配合使用,用来压缩和解压 ,这里我们同样将压缩后的文件cur.tgz移动到test目录下进行解压

Linux常用指令大全【详解】_第43张图片

这里我们将压缩后的文件cur.tgz通过-C选项指定路径,将文件解压到ret目录中

Linux常用指令大全【详解】_第44张图片

前面的操作都是解压和压缩,而打包是将需要压缩的所以文件都打包在一起,可以理解将文件都整理起来,文件的大小没有发生变化

bc指令

功能:可以理解为计算器

直接将计算结果显示到屏幕上,Ctrl+c退出

Linux常用指令大全【详解】_第45张图片

uname指令

功能:获取电脑和操作系统相关信息

选项:

-a :输出详细信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类 型,硬件平台类型,操作系统名称

-r :输出内核版本号

uname默认输出内核名称,hostname默认输出主机名,实际上我们只需要-a选项就够了

内核版本号:3表示主版本号,10表示副版本号,其中副版本号为偶数:稳定版内核 为奇数:测试版内核,我们服务器的使用的内核版本一般都不是最新的,而是一些已经使用过多年的经典版本,对全新的版本,需要经过岁月的考验,证明内核是稳定,安全,高效的才可能使用

shutdown指令

选项:

-h:将系统的服务停掉后立即关机

-r:将系统服务停掉后重新启动

-t second:-t [秒数],即过几秒后关机

对于服务器呢我们就不需要关机了

这里我们补充touch指令的更改时间

在介绍touch修改文件时间前我们先介绍一个指令

stat指令

功能:查看文件详细信息

用法 :stat [文件]

stat查看test文件详细信息

Linux常用指令大全【详解】_第46张图片

文件的相关信息:

File:显示文件名
Size:显示文件大小
Blocks:文件使用的数据块总数
IO Block:IO块大小
regular file:文件类型(常规文件)
Device:设备编号
Inode:Inode号
Links:链接数
Access:文件的权限

Gid、Uid:文件所有权的Gid和Uid

Linux下的三个时间

1. Access Time:简写为atime,表示文件的最近访问时间。
2. Modify Time:简写为mtime,表示文件内容的最近修改时间
3. Change Time:简写为ctime,表示属性最后一次被修改的时间

atime:当我们过一段时间cat查看文件后,stat再次查看就会发先atime时间发生变化,当然对于2.6之后的内核,对atime的刷新时间重设了规则,不会立马刷新,因为我们查看文件的情况很多,如果频繁刷新atime会导致效率降低

Linux常用指令大全【详解】_第47张图片

对mtime:我们写入hell后,它的三个时间都发生变化,mtime的改变不一定会影响atime,但是ctime会随之改变

Linux常用指令大全【详解】_第48张图片

ctime:更改文件属性的最近时间,这一行表示的就是文件属性

Linux常用指令大全【详解】_第49张图片

Linux常用指令大全【详解】_第50张图片我们通过chgmod指令可以更改文件的访问权限,也就更改了文件属性

关于权限的相关知识在linux中的权限这篇文章有详细讲解,这里就不过多介绍了

touch指令补充

选项:

-a 改变atime和ctime

-c或–no-create 不建立任何文档。

-d 使用指定的日期时间,而非现在的时间,改变atime和mtime

-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。

-m 改变ctime和mtime

-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。

-t 使用指定的日期时间,而非现在的时间

常用的就是-d,-a -m,而touch指令默认修改所有时间,这里的touch是对已经创建的文件操作

Linux常用指令大全【详解】_第51张图片

Linux中的热键

[Tab] :命令补全,按一次或两次,会将以wh开头的指令显示到屏幕上

[Ctrl c]:终止当前程序,比如屏幕上一直输出字符,写了一个死循环代码,就可以Ctrl +c终止

[Ctrl d]:代替exit切换身份,多次Ctrl d直接退出

[Ctrl r] :根据关键字查找历史命令。我们输入r,自动转换换成历史命令

[page up page down]:上和下,可以翻看历史命令,我们可以直接翻最近输入过的指令,非常方便

文章到这里就结束了,下一篇将给大家介绍Linux中的权限

不是看到希望才去坚持,而是坚持了才看到希望,那些看似不起波澜的日复一日,会在某天,让你看到坚持的意义,敬每一位努力奋斗的你和学习编程的你。希望我的文章能对你有所帮助。欢迎??点赞 ,??评论,??关注,收藏

Linux常用指令大全【详解】_第52张图片

你可能感兴趣的:(前端,html,linux,运维,服务器)