命令以字典序排序,
"[]"
包围的是可选项,"<>"
包围的是必选项,同时选项并非全部列出,只列举了较常用的。文中提到的文件包含目录,因为在 Linux 下一切皆文件。
cat
concatenate
的缩写,将文件打印至标准输出设备,默认为屏幕(其实大部分输出都可以指向文件,只是 cat
对这个功能的使用更加频繁)。
# 使用 > 覆盖目标文件的内容
# 使用 >> 追加至目标文件,多个文件时需要使用 >> 来追加,否则目标文件中只有最后一个文件的内容
# ... 表示多个文件并用空格分隔
cat [选项] <源文件...> [> 目标文件]
选项 | 功能 |
---|---|
省略 | 将文件输出 |
-n |
同上,同时对行从 1 开始进行编号 |
-b |
同上,但不对空白行编号 |
-s |
同 -n ,但会将多个连续的空行替换为一个空行 |
cd
change directory
的缩写,Linux 下最为常用的命令之一,用于切换到指定目录。
cd [选项] [目标目录]
选项 | 功能 |
---|---|
-P |
如果目标目录是一个软连接,则跳转到软连接所指的目录 |
-L |
如果目标目录是一个软连接,则跳转软连接名所在的目录 |
特殊参数 | 使用 ls -a 命令可以看到除几乎所有目录都有 . 和 .. 两个目录文件 |
---|---|
省略或者 ~
|
切换至家目录(/home/username 或 /root ) |
. |
当前目录 |
.. |
上一级目录 |
/ |
根目录 |
- |
上一次的目录 |
.
目录存在的意义是为了执行当前目录下的可执行文件,因为直接输入文件名会在环境变量 PATH
中的目录中查找,而不会在当前目录下查找(除非把 .
目录添加进了 PATH
,但是极不推荐这种做法)。
chgrp
change group
的缩写,更改文件群组。
chgrp [选项] <群组> <目标文件...>
选项 | 功能 |
---|---|
-R |
递归处理目录下所有文件 |
chmod
change mode
的缩写,更改文件的权限,多个权限表达式使用逗号分隔(从左至右按顺序生效)。
chmod [user][operator]<authority> <目标文件...>
用户分类 | 含义 |
---|---|
省略或a
|
所有用户 |
u |
文件拥有者 |
g |
群组用户 |
o |
其他用户 |
权限操作 | 含义 |
---|---|
+ |
添加权限 |
- |
移除权限 |
= |
设定为相应权限 |
权限 | 含义 |
---|---|
r |
读权限 |
w |
写权限 |
x |
可执行权限 |
为了方便,设定某个文件权限时可以用三个数字来替代 =
表达式,规则如下:
- 权限
r
数字为4
,w
为2
,x
为1
(二进制中的三位),故0-7
可以表示所有权限组合 - 三个数字从左至右分别表示
u
、g
、o
用户
chmod 744 test
chmod a=r,u+wx test
上方两条命令等价
chown
change owner
的缩写,更改文件拥有者(也可以更改群组)。
chown [选项] <文件拥有者>[:群组] <目标文件...>
注意:拥有者不一定要在群组内!
选项 | 功能 |
---|---|
-R |
递归处理目录下所有文件 |
cp
copy
的缩写,拷贝文件。
cp <源文件> <目标文件>
文件名不需要相同,相当于将数据拷贝过去然后重命名。
grep
Global Regular Expression Print
的缩写,查找内容中匹配正则表达式的字符串,并将该行(我称为“命中行”)打印至标准输出,常与其他命令联合使用(使用 |
分隔,并将前一条命令将要打印的字符串作为 grep
命令查找的内容)。
grep [选项] [匹配样式] [目标文件...]
选项 | 功能 |
---|---|
-a |
不忽略二进制数据 |
-A <行数> |
打印命中行及之后的指定行 |
-b |
打印命中行首字符在内容中的编号(即在内容中的第几个字符) |
-B <行数> |
打印命中行及之前的指定行 |
-c |
打印命中的行数 |
-C <行数> |
打印命中行及其前后的指定行 |
-e <表达式> |
指定正则表达式,在参数较多时避免混淆,一般可省略 |
-E <表达式> |
指定正则表达式,并作为延伸的正则表达式使用 |
-f <表达式文件> |
文件可以有多行,每行为一个正则表达式,匹配文件中所有行才算命中(不需要是同一个字符串) |
-i |
忽略大小写 |
-I |
打印有内容命中的文件名 |
-L |
打印内容未命中的文件名 |
-v |
打印未命中的所有行 |
ln
link
的缩写,创建文件的连接,分为硬连接 hard link
和软连接(符号连接) symbolic link
,其区别为:
硬连接 | 软连接 |
---|---|
以文件副本形式存在,但不占用空间(起个别名) | 以文件路径形式存在(类似 Windows 下的快捷方式) |
只能在同一文件系统下 | 可以跨文件系统 |
目标文件必须存在 | 可以对一个不存在的文件名进行链接(无效的快捷方式?) |
不可以指向目录 | 可以指向目录 |
ln [选项] <源文件> <目标文件>
选项 | 功能 |
---|---|
-b |
覆盖以前的连接 |
-d |
允许 root 用户创建目录的硬连接 |
-s |
创建软连接 |
-n |
将软连接视为一般目录 |
创建软连接请尽量使用绝对路径,如果使用相对路径,则连接文件被移动后可能失效,或者指向一个错误的文件。
ls
list
的缩写,Linux 下最为常用的命令之一,用于显示指定目录下的文件,省略目录时指定当前目录。
ls [选项] [目标目录]
常用选项 | 功能 |
---|---|
省略 | 同 -C
|
-a |
同上,但额外显示隐藏文件 |
-A |
同上,但不显示 . 和 .. 目录 |
-C |
按行打印非隐藏文件名,行内显示不下会换行 |
-h |
与 -l 一起使用,含义为“人性化显示”,大小以单位 KB 显示(默认 Byte ) |
-l |
以列表打印文件的详细信息,格式如下<br />类型 | 权限 | 硬连接数 | 所有者 | 组 | 大小 | 最后修改日期 | 文件名 |
-t |
按时间降序排序(越近的排在越前面) |
类型 | 含义 |
---|---|
- |
普通文件 |
d |
目录文件 |
p |
管理文件 |
l |
连接文件 |
b |
块设备文件 |
c |
字符设备文件 |
s |
套接字文件 |
硬连接数 | 含义 |
---|---|
普通文件 | 连接数 |
目录文件 | 第一级子目录个数 |
mkdir
make directory
的缩写,创建目录。
mkdir [选项] <目标目录...>
选项 | 功能 |
---|---|
-p |
递归创建:当目标目录的上级目录没有创建时先创建上级目录 |
-m <参数> |
指定目录文件的权限(默认为 755 ) |
mv
move
的缩写,移动文件。
mv <源文件> <目标文件>
重命名文件的命令也是它。
rm
remove
的缩写,删除文件。
rm [选项] <目标文件...>
选项 | 功能 |
---|---|
-r |
递归删除:删除目录下的所有文件,同时也用来删除目录文件 |
-f |
强制删除:忽略所有提示与询问(rm -rf / 😎,这条指令在 CentOS 7 下依然会有提示) |
stat
status
的缩写,显示文件的 inode
内容。
stat <目标文件>
输出如下:
File: ‘testfile’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 393266 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-05-13 21:54:39.719866244 +0800
Modify: 2020-05-13 21:54:39.719866244 +0800
Change: 2020-05-13 21:54:39.719866244 +0800
Birth: -
touch
修改文件的属性,如果文件不存在则创建(常用于创建文件)。
touch [选项] <目标文件...>
选项 | 功能 |
---|---|
省略 | 修改文件时间为当前系统时间 |
-c |
如果文件不存在,则不创建(即只修改文件属性) |
-a |
只修改 atime
|
-m |
只修改 mtime
|
-d |
修改为指定时间,格式 [YY]YYMMDD ,YY 时间限定为 1969-2068
|
-t |
修改为指定时间,格式 [YY]YYMMDDhhmm[.SS] ,注意这个 .
|
时间参数 | 含义 |
---|---|
Access Time ( atime ) |
访问时间:文件的内容被读取时,访问时间更新 |
Modify Time ( mtime ) |
数据修改时间:文件的内容数据发生变化时,数据修改时间更新 |
Change Time ( ctime ) |
状态修改时间:文件的状态(权限等)发生变化时,状态修改时间更新<br />无法使用 touch 指令更改为指定时间(每次 touch 都会更新它为系统时间) |