文章目录
- 一、指令构成
- 二、具体指令
最近,公司需要将一台运行着CentOS(Linux的一个发行版本,通常用于企业服务器)的服务器上的数据迁移到另一台新设备上,虽然以前也基本系统学过Linux的指令,但当时并没有系统的记录和梳理,所以,借着这次机会,好好把常用的指令记录、梳理一下。
一、指令构成
一条典型的Linux指令组成为:command [-option] [parameter]
。需要指出的是,[]
表示指令后的选项和操作对象均可选。
1. man
帮助命令
由于Linux的命令繁多,每个命令又有很多选项,因此Linux自带了man
命令,可以很方便地查询每个命令的对应选项和被操作对象的说明。
全称 | 含义 | 对象 |
---|---|---|
manual | Linux系统提供的参考手册 | 其他Linux命令,如:ls 、cd 等 |
一般通过man
命令查出来的指令帮助大致可分为:
NAME
:命令名称;SYNOPSIS
:命令格式;DESCRIPTION
:命令描述,选项和对象的详细使用方法在此部分介绍;AUTHOR
:作者;REPORTING BUGS
:报告bug;COPYRIGHT
:版本;SEE ALSO
:另见。
最重要的两部分分别为SYNOPSIS
和DESCRIPTION
。
1.1 如何阅读SYNOPSIS
下面以命令ls
的SYNOPSIS
为例,即:
ls
[OPTION]...
[FILE]...
再结合下面的具体命令:
root@ubuntu64:/usr# ls -ahsS --format=verbose /usr /home
/home:
total 12K
4.0K drwxr-xr-x 3 root root 4.0K Mar 2 23:17 .
4.0K drwxr-xr-x 18 root root 4.0K Mar 3 00:17 ..
4.0K drwxr-xr-x 2 william developer 4.0K Mar 2 23:17 william
/usr:
total 100K
40K drwxr-xr-x 2 root root 36K Mar 2 22:48 bin
16K drwxr-xr-x 2 root root 16K Mar 2 22:47 sbin
4.0K drwxr-xr-x 13 root root 4.0K Jan 28 14:58 .
4.0K drwxr-xr-x 18 root root 4.0K Mar 3 00:17 ..
4.0K drwxr-xr-x 2 root root 4.0K Apr 15 2020 games
4.0K drwxr-xr-x 35 root root 4.0K Jan 28 15:07 include
4.0K drwxr-xr-x 73 root root 4.0K Mar 2 22:46 lib
4.0K drwxr-xr-x 2 root root 4.0K Apr 23 2020 lib32
4.0K drwxr-xr-x 2 root root 4.0K Jan 28 15:06 lib64
4.0K drwxr-xr-x 2 root root 4.0K Apr 23 2020 libx32
4.0K drwxr-xr-x 11 root root 4.0K Jan 28 15:11 local
4.0K drwxr-xr-x 116 root root 4.0K Jan 28 15:07 share
4.0K drwxr-xr-x 8 root root 4.0K Mar 2 22:47 src
其中:
ls
:命令缩写;-ahs --format=single-column
均为选项:-a
: 等价于--all
,表示列出所有文件,包括隐藏文件;-h
:等价于--human-readable
,表示以较为可读的方式列出文件的大小;-s
:等价于--size
,表示打印出文件大小;-S
:按文件大小排序,从大到小;--format
:指定打印显示的格式。
/usr
:命令操作对象,这里是根目录的/
下的usr
文件夹。
命令ls
的SYNOPSIS
含义如下:
格式 | 含义 | 举例 |
---|---|---|
粗体 | 原样输入终端 | 如上述命令中ls 直接输入 |
斜体 1 | 用合适参数代替 | 如上述命令中分别用选项-ahsS --format=verbose 和文件路径代/usr 替OPTION 和FILE |
[-abc] | [] 中的参数均可选 | 如上述命令中,选项均可省略,文件路径也可以省略(此时默认为当前路径) |
-a|-b | | 两边的选项不能同时指定 | 无 |
argument ... | 可指定多个参数 | 如上述命令中,选项和对象均为多个 |
[ expression ] ... | [] 中的整个部分均可为多个 | 无 |
1.2 如何阅读DESCRIPTION
2
命令选项的指定一般有三种方式:
- 短选项:也叫UNIX格式选项,使用方法是
-
后面加单个字符,如上述-a
、-h
、-s
和-S
,需要注意的是选项的两种写法:-ahsS
和-a -h -s -S
是等价的; - 长选项:也叫GNU格式长选项,使用方法是
--
后面加字面词,如:--format=verbose
、--all
、--human-readable
、--size
; - BSD格式选项:命令后面加上单个字符。
值得注意的是,基本在所有情况下,长选项、短选项、BSD选项三者可以相互替换与混用,如:
-a
等价于--all
;-h
等价于--human-readable
;-s
等价于--size
--format=verbose
等价于-l
。
2. 其他帮助命令
除了man
以外,还可以用help
通过如下两种方式来查看命令的帮助文档;
- 内部命令3:
help
command
,如:cd
命令;- 外部命令:
command
--help
,如:ls
命令。
如果需要区分某条命令是否为内部命令,可以使用type
命令来确定,如:
root@ubuntu64:~# type cd
cd is a shell builtin
root@ubuntu64:~# type ls
ls is aliased to `ls --color=auto'
二、具体指令
1. ls
(查看文件或文件夹)
1.1 基本使用
全称 | 含义 | 选项 | 对象 |
---|---|---|---|
list | 以列表形式显示路径下的文件(夹) | -l :以列表形式显示-a :显示隐藏文件-h :以可读性较高的方式显示 | 路径 |
需要注意的是:
- 如选项
-a
所暗示的,Linux中也有隐藏文件(夹),实际上,Linux中的隐藏文件均是以.
开头; - 所有路径下都包含两个默认目录,即.表示当前目录,
..
表示上一级目录。
另外,当使用ls -lh
时,会以更可读的方式显示文件(夹)列表,所谓更可读是指:当文件(夹)大小超过1024KB时,用MB表示;超过1024MB时,用GB表示,以此类推。此外,计算机中其他表示文件大小的单位还有:
单位 | 全称 | 含义 |
---|---|---|
兆字节 | MegaByte | 1MB = 1024KB,百万字节 |
千兆字节 | GigaByte | 1GB = 1024MB,十亿字节 |
太字节 | TeraByte | 1TB = 1024GB,万亿字节 |
拍字节 | PetaByte | 1PB = 1024TB,千万亿字节 |
艾字节 | ExaByte | 1EB = 1024PB,百亿亿字节 |
泽字节 | ZettaByte | 1ZB = 1024EB,十万亿亿字节 |
尧字节 | YottaByte | 1YB = 1024ZB,一亿亿亿字节 |
1.2 配合通配符使用
ls
支持的常用通配符包括:
通配符 | 含义 |
---|---|
* | 代表任意个数个字符 |
? | 代表任意一个字符 |
[] | 表示匹配字符组中的任意一个 |
[abc] | 代表匹配a 、b 、c 中的任意一个 |
[a-f] | 代表匹配从a 到f 范围内的任意一个字符 |
如:
ls 1*
表示查找显示当前路径下所有以1开头的文件ls *1.txt
表示查找显示当前路径下所有以1结尾的txt文件ls ?1?.txt
表示查找显示当前路径下所有文件名为三个字符的txt文件,且该文件的文件名第二个字符是1ls [12345]23.txt
表示查找显示当前路径下(如果存在)123.txt
、223.txt
、323.txt
、423.txt
、523.txt
2. pwd
(显示当前工作路径)
全称 | 含义 |
---|---|
print working directory | 显示当前工作目录的路径 |
3. cd
(切换工作目录)
3.1 基本使用
全称 | 含义 | 对象 |
---|---|---|
change directory | 切换当前工作目录 | 文件夹路径 |
3.2 其他使用
命令 | 含义 |
---|---|
cd ~ | 切换到当前用户的主目录(/home/ 用户目录) |
cd . | 保持在当前目录不变 |
cd . . | 切换到上级目录 |
cd - | 在最近两次工作目录之间切换 |
4. mkdir
(创建文件夹)
全称 | 含义 | 选项 | 对象 |
---|---|---|---|
make directory | 创建目录 | -p :一次性创建多层不存在的文件夹 | 文件夹路径 |
需要注意的是,在Linux中的当前工作目录下,新建目录的名称不能与当前目录中已有的目录或文件同名。
5. touch
(创建文件)
全称 | 含义 | 对象 |
---|---|---|
touch | 在制定位置创建文件 | 文件路径 |
需要注意的是,当计划创建的文件已经存在,可以修改文件的末次修改时间。
6. tree
全称 | 含义 | 选项 |
---|---|---|
tree | 以树形结构显示当前路径的文件(夹) | -d :仅显示文件夹(目录) |
7. cp
(复制文件或文件夹)
全称 | 含义 | 选项 | 对象 |
---|---|---|---|
copy | 复制文件(夹) | 1. -r :以递归方式复制指定目录下的所有子目录和文件,目标文件必须为一个目录名2. -i :覆盖文件前进行提示 | 源文件(夹)路径 目标文件(夹)路径 |
8. mv
(移动或重命名)
全称 | 含义 | 选项 | 对象 | 备注 |
---|---|---|---|---|
move | 1.剪切、粘贴文件(夹) 2.文件(夹)重命名 | -i:覆盖前提示 | 源文件(夹)路径 目标文件(夹)路径 | 当使用该命令是,既指定了源文件路径,又指定了目标文件路径一致时,该命令等同于剪切、粘贴、重命名或同路径重命名 |
9. rm
(删除文件或文件夹)
全称 | 含义 | 选项 | 对象 |
---|---|---|---|
remove | 删除文件(夹) | 1. -r :以递归方式删除文件(夹)2. -f :强制删除,忽略不存在的文件(夹),无需提示 | 文件(夹) |
值得注意的是, rm
命令也支持类似如2.1.2所示的通配符操作。
如果想要删除某目录下除了指定文件以外的所有文件,可以使用类似如下的语法:
# 删除当前目录下除了$file1和$file2的所有文件
rm -rf !($file1|$file2)
10. 重定向
一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符,通过重定向可以改变进程默认输入和输出的文件:
符号 | 含义 | 对象 |
---|---|---|
< | 针对标准输入进行重定向 | 文件 |
> | 针对标准输出进行覆盖重定向 | 文件 |
>> | 针对标准输出进行追加重定向 | 文件 |
2> | 针对标准错误输出尽心重定向 | 文件 |
&> | 针对标准输出或错误输出进行重定向 | 文件 |
root@ubuntu64:~# wc -l < /etc/passwd
31
root@ubuntu64:~# read var < /etc/passwd
root@ubuntu64:~# echo $var
root:x:0:0:root:/root:/bin/bash
root@ubuntu64:~# echo $var > output.txt
root@ubuntu64:~# cat output.txt
root:x:0:0:root:/root:/bin/bash
root@ubuntu64:~# echo $var >> output.txt
root@ubuntu64:~# cat output.txt
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root@ubuntu64:~# nocmd 2> error.txt
root@ubuntu64:~# cat error.txt
Command 'nocmd' not found, did you mean:
command 'nxcmd' from deb libnxcl-bin (0.9-3.1ubuntu4)
Try: apt install <deb name>
12. echo
(文字内容)
echo
会在终端中显示参数指定的文字,通常会和重定向命令一起使用。
13. cat
(合并且打印文件)
全称 | 含义 | 选项 | 对象 | 备注 |
---|---|---|---|---|
catenate | 1.直接在终端打开一个文件; 2.合并多个文件 | -b :对非空输出行编号-n :对所有输出行进行编号 | 1.文件路径 2.待合并文件1路径 待合并文件2路径 … | 一般cat 命令用来合并文件时和重定向命令结合使用 |
14. head
(输出文件的第一部分)
NAME | SYNOPSIS | DESCRIPTION |
---|---|---|
head | head [ OPTION ]... [ FILE ]... | 将每一个FILE 的前10行打印至标准输出,当FILE 不止一个时,在每一个前面添加其名称作为标题。长选项的必需参数对于短选项也是必需的。 |
[
OPTION
]
典型取值:
-n
,等价于--lines=[-]NUM
:打印前NUM
行而非前10行;当选择指定-
时,打印每一个文件中除最后NUM
行的所有内容。
下面通过一个案例解释长选项的必需参数对于短选项也是必需的这句话的含义:
- 首先,通过长选项
--lines
仅打印/etc/ucf.conf
文件的前8行命令如下:
root@ubuntu64:~# head --lines=8 /etc/ucf.conf
#
# This file is a bourne shell snippet, and is sourced by the
# ucf script for configuration.
#
# Debugging information: The default value is 0 (no debugging
# information is printed). To change the default behavior, uncomment
# the following line and set the value to 1.
- 其次,由于此时使用长选项
--lines
时NUM
必须指定为8,因此使用对应短选项-n
时,也必须指定,如下:
root@ubuntu64:~# head -n8 /etc/ucf.conf
#
# This file is a bourne shell snippet, and is sourced by the
# ucf script for configuration.
#
# Debugging information: The default value is 0 (no debugging
# information is printed). To change the default behavior, uncomment
# the following line and set the value to 1.
15. more
(显示文件)
全称 | 含义 | 对象 |
---|---|---|
more | 在终端直接显示文件 | 文件路径 |
可以看出命令cat
和more
均可以直接在终端查看文件内容,但:
more
命令可以用于分屏显示文件内容,每次显示一页内容,因而适合于查看内容较多的文本文件;cat
命令会一次显示所有的内容,适合查看内容较少的文本文件;- 另外,使用
more
命令后还支持下列操作键:
操作键 | 功能 |
---|---|
空格键 | 显示下一屏 |
Enter | 一次滚动一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
16. find
(查找文件或目录)
全称 | 作用 | 选项 | 对象 | 备注 |
---|---|---|---|---|
find | 用于查找文件 | 1. -name :根据名称搜索2. -type :根据类型搜索 | 路径 | 当使用-type 选项时,其后只能指定f(ile) 或d(irectory) |
如:
find / -name "*.conf" | wc -l
表示统计根目录下.conf
文件的总数量。
如:find / -type d | wc -l
表示统计根目录下所有文件夹的总数量。
17. ln
(建立文件链接)
软/硬链接概念
在Linux中存在软/硬链接的概念,为了理解二者的含义,需要明确的是:
- 首先,在Linux中,文件名和文件的数据是分开存储的;
- 其次,文件名是地址的别名(便于人记忆);
- 最后,在计算机中,地址是以十六进制
0x
形式开头。
基于这三点,结合下图,可知:
对于软链接:
- 软链接文件名是地址
0x1004
的别名; - 该地址处存储的数据是软链接文件数据的地址
0x1003
; - 该地址存储了被链接文件名所代表的地址
0x1002
; - 而这一地址处又保存了文件数据的存储地址
0x1001
; - 最后通过该地址即可找到被链接文件的数据。
由此可知:
软链接通过文件名间接访问文件数据,如果将文件名删除,该访问链条将被切断,则无法再访问到文件数据。另外,可以将软链接简单理解为Windows操作系统中的快捷方式。
对于硬链接,其和文件名平起平坐,即使删除文件名,由于硬链接文件名所代表的的地址处存储了文件数据的地址,因此还是可以访问文件数据。

建立链接命令
全称 | 作用 | 选项 | 对象 |
---|---|---|---|
link | 建立文件链接 | -s :建立被链接文件的软链接不指定选项时,创建的是硬链接 | 以绝对路径方式(使用相对路径创建的软链接在被移动至别的目录后,将失效)给出的源文件 待制定的软链接名 |
18. tar
(文件打包)
全称 | 作用 | 选项 | 对象 |
---|---|---|---|
tape archive | 文件打包 | -z :调用gzip 命令,等价于--gzip ,--gunzip ,--ungzip ;-j :调用bzip2 命令,等价于--bzip2 ;-c :生成档案文件,等价于--create ;-v :列出归档/解档的详细过程,显示进度,等价于--verbose ;-x :解开档案文件,等价于--extract ,--get ;-f :指定打包档案名称,f 后面一定是.tar 文件,该选项必须放最后,其他选项顺序无要求,等价于--file= ARCHIVE ;-C :等价于--directory= DIR 。 | 打包文件.tar 被打包的文件(夹)路径 |
打包命令举例:
tar -cvf etc.tar /etc
表示将根目录/
下的etc
中的所有文件打包为一个etc.tar
文件。- 更进一步地,如果希望打包的同时压缩文件,可以使用命令:
tar -zcvf etc.tar.gz /etc
,或者:tar -jcvf etc.tar.bz2 /etc
。
解包命令举例:
tar -xvf etc.tar
表示将etc.tar
文件解包至当前目录;- 同样更进一步地,如果希望解压缩文件后解包,可以使用命令:
tar -zxvf etc.tar.gz
- 再进一步,如果希望解压缩文件后,在解包的同时制定解包路径,可以使用命令:
tar -zxvf etc.tar.gz -C
path
,或者:tar -jxvf etc.tar.bz2 -C
path
。
18. gzip/bzip2
(文件解压缩)
全称 | 作用 | 选项 | 对象 |
---|---|---|---|
GNU zip | 压缩/解压缩文件 | -z :压缩/解压缩文件 | 打包文件.tar.gz 被压缩的打包文件路径 |
bzip2 | 压缩/解压缩文件 | -j :压缩/解压缩文件 | 打包文件.tar.bz2 被压缩的打包文件路径 |