前言
Linux可以说是前后端开发者必备的技能,那么阿沐本身大学主修Linux操作系统+嵌入式,虽然毕业之后并没与从事与操作系统方面开发;但是还是身在互联网,保持前后端开发工作,涉及到服务器部署、日志分析统计、vim编辑等等。linux的基础命令可以说我们必须掌握的,不然有的面试我们都过不了。所以万字总结linux实用的基本命令,小伙伴们收藏起来,每天必看必敲。😄 😄 😄
因为基础命令分工类别比较多,我就先来一份脑图补补:
1、help command
1.1 Bash 内置命令
help 是非常简单的命令,而且不经常使用。因为help只能获取Shell内置命令的帮助,但在Linux中绝大多数命令是外部命令,所以help命令的作用非常有限。也就是说:help命令只能用于内部命令,不能用于外部命令
!!!
help 命令的基本信息如下。
① 命令名称:help
② 英文原意:help
③ 所在路径:Shell内置命令
④ 执行权限:所有用户
⑤ 功能描述:显示Shell内置命令的帮助
#语法格式: help [linux内置命令]单纯的输入:
➜ ~ help cd
dhsafkdsjfakjsdgjkasdbkjdsb
fasdfdsfdsagsdgsdgsdgasdg
➜ ~ help | less
➜ ~ help | grep read
1.2 help命令
--help
命令只能查询linux外部命令,使用频率很高,当我们接触到一个新的命令,不知道其属性时,可以通过--help查看某个命令的帮助信息。这种方法非常简单,输出的帮助信息基本上是man
命令的信息简要版
。
#语法格式: xxx --help
➜ ~ ls --help -- 查看ls命令的帮助信息
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
➜ ~ mkdir --help -- 查看mkdir命令的帮助信息
mkdir: illegal option -- -
usage: mkdir [-pv] [-m mode] directory ...
➜ ~ grep --help -- 查看grep命令的帮助信息
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
1.3 man命令
man命令即可以帮助查询linux内置命令,也可以查询linux外部命令;且man查询的内容比其余两个命令内容都多。打开手册之后我们可以通过pgup
与pgdn
或者上下键
来上下翻看,可以按q
退出当前页面。是我们非常非常常用的命令。
#语法格式: man xxx -- xxx是需要查看的命令名称
➜ ~ man ls -- 查看ls命令的帮助手册
LS(1) BSD General Commands Manual LS(1)
NAME
ls -- list directory contents
SYNOPSIS
ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]
DESCRIPTION
For each operand that names a file of a type other than directory, ls displays its name as well as any requested, associated information. For each operand that names a file of type directory,
ls displays the names of files contained within that directory, as well as any requested, associated information.
If no operands are given, the contents of the current directory are displayed. If more than one operand is given, non-directory operands are displayed first; directory and non-directory oper-
ands are sorted separately and in lexicographical order.
The following options are available:
-@ Display extended attribute keys and sizes in long (-l) output.
-1 (The numeric digit ``one''.) Force output to be one entry per line. This is the default when output is not to a terminal.
-A List all entries except for . and ... Always set for the super-user.
-a Include directory entries whose names begin with a dot (.).
-B Force printing of non-printable characters (as defined by ctype(3) and current locale settings) in file names as \xxx, where xxx is the numeric value of the character in octal.
从上面这个命令时我们会发现最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一章节。在man手册中一共有这么几个章节:
1、Standard commands -- 标准命令
2、System calls -- 系统调用
3、Library functions -- 库函数
4、Special devices -- 设备说明
5、File formats -- 文件格式
6、Games and toys -- 游戏和娱乐
7、Miscellaneous -- 杂项
8、Administrative Commands -- 管理员命令
9、其他(Linux特定的), 用来存放内核例行程序的文档
- 内部命令:就是shell程序的一部分,在系统启动时就加载进入内存,是常驻内存的,所以我们执行内部命令的时候执行速度比较快。
- 外部命令:也就是文件系统命令,它不是shell程序组成部分,是shell程序之外的程序,使用时需要从硬盘读取入内存,所以相对来说速度就慢一点。
区分内部命令和外部命令:使用type
命令可以区分。
➜ ~ type vim -- 外部命令
vim is /usr/bin/vim
➜ ~ type pwd -- 内部命令
pwd is a shell builtin -- pwd是一个内置命令的shell
➜ ~ type cd -- 内部命令
cd is a shell builtin -- cd是一个内置命令的shell
2.路径切换及查看
2.1 cd命令
绝对是我们必常用的命令;英文全拼:(change directory
)命令用于切换当前工作目录。
#语法格式: cd [dirName] 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home目录。
注意:~
也表示为home目录 的意思, .
则是表示目前所在的目录, ..
则表示目前目录位置的上一层目录。
cd /usr/local 切换到指定目录
➜ ~ cd /usr/local/var/weixin/amu -- 切换到/usr/local/var/weixin/am目录下
➜ amu git:(master) ✗ pwd -- 查看切换后的目录路径
/usr/local/var/weixin/amu
cd ~ 切换到当前用户的主目录
➜ amu git:(master) ✗ cd ~
➜ ~
cd - 切换到上一次访问的目录
➜ ~ cd -
/usr/local/var/weixin/amu
cd .. 切换到上一级所在的目录
➜ amu git:(master) ✗ cd .. -- 切换到上一级目录
➜ weixin
➜ weixin cd ../../../ -- 可以切换到上上级目录下面
➜ /usr pwd
/usr
cd . 保持当前目录不变
➜ weixin pwd
/usr/local/var/weixin
➜ weixin cd .
➜ weixin pwd
/usr/local/var/weixin
cd 命令含义总结
cd命令 | 含义 |
---|---|
cd | 切换到当前用户主目录 |
cd ~ | 切换到当前用户主目录 |
cd - | 切换到上一次访问目录(最近两次操作之间来回切换) |
cd .. | 切换到上一级目录 |
cd . | 保持当前目录不变 |
2.2 pwd命令
依然绝对是我们必常用的命令;英文全拼:(print work directory
)命令用于查看当前工作目录的完整路径。
#语法格式:pwd [--help][--version] --help 在线帮助 / --version 显示版本信息
➜ weixin pwd -- 查看当前路径,会将当前路径回显
/usr/local/var/weixin
2.3 ls命令
依然绝对是我们必常用的命令;英文全拼:(list files
)命令用于用来打印当前目录的清单,可以指定其他目录(列出目前工作目录所含之文件及子目录)。
#语法格式: ls [-alrtAFR] [name...] --alrtAFR 是指参数 --name 文件/目录
ls 查看当前路径下的文件和目录,若后带有文件或目录,则只查看当前文件或目录
➜ amu git:(master) ✗ ls
Library README.md docs lua redis
➜ amu git:(master) ✗ ls redis/currentlimiting -- ls 可以显示指定的目录内容列表
Counter.php LeakyBucket.php RedisTokenBucket.php Slide.php
TokenBucket.php test.php
ls -a 列出目录下所有的文件
,包括以"."
开头的隐藏文件
➜ amu git:(master) ✗ ls -a -- 回显所有的文件 包括隐藏的文件
. .. .DS_Store .git .idea Library README.md docs lua redis
ls -l 除了回显文件名外,它还列出文件:权限
、拥有者
、文件大小
、时间
等详细信息
➜ amu git:(master) ✗ ls -l -- 查看当前路径下所有的文件或目录的详细信息
total 16 -- 总用量16
drwxr-xr-x 3 amu amu 96 4 18 18:23 Library
-rw-r--r-- 1 amu amu 5012 5 9 18:00 README.md
drwxr-xr-x 3 amu amu 96 4 17 20:12 docs
drwxr-xr-x 3 amu amu 96 5 8 23:16 lua
drwxr-xr-x 9 amu amu 288 5 7 22:44 redis
ls -r 反向次序排列
,意将文件以相反次序显示(原定依英文字母次序,默认是a,b,c这样)
➜ amu git:(master) ✗ ls -r redis -- 按照反顺序展示
test.php queue publish-subscribe hash
geohash currentlimiting Bitmap.php
ls -t 以文件修改时间
排序
➜ amu git:(master) ✗ ls -t redis
geohash(2021年5月9号16:31) publish-subscribe(2021年5月4号16:51) test.php(2021年5月3号01:13) Bitmap.php(2021年5月2号17:26)
hash(2021年4月25号22:56) currentlimiting(2021年4月25号22:29) queue(2021年4月25号22:29)
ls -F 在列出的文件名称后加一符号;可执行文件加 "*", 目录则加 "/"
➜ amu git:(master) ✗ ls -F redis
Bitmap.php currentlimiting/ geohash/ hash/
publish-subscribe/ queue/ test.php
ls -R 若目录下有文件,则递归展示子目录
➜ amu git:(master) ✗ ls -R
Library README.md docs lua redis
./Library:
Traits
./Library/Traits:
Instance.php
./docs:
basic-knowledge
./lua:
geohash.lua
./redis:
Bitmap.php currentlimiting geohash hash publish-subscribe queue test.php
./redis/currentlimiting:
Counter.php LeakyBucket.php RedisTokenBucket.php Slide.php TokenBucket.php test.php
./redis/geohash:
GeoRedis.php Geohash.php GeohashTest.php test.php
./redis/hash:
hash.php lua.php scene.php
./redis/publish-subscribe:
Publish.php Subscribe.php
./redis/queue:
consume.php listCase.php test.php
ls -g 类似-l,但是不列出拥有者信息
➜ amu git:(master) ✗ ls -g
total 16
drwxr-xr-x 3 admin 96 4 18 18:23 Library
-rw-r--r-- 1 admin 5012 5 9 18:00 README.md
drwxr-xr-x 3 admin 96 4 17 20:12 docs
drwxr-xr-x 3 admin 96 5 8 23:16 lua
drwxr-xr-x 9 admin 288 5 7 22:44 redis
ls -lh 以常人容易理解的文件格式列出(如1K、1M、1G)
➜ amu git:(master) ✗ ls -lh
total 16
drwxr-xr-x 3 amu admin 96B 4 18 18:23 Library
-rw-r--r-- 1 amu admin 4.9K 5 9 18:00 README.md
drwxr-xr-x 3 amu admin 96B 4 17 20:12 docs
drwxr-xr-x 3 amu admin 96B 5 8 23:16 lua
drwxr-xr-x 9 amu admin 288B 5 7 22:44 redis
ls -lh 递归目录以下所有目录及文件详细资料列出
➜ amu git:(master) ✗ ls -lR
total 16
drwxr-xr-x 3 amu admin 96 4 18 18:23 Library
-rw-r--r-- 1 amu admin 5012 5 9 18:00 README.md
drwxr-xr-x 3 amu admin 96 4 17 20:12 docs
drwxr-xr-x 3 amu admin 96 5 8 23:16 lua
drwxr-xr-x 9 amu admin 288 5 7 22:44 redis
./Library:
total 0
drwxr-xr-x 3 amu admin 96 4 18 18:27 Traits
./Library/Traits:
total 8
-rw-r--r-- 1 amu admin 1171 4 18 18:27 Instance.php
./docs:
total 0
drwxr-xr-x 3 amu admin 96 4 17 20:12 basic-knowledge
./docs/basic-knowledge:
total 24
-rw-r--r-- 1 amu admin 12232 4 17 20:12 PHP初级笔试题(一).md
./lua:
total 8
-rw-r--r-- 1 amu admin 3023 5 11 09:54 geohash.lua
./redis:
total 24
-rw-r--r-- 1 amu admin 5323 5 2 17:26 Bitmap.php
drwxr-xr-x 8 amu admin 256 4 25 22:29 currentlimiting
drwxr-xr-x 6 amu admin 192 5 9 16:31 geohash
drwxr-xr-x 5 amu admin 160 4 25 22:56 hash
drwxr-xr-x 4 amu admin 128 5 4 16:51 publish-subscribe
drwxr-xr-x 5 amu admin 160 4 25 22:29 queue
-rw-r--r-- 1 amu admin 169 5 3 01:13 test.php
./redis/currentlimiting:
total 48
-rw-r--r-- 1 amu admin 1461 4 19 23:00 Counter.php
-rw-r--r-- 1 amu admin 1763 4 19 23:17 LeakyBucket.php
-rw-r--r-- 1 amu admin 3050 4 19 23:08 RedisTokenBucket.php
-rw-r--r-- 1 amu admin 1755 4 18 22:51 Slide.php
-rw-r--r-- 1 amu admin 1806 4 19 23:15 TokenBucket.php
-rw-r--r-- 1 amu admin 1624 4 25 22:29 test.php
./redis/geohash:
total 56
-rw-r--r-- 1 amu admin 2116 5 9 15:52 GeoRedis.php
-rw-r--r-- 1 amu admin 6438 5 9 16:31 Geohash.php
-rw-r--r-- 1 amu admin 10058 5 9 12:51 GeohashTest.php
-rw-r--r-- 1 amu admin 874 5 9 16:31 test.php
./redis/hash:
total 24
-rw-r--r-- 1 amu admin 557 4 25 22:29 hash.php
-rw-r--r-- 1 amu admin 933 4 25 22:50 lua.php
-rw-r--r-- 1 amu admin 1834 4 25 22:43 scene.php
./redis/publish-subscribe:
total 16
-rw-r--r-- 1 amu admin 667 5 4 16:51 Publish.php
-rw-r--r-- 1 amu admin 1465 5 4 16:45 Subscribe.php
./redis/queue:
total 32
-rw-r--r-- 1 amu admin 615 4 17 21:31 consume.php
-rw-r--r-- 1 amu admin 6807 4 17 21:39 listCase.php
-rw-r--r-- 1 amu admin 636 4 25 22:29 test.php
ls -lt 按照修改时间排序(倒序)
➜ amu git:(master) ✗ ls -lt
total 16
-rw-r--r-- 1 amu admin 5012 5 9 18:00 README.md
drwxr-xr-x 3 amu admin 96 5 8 23:16 lua
drwxr-xr-x 9 amu admin 288 5 7 22:44 redis
drwxr-xr-x 3 amu admin 96 4 18 18:23 Library
drwxr-xr-x 3 amu admin 96 4 17 20:12 docs
通配符 | 含义 |
---|---|
* | 代表任意个数个字符 |
? | 代表任意一个字符,至少1个 |
[] | 表示可以匹配字符组中任一个 |
[abc] | 匹配a、b、c中的任意一个 |
[a-f] | 匹配从a至f范围内的任意一个字符 |
2.4 文件/目录搜索命令
这个基本上我们都要会的,我们经常需要在linux上查询某一个忘记的文件;例如:配置文件、日志位置、下载的文件等等。
常用搜索查询命令
find # 可以根据指定查询条件搜索文件。
which # 查看执行文件的位置。
whereis # 查看可执行文件位置和相关文件。
locate # 配合数据库查看文件位置。
2.4.1 find命令
find
命令用来在指定目录下查找文件;① 任何位于参数之前的字符串都将被视为欲查找的目录名 ② 不设置参数时,则在当前目录下查找子目录与文件且将查找到的子目录和文件全部进行显示。
#语法格式: find [path] -option [-print] [ -exec -ok command ] {} \
1、path :find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
2、-print :find命令将匹配的文件输出到标准输出;显示的时候”\n”做为定界符, 换行。
3、-exec :find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;注意{ }和\;之间的空格。
4、-ok :跟-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
5、print0 :与xargs配套使用,以“\0”做为定界符
例如:find . -name '*.log' | xargs rm -rf -- 删除目录下后缀为.log的文件
find常用命令选项:
-name filename #查找名为filename的文件
-perm 755 #按执行权限来查找
-user username #按文件属主来查找 username文件所属用户名
-group groupname #按组文件所属组来查找 groupname组名
-amin +n #查最近n分钟前被存取过的文件
-atime -n +n #按文件访问时间来查 -n指n*2小时以内,+n指n*2小时以前
-cmin -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type xxx #查询指定文件类型 xxx如下
① b: 区块设备装置文件
② c: 字符设备文件
③ d: 目录
④ p: 管道
⑤ f: 普通的文件
⑥ l: 符号连结
⑦ s: socket
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-prune #忽略某个目录
查看当前目录下.php结尾的文件
➜ amu git:(master) ✗ find . -name '*.php'
./redis/hash/hash.php
./redis/hash/lua.php
./redis/hash/scene.php
./redis/currentlimiting/RedisTokenBucket.php
./redis/currentlimiting/TokenBucket.php
./redis/currentlimiting/Counter.php
./redis/currentlimiting/LeakyBucket.php
./redis/currentlimiting/test.php
./redis/currentlimiting/Slide.php
./redis/test.php
./redis/geohash/GeoRedis.php
./redis/geohash/GeohashTest.php
./redis/geohash/test.php
./redis/geohash/Geohash.php
./redis/queue/listCase.php
./redis/queue/test.php
./redis/queue/consume.php
./redis/Bitmap.php
./redis/publish-subscribe/Subscribe.php
./redis/publish-subscribe/Publish.php
./Library/Traits/Instance.php
查看当前目录下.php结尾的文件,输出结果换行显示:默认换行
➜ amu git:(master) ✗ find . -name '*.php' -print
./redis/hash/hash.php
./redis/hash/lua.php
./redis/hash/scene.php
./redis/currentlimiting/RedisTokenBucket.php
./redis/currentlimiting/TokenBucket.php
./redis/currentlimiting/Counter.php
./redis/currentlimiting/LeakyBucket.php
./redis/currentlimiting/test.php
./redis/currentlimiting/Slide.php
./redis/test.php
./redis/geohash/GeoRedis.php
./redis/geohash/GeohashTest.php
./redis/geohash/test.php
./redis/geohash/Geohash.php
./redis/queue/listCase.php
./redis/queue/test.php
./redis/queue/consume.php
./redis/Bitmap.php
./redis/publish-subscribe/Subscribe.php
./redis/publish-subscribe/Publish.php
./Library/Traits/Instance.php
查看当前目录下.php结尾的文件,输出结果不换行显示
➜ amu git:(master) ✗ find . -name '*.php' -print0
./redis/hash/hash.php./redis/hash/lua.php./redis/hash/scene.php./redis/currentlimiting/RedisTokenBucket.php./redis/currentlimiting/TokenBucket.php./redis/currentlimiting/Counter.php./redis/currentlimiting/LeakyBucket.php./redis/currentlimiting/test.php./redis/currentlimiting/Slide.php./redis/test.php./redis/geohash/GeoRedis.php./redis/geohash/GeohashTest.php./redis/geohash/test.php./redis/geohash/Geohash.php./redis/queue/listCase.php./redis/queue/test.php./redis/queue/consume.php./redis/Bitmap.php./redis/publish-subscribe/Subscribe.php./redis/publish-subscribe/Publish.php./Library/Traits/Instance.php%
通过-exec
参数查询.php结尾的文件并用ll查询更多文件信息
➜ amu git:(master) ✗ find . -name '*.php' -exec ls -ll {} \;
-rw-r--r-- 1 amu admin 557 4 25 22:29 ./redis/hash/hash.php
-rw-r--r-- 1 amu admin 933 4 25 22:50 ./redis/hash/lua.php
-rw-r--r-- 1 amu admin 1834 4 25 22:43 ./redis/hash/scene.php
-rw-r--r-- 1 amu admin 3050 4 19 23:08 ./redis/currentlimiting/RedisTokenBucket.php
-rw-r--r-- 1 amu admin 1806 4 19 23:15 ./redis/currentlimiting/TokenBucket.php
-rw-r--r-- 1 amu admin 1461 4 19 23:00 ./redis/currentlimiting/Counter.php
-rw-r--r-- 1 amu admin 1763 4 19 23:17 ./redis/currentlimiting/LeakyBucket.php
-rw-r--r-- 1 amu admin 1624 4 25 22:29 ./redis/currentlimiting/test.php
-rw-r--r-- 1 amu admin 1755 4 18 22:51 ./redis/currentlimiting/Slide.php
-rw-r--r-- 1 amu admin 169 5 3 01:13 ./redis/test.php
-rw-r--r-- 1 amu admin 2116 5 9 15:52 ./redis/geohash/GeoRedis.php
-rw-r--r-- 1 amu admin 10058 5 9 12:51 ./redis/geohash/GeohashTest.php
-rw-r--r-- 1 amu admin 874 5 9 16:31 ./redis/geohash/test.php
-rw-r--r-- 1 amu admin 6438 5 9 16:31 ./redis/geohash/Geohash.php
-rw-r--r-- 1 amu admin 6807 4 17 21:39 ./redis/queue/listCase.php
-rw-r--r-- 1 amu admin 636 4 25 22:29 ./redis/queue/test.php
-rw-r--r-- 1 amu admin 615 4 17 21:31 ./redis/queue/consume.php
-rw-r--r-- 1 amu admin 5323 5 2 17:26 ./redis/Bitmap.php
-rw-r--r-- 1 amu admin 1465 5 4 16:45 ./redis/publish-subscribe/Subscribe.php
-rw-r--r-- 1 amu admin 667 5 4 16:51 ./redis/publish-subscribe/Publish.php
-rw-r--r-- 1 amu admin 1171 4 18 18:27 ./Library/Traits/Instance.php
查看当前目录下.php结尾并且h.*开头的文件
➜ amu git:(master) ✗ find . -name '*.php' -a -name 'h*' -exec ls -ll {} \;
-rw-r--r-- 1 amu admin 557 4 25 22:29 ./redis/hash/hash.php
查看当前目录下.php结尾或者*.lua结尾的文件
➜ amu git:(master) ✗ find . -name "*.php" -o -name "*.lua"
./redis/hash/hash.php
./redis/hash/lua.php
./lua/geohash.lua
查看以大写字母开头的文件
➜ amu git:(master) ✗ find . -name "[A-Z]*" -print
./redis/currentlimiting/RedisTokenBucket.php
./redis/currentlimiting/TokenBucket.php
查看权限为755的文件
➜ amu git:(master) ✗ find ./redis -perm 755 -print -exec ls -ll {} \;
./redis/queue
total 32
-rw-r--r-- 1 amu admin 615 4 17 21:31 consume.php
-rw-r--r-- 1 amu admin 6807 4 17 21:39 listCase.php
-rw-r--r-- 1 amu admin 636 4 25 22:29 test.php
./redis/publish-subscribe
total 16
-rw-r--r-- 1 amu admin 667 5 4 16:51 Publish.php
-rw-r--r-- 1 amu admin 1465 5 4 16:45 Subscribe.php
查询当前目录下所有的文件
➜ amu git:(master) ✗ find . -type f
./redis/hash/hash.php
./redis/hash/lua.php
./redis/hash/scene.php
查询当前目录下所有目录
➜ amu git:(master) ✗ find . -type d
./redis/geohash
./redis/queue
./redis/publish-subscribe
./lua
查看当前目录大于5k小于100k的文件
➜ amu git:(master) ✗ find . -size +5k -a -size -100k
./redis/geohash/GeohashTest.php
./redis/geohash/Geohash.php
./redis/Bitmap.php
./docs/basic-knowledge/PHP初级笔试题(一).md
2.4.2 which命令
概述:在PATH变量
指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
命令参数:
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n参数相同,但此处的包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息
#语法格式: which [文件...] -- 文件:可执行文件名称
示例:
➜ ~ which bash
/bin/bash -- #bash可执行程序的绝对路径
➜ ~ which pwd
mac终端 :pwd: shell built-in command -- shell内置命令
centos终端:/bin/pwd -- #pwd可执行程序的绝对路径
➜ ~ which cd
mac终端 :cd: shell built-in command
centos终端:/usr/bin/which no cd ....
注意:你会发现centos系统会提示找不到cd命令;这是因为cd是bash内建的命令!但是which默认找的是PATH内所规范的目录,所以找不到cd命令
➜ ~ which which
mac终端 :which: shell built-in command
centos终端:alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /usr/bin/which
注意 :我们看到centos端出来两个which,其中一个alias是指「命令别名」;意指:输入which等于后面那一串的命令
2.4.3 whereis命令
概述:该指令会在特定的目录中查找符合条件的文件;只能用于程序名的搜索
,例如原始代码
、二进制文件
,或是man说明文件
。它查找的速度非常快
,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件
中,当使用whereis则会从数据库中查找
数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。
命令参数:
-b 只查找二进制文件。
-f 不显示文件名前的路径名称。
-m 只查找说明文件。
-s 只查找原始代码文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。
#语法格式: whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
示例:
➜ ~ whereis grep -- 查询所有与grep相关的文件
/usr/bin/grep
2.4.4 locate命令
概述:locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在执行loacte时直接找该索引
,查询速度会较快
,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
命令参数:
-b, --basename -- 仅匹配路径名的基本名称
-c, --count -- 只输出找到的数量
-e, --existing -- 仅打印当前现有文件的条目
-1 -- 如果是则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会使速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
-q, --quiet -- 安静模式,不会显示任何错误讯息
-l, --limit, -n LIMIT -- 将输出(或计数)限制为LIMIT个条目
-r, --regexp REGEXP -- 使用基本正则表达式
-o -- 指定资料库存的名称。
-h, --help -- 显示辅助帮助
-V, --version -- 显示版本信息
#语法格式: locate [-d ][--help][--version][范本样式...]
示例:
➜ ~ locate pwd
/bin/pwd
/etc/.pwd.lock
/usr/bin/pwdx
/usr/include/pwd.h
3.文件|目录操作
3.1.1 touch命令
概述:Linux touch命令用于修改文件
或者目录的时间属性
,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
命令参数:
-a 或--time=atime或--time=access或--time=use 改变档案的读取时间记录
-c 假如目的档案不存在,不建立任何文档;和--no-create的效果一样
-d 使用指定时间与日期,可以使用各种不同的格式
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
#语法格式: touch [选项]... 文件...
示例1:创建不存在的文件
➜ weixin touch test1.log test2.log -- 不存在文件则创建
➜ weixin ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test1.log
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test2.log
➜ weixin touch -c test3.log -- 不存在的文件则不创建
➜ weixin ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test1.log
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test2.log
示例2:更新文件的时间戳(test1与test2一致)
➜ weixin ll
total 0
drwxr-xr-x 10 amu admin 320B 5 9 18:00 amu -- 未修改前时间是18:00
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test1.log
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test2.log
➜ weixin touch -r test1.log amu -- 执行命令
➜ weixin ll
total 0
drwxr-xr-x 10 amu admin 320B 5 17 12:57 amu -- 修改后的时间12:57
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test1.log
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test2.log
示例3:指定文件的时间戳
➜ weixin ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test1.log
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test2.log -- 未指定时间前12:57
➜ weixin touch -t 202105171305.20 test2.log -- 执行命令
➜ weixin ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 12:57 test1.log
-rw-r--r-- 1 amu admin 0B 5 17 13:05 test2.log -- 指定时间后13:05
注意:
-t time 使用指定的时间值 time 作为指定文件相应时间戳记的新值.此处的 time规定为如下形式的十进制数:
格式:[[CC]YY]MMDDhhmm[.SS]
① CC指年数前两位,即”世纪数”;
② YY为年数的后两位,即某世纪中的年数;
③ MM为月数;DD为天数;hh为小时数(几点);mm为分钟数;SS为秒数(0~61,可以处理闰秒);
④ 时间组成是由环境变量TZ指定的时区中的一个时间;系统限制在1970年1月1日之后
3.1.2 mkdir命令
概述:linux mkdir(英文全拼:make directory
)命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
命令参数:
-p 目录不存在;系统将自动建立好那些不存在的目录,即一次可以建立多个目录
-m 设置权限(类似 chmod)
-v 每次创建新目录都显示信息
#语法格式:mkdir [-pv] dirName
示例1:创建一个空目录
➜ weixin mkdir test_1
➜ weixin ll
total 0
drwxr-xr-x 2 amu admin 64B 5 17 21:37 test_1
示例2:递归创建多个目录
➜ weixin mkdir -p test_2/test_22/test_222 -- 创建test_2目录,其下再创建test_22目录,test_22目录再创建test_222目录
➜ weixin ls -lR
total 0
drwxr-xr-x 3 amu admin 96B 5 17 21:39 test_2
./test_2:
total 0
drwxr-xr-x 3 amu admin 96 5 17 21:39 test_22
./test_2/test_22:
total 0
drwxr-xr-x 2 amu admin 64 5 17 21:39 test_222
示例3:创建权限为775的目录
➜ weixin mkdir -m 775 test_3
➜ weixin ll
total 0
drwxrwxr-x 2 amu admin 64B 5 17 21:42 test_3
示例4:创建新目录都显示信息
➜ weixin mkdir -v test_4
mkdir: created directory 'test_4'
3.1.3 rm命令
概述:Linux rm(英文全拼:remove
)该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录全部删除。对于链接文件,只是删除了链接,原有文件均保持不变。
命令参数:
-i (--interactive) 进行交互式删除;删除前进行逐一询问确认
-f (--force) 即使原档案属性设为唯读,亦直接删除,无需逐一确认;相当于强制删除
-r (--recursive)将参数中列出的全部目录和子目录均递归地全部删除
#语法格式:rm [-ifr] 文件...
示例1:系统询问是否删除
➜ weixin rm test1.log -- mac端删除不提示
➜ weixin ls
amu test2.log test_1 test_2 test_3 test_4
root@localhost ~]# rm test1.log -- centos虚拟机终端会提示
rm:是否删除 一般文件 "test1.log"? y
示例2:无法删除一个目录
➜ weixin rm test_1 -- mac客户端
rm: test_1: is a directory
[root@localhost ~]$ rm test/ -- centos客户端
rm: cannot remove `test/': Is a directory
示例3:强行删除文件,系统不再提示
➜ weixin rm -f test2.log
➜ weixin ll
total 0
drwxr-xr-x 2 amu admin 64B 5 17 21:37 test_1
drwxr-xr-x 3 amu admin 96B 5 17 21:39 test_2
drwxrwxr-x 2 amu admin 64B 5 17 21:42 test_3
drwxr-xr-x 2 amu admin 64B 5 17 21:44 test_4
示例3:删除所有的文件且不可恢复
➜ weixin rm -rf
# 注意:任何的删除操作都是危险的动作,慎用
3.1.4 mv命令
概述:Linux mv(英文全拼:remove
)用来移动文件或者将文件改名,或将文件或目录移入其它位置。
命令参数:
-b 文件或者目录存在时,执行覆盖前会自动创建一个备份
-i 若指定文件/目录同名时,就会询问是否覆盖;输入Y则直接覆盖,否则取消
-f 强制(force)覆盖,指定文件或目录存在,不询问直接覆盖
-n 不要覆盖任何已存在的文件或目录
-u 当指定文件比目标文件新或者目标文件不存在时,才执行移动操作
#语法格式: mv [选项] 源文件或目录 目标文件或目录
示例1:给文件改名
➜ test_1 ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test1.log
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test2.log
➜ test_1 mv test1.log test1.md
➜ test_1 ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test1.md
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test2.log
示例2:文件移动
➜ test_1 ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test1.log
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test2.log
➜ test_1 mv test1.log test1.md
➜ test_1 ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test1.md
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test2.log
➜ test_1 mv test1.md ../test_2
➜ test_1 ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test2.log
➜ test_1 ll ../test_2
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test1.md
drwxr-xr-x 3 amu admin 96B 5 17 21:39 test_22
3.1.5 cp命令
概述:Linux cp(英文全拼:copy file
)将源文件复制至目标文件,或将多个源文件复制至目标目录。
命令参数:
-a 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-d 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式
-f 覆盖已经存在的目标文件而不给出提示
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r 复制目录及目录内的所有项目
-l 不复制文件,只是生成链接文件
#语法格式: cp [-rf] 源文件|目录 目标文件|目录
示例1:复制单个文件到目标目录,文件在目标文件中不存在
➜ test_1 ll
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test2.log
➜ test_1 cp test2.log ../test_2
➜ test_1 ll ../test_2
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:35 test2.log
# 注意
① 没有带-a参数时,两个文件的时间是不一样的
② 带了-a参数时,两个文件的时间是一致的
示例1:复制整个目录
➜ weixin ll
total 0
drwxr-xr-x 3 amu admin 96B 5 17 22:27 test_1
drwxr-xr-x 5 amu admin 160B 5 17 22:35 test_2
➜ weixin cp -a test_2 test_1
➜ weixin ll test_1
total 0
-rw-r--r-- 1 amu admin 0B 5 17 22:20 test2.log
drwxr-xr-x 5 amu admin 160B 5 17 22:35 test_2
3.1.6 rmdir命令
概述:Linux rmdir(英文全拼:remove directory
)该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限。
命令参数:
-p 递归删除目录dirname,子目录被删除后父目录为空时,则一同被删除
#语法格式: rmdir [-p] dirName
示例1:删除非空目录
➜ weixin tree test_1
test_1
├── test2.log
└── test_2
├── test1.md
├── test2.log
└── test_22
└── test_222
3 directories, 3 files
➜ weixin rmdir test_1
rmdir: test_1: Directory not empty
# 注意:
rmdir 目录名 命令不能直接删除非空目录
示例2:子目录被删除后导致父目录为空,则顺便一并删除
➜ weixin tree test_1
test_1
└── test_2
└── test_22
└── test_222
➜ weixin rmdir -p test_1/test_2/test_22/test_222
➜ weixin tree test_1
test_1 [error opening dir]
0 directories, 0 files
3.1.7 ln命令
概述:Linux ln(英文全拼:link files)是一个超级重要
的命令;它的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
功能分析:
① 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称
② 而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置
③ 硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统
硬链接说明:
- ① 硬链接,以文件副本的形式存在;但
不占用实际空间
- ② 不允许给
目录创建硬链接
- ③ 硬链接只有在
同一个文件系统
中才能创建软链接说明:
- ① 软链接,以
路径
的形式存在。类似于Windows操作系统中的快捷方式
- ② 软链接可以
跨文件系统
,硬链接不可以 - ③ 软链接可以对一个
不存在
的文件名
进行链接 - ④ 软链接可以对
目录
进行链接注意事项:
- ① ln命令会
保证每一个地方链接文件的同步性
;不论你改动了哪一地方,其它的文件都会发生相同的变化
- ② 链接分为软链接和硬链接;软链接就是
ln –s 源文件 目标文件
,它只会在你选定的位置上生成一个文件的镜像
,不会占用磁盘空间
;硬链接ln 源文件 目标文件
,它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化
- ③ ln命令在链接文件或者目录时,若指定两个以上文件/目录且最终的目录已存在,则将前面指定的所有文件或目录复制到该目录中;否则会出现报错信息
命令参数之必要参数:
① -b 删除,覆盖以前建立的链接
② -d 允许超级用户制作目录的硬链接
③ -f (force)强制执行
④ -i 交互模式,文件存在则提示用户是否覆盖
⑤ -n 把符号链接视为一般目录
⑥ -s 软链接(符号链接)
⑦ -v 显示详细的处理过程
#语法格式: ln [参数] [源文件或目录] [目标文件或目录]
示例1:给文件创建软链接
➜ test_4 ll
total 0
-rw-r--r-- 1 amu admin 0B 5 18 13:05 log2021.txt
➜ test_4 ln -s log2021.txt link2021
➜ test_4 ll
total 0
lrwxr-xr-x 1 amu admin 11B 5 18 13:05 link2021 -> log2021.txt
-rw-r--r-- 1 amu admin 0B 5 18 13:05 log2021.txt
# 注意:
如果log2021.txt删除或者丢失,则link2021也会失效
示例2:给文件创建硬链接
➜ test_4 ll
total 0
lrwxr-xr-x 1 amu admin 11B 5 18 13:05 link2021 -> log2021.txt
-rw-r--r-- 1 amu admin 0B 5 18 13:05 log2021.txt
➜ test_4 ln log2021.txt ln2021
➜ test_4 ll
total 0
lrwxr-xr-x 1 amu admin 11B 5 18 13:05 link2021 -> log2021.txt
-rw-r--r-- 2 amu admin 0B 5 18 13:05 ln2021
-rw-r--r-- 2 amu admin 0B 5 18 13:05 log2021.txt
# 注意:
硬链接会使得ln2021和log2021.txt各项属性完全一致
示例3:删除和重建链接原文件
➜ test_4 ll
total 0
lrwxr-xr-x 1 amu admin 11B 5 18 13:05 link2021 -> log2021.txt
-rw-r--r-- 2 amu admin 0B 5 18 13:05 ln2021
-rw-r--r-- 2 amu admin 0B 5 18 13:05 log2021.txt
➜ test_4 rm -rf log2021.txt
➜ test_4 ll
total 0
lrwxr-xr-x 1 amu admin 11B 5 18 13:05 link2021 -> log2021.txt
-rw-r--r-- 1 amu admin 0B 5 18 13:05 ln2021
➜ test_4 touch log2021.txt
➜ test_4 ll
total 0
lrwxr-xr-x 1 amu admin 11B 5 18 13:05 link2021 -> log2021.txt
-rw-r--r-- 1 amu admin 0B 5 18 13:05 ln2021
-rw-r--r-- 1 amu admin 0B 5 18 13:17 log2021.txt
➜ test_4 vim log2021.txt
➜ test_4 cat log2021.txt
我是阿沐啊
➜ test_4 cat ln2021
➜ test_4 cat link2021
我是阿沐啊
# 说明:
① 源文件被删除后,硬链接文件未收到任何影响;但centos终端下软连接文件一直红色闪烁,提示源文件不存在
② 源文件重建后,软连接文件显示正常;更改源文件内容,硬链接文件并未收到影响,还是保留删除前的空文件内容;说明硬链接在源文件删除之后就失效了
3.2.1 文件目录权限设置chmod
命令
概述:Linux chmod(英文全拼:change mode
)用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。
功能分析:
① 文件目录访问权限分为三种:只读(read)、只写(write)、可执行(execute)
② 文件目录调用权限分为三种:文件所有者(owner)、同组用户(Group)、其它用户(other users)
③ 文件目录访问权限都有三组,每组三位表示:文件属主的读写和执行权限;属主同组用户读写和执行权限;系统其它用户读写和可执行权限
权限说明:
➜ weixin ll -al
drwxr-xr-x 10 amu admin 320B 5 17 12:57 amu
-rw-r--r-- 1 amu admin 0B 5 18 13:05 log2021.txt
# 详细说明:
① 第一个字符是横线表示是:一个非目录文件;如果是d开头则表示是:一个目录
② 第二个字符到第十个字符共9个字符;每三个字符一组,分别表示:三组用户对文件或目录的权限
③ 权限字符用横线表示空允许,r只读;w只写;x执行
# 权限参数说明:
① u (user)表示文件/目录的拥有者
② g (group)表示与该文件的拥有者属于同一个群体(group)者
③ o (others)表示其他以外的人
④ a (all)表示这三者皆是
# 其他参数说明:
① -c 若该文件权限确实已经更改,才显示其更改动作
② -f 若该文件权限无法被更改也不要显示错误讯息
③ -R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
# 权限范围说明:
① r 读权限,用数字4表示
② w 写权限,用数字2表示
③ x 执行权限,用数字1表示
④ - 删除权限,用数字0表示
两种设定权限方案:
① 文字设置法(符号模式) chmod [who] [+|-|=] [mode] 文件名称
+ 给指定的用户类型增加权限
- 删除指定用户类型的权限
= 设置指定用户权限的设置,即将用户类型的所有权限重新设置
② 数字设置法(八进制语法) chmod [mode] 文件名
0表示没有权限;1表示可执行权限;2表示可写权限;4表示可读权限;然后将其相加
所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和;rwx ,也就是 4+2+1 = 7
用户组的权限用数字表达:属组的那个权限位数字的相加的总和; rw- ,也就是 4+2+0 = 6
其它用户的权限数字表达:其它用户权限位的数字相加的总和; r-x ,也就是 4+0+1 = 5
#语法格式: chmod [-cfvR] [--help] [--version] mode file...
示例1:增加文件所有用户组可执行权限
➜ test_4 ls -al
-rw-r--r-- 1 amu admin 16 5 18 13:18 log2021.txt
➜ test_4 chmod a+x log2021.txt
➜ test_4 ls -al
-rwxr-xr-x 1 amu admin 16 5 18 13:18 log2021.txt
# 说明:
给文件增加所有用户属主可执行权限
示例2:删除文件权限
➜ test_4 ls -la log2021.txt
-rwxr-xr-x 1 amu admin 16 5 18 13:18 log2021.txt
➜ test_4 chmod a-x log2021.txt
➜ test_4 ls -ll log2021.txt
-rw-r--r-- 1 amu admin 16 5 18 13:18 log2021.txt
# 说明:
删除所有用户的可执行权限
示例3:对一个目录及其子目录所有文件添加权限
➜ weixin ls -al test_4
lrwxr-xr-x 1 amu admin 11 5 18 13:05 link2021 -> log2021.txt
-rw-r--r-- 1 amu admin 0 5 18 13:05 ln2021
-rw-r--r-- 1 amu admin 16 5 18 13:18 log2021.txt
➜ weixin chmod -R a+x test_4
➜ weixin ls -al test_4
lrwxr-xr-x 1 amu admin 11 5 18 13:05 link2021 -> log2021.txt
-rwxr-xr-x 1 amu admin 0 5 18 13:05 ln2021
-rwxr-xr-x 1 amu admin 16 5 18 13:18 log2021.txt
# 说明:
递归地给test_4目录下所有文件和子目录的属主分配权限
3.3.1 查看文件大小du -xx
命令
概述:Linux du(英文全拼:disk usage
)用于显示每个文件和目录的磁盘使用大小
参数说明:
① -a (-all)显示目录中个别文件的大小
② -b (-bytes)显示目录或文件大小时,以byte为单位
③ -c (--total)除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
④ -h (--human-readable)以K,M,G为单位,提高信息的可读性
⑤ -m (--megabytes)以1MB为单位
⑥ -s (--summarize)仅显示总计
⑦ --max-depth=<目录层数> 超过指定层数的目录后,予以忽略
#语法格式: du [-abch] [文件]
示例1:显示目录或者文件所占空间
➜ weixin du
............. -- 省略一点
2264 ./amu
0 ./test_3
8 ./test_4
0 ./test_2
2288 .
# 注意:
只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的2288为当前目录的总大小
示例2:显示指定文件所占空间
➜ weixin du test_4/log2021.txt
8 test_4/log2021.txt
示例3:文件和目录都显示
➜ weixin du -ah test_4
4.0K test_4/log2021.txt
0B test_4/ln2021
0B test_4/test444
0B test_4/link2021
4.0K test_4
示例4:按照占用磁盘空间大小排序显示
2288 .
2264 ./amu
200 ./amu/redis
56 ./amu/redis/geohash
48 ./amu/redis/currentlimiting
8 ./test_4
示例5:输出当前目录下各个子目录所使用的空间
➜ weixin du -sh --max-depth=1
1K ./amu
0 ./test_4
0 ./test_3
3.3.2 查看文件类型file
命令
概述:Linux file 用于辨识文件类型
参数说明:
① -b 列出辨识结果时,不显示文件名称
② -c 详细显示指令执行过程,便于排错或分析程序执行的情形
③ -f 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称
#语法格式: file [操作] [文件或目录...]
示例1:显示文件类型
➜ weixin file log.log
log.log: UTF-8 Unicode text
➜ weixin file -b log.log -- 不显示文件昵称
UTF-8 Unicode text
➜ weixin file -i log.log
log.log: regular file
➜ weixin file -b -i log.log
regular file
最后总结
其实linux指令看上去是挺多的,但是实际上按模块整理下再操作一遍,还是很容易理解的。上面这些只是按照功能划分了一小部分,记得没事就要多用用哦,俗话说:“熟能生巧”;阿沐准备在写redis相关文章的基础上;每天来一篇linux指令的使用介绍(工作中经常使用的指令)。go ⛽️ ⛽️ ⛽️