1、常用文件查找和定位命令
1.1、pwd 命令
pwd 是 print working directory 的缩写,该命令用于显示用户当前所在的工作目录,工作目录的概念类似于在 Windows 中的当前文件夹。
注意命令提示符中当前工作目录的变化。
1.2、cd 命令
cd 是 change directory 的英文缩写,该命令用于改变当前的工作目录,这个动作相当于Windows 中的打开文件夹。其语法格式为:“cd [选项] [目录]
”
以下几种比较特殊且常用的切换命令:
- cd -:返回到上一次所在的目录,相当于 Windows 文件夹中的后退操作。
- cd …:切换到上级目录,相当于 Windows 文件夹中的向上操作。
- cd ~:切换到当前用户的家目录,相当于 Windows 中的打开“我的文档”操作。
- cd ~username:切换到指定用户 username 的家目录。
- cd .:一个点表示当前目录,执行该命令不会有任何变化。
1.3、 ls 命令
ls 是英文单词 list 的缩写,该命令用于显示指定目录中的文件信息,语法格式为:ls [选项] [文件名称]
常用选项及含义:
选项 | 含义 |
---|---|
-a | 显示全部文件(包括隐藏文件) |
-d | 显示指定目录的信息 |
-h | 以人性化格式显示文件大小,如 1K,2G |
-i | 显示 inode 信息 |
-l | 显示文件的属性和大小等详细信息 |
-Z | 显示安全上下文 |
图中命令用于显示当前工作目录下的所有文件的详细信息
图中命令则用于显示指定文件~/.bashrc 的详细信息
Linux 系统中以点(.)开头的文件表示隐藏文件,这些文件大多数为系统服务文件。
图中命令以人性化格式显示指定目录/etc的详细信息。
1.4、find 命令
find 命令用于查找文件,常用语法格式为:“find [查找点] 表达式
”。
find 命令可以使用不同的文件特性作为寻找条件(比如文件名、大小、修改时间、权限等信息)在指定的目录中查找,并将查找到的信息默认显示到屏幕上。
在查找文件时,还可以使用通配符星号(*)和问号(?)来进行模糊查找。
命令常用选项及含义:
项目 | Value |
---|---|
-name | 指定查找的文件名称 |
-user | 指定文件的属主 |
-size | 指定文件大小(如+6KB 表示大于 6KB,-6KB 则表示小于 6KB) |
-exec …… {}\; | 将搜索结果交由-exec 后的命令作进一步处理 |
图中命令是找出/etc 目录中所有以 host 开头的文件
图中命令是在/home/zhangsan 目录中找出所有属于用户zhangsan 的文件,并将找到的文件复制到/tmp/目录中
命令中的“{}”可以认为是一个占位符,表示要复制的文件,选项-a 表示 all,连同文件属性一并复制,命令必须以“;”结尾,且前面有空格。
1.5、locate 命令
locate 命令用于定位文件所在的位置,语法格式为:“locate 文件名称
”。
与 find 命令类似,locate 命令也可以找出文件所在的位置,但 locate 命令的效率更高一些,适用于在整个文件系统中模糊查找文件的场景。
在使用 locate 命令之前,建议先执行 updatedb 命令生成或更新索引数据库,特别是本系统第一次使用该命令。
1.6、whereis 命令
whereis 命令适用于搜索指定命令的二进制程序、源代码以及帮助手册文件的位置,常用语法格式为:“whereis [选项] 命令名称
”
如图所示当只需要查看命令的二进制程序的位置时,则可以使用选项-b。
1.7、which 命令
which 命令用于快速查找指定命令程序所在位置,功能与命令“whereis -b”相同,常用语法格式为:“which 命令名称
”。
find 和 locate 是找出所有满足条件的文件,可能存在同名文件,但 find 需要指定在哪里找,而 locate是在整个文件系统中查找,而且基于索引库搜索,效率更高。
whereis 命令用于查找 Shell命令的可执行程序、源代码和帮助文件位置,不可能存 在同名文件。
which 命令专门用于查找 Shell命令的可执行程序所在的位置,也不可能存在同名 文件,但与 whereis 不同,它不关心源代码和帮助文件。
2、常用文本文件内容查看命令
2.1、cat 命令
cat 是英文单词 concatenate 的简写,该命令用于查看文件的内容,常用语法格式为:“cat [选项] 文件名
”。
cat 命令适用于内容较少的文件,即无需翻页,一屏就能展现完的文件。对于长文件,cat 命令只展示最后一屏的内容。
2.2、more 与 less 命令
more 命令也可用于查看文件内容,语法格式为:more [选项] 文件名
。
more 命令适用于内容较多的、特别需要翻页的长文本文件。对于长文件,more 命令会分屏展示文件内容,使用空格键向下翻页,按 q 键结束,但不能向上翻页。
less 命令与 more 相似,可以使用 PageDown 和 PageUp 键向下和向上翻页,比 more 命令更灵活。
2.3、head 与 tail 命令
顾名思义,head 命令用于查看文件内容的前若干行,常用语法格式为:“head [选项] 文件名
”。
tail 命令用于查看文件内容的最后若干行,常用语法格式为:“tail [选项] 文件名”。
这两个命令的常用选项-n 均用来指定要显示的行数
tail 命令非常适合持续显示更新的文件的最新内容,比如日志文件。选项-f 用于显示最近一次更新的内容,按组合键 Ctrl+C 终止查看。
2.4、gedit 命令
gedit 是 Linux 下的基于 GNOME 的纯文本编辑器,类似于 Windows 下的记事本程序,在介绍 vim 文本编辑器之前,可以用该命令查看和编辑文本文件。
直接运行 gedit 命令,将以图形界面打开并创建一个空白的文本文件,若指定文件,则打开并显示该文本文件内容。
2.5、tr 命令
tr 是英文单词 translate 的缩写,该命令用于从标准输入接收字符串,然后将指定的旧字符删除或者替换成指定的新字符,最后在标准输出显示。常用语法格式为:tr [选项] [旧字符集] [新字符集]
例如,将/root 目录下的文件 initial-setup-ks.cfg 中的所在小写字母替换成大写字母,则相应的命令为 cat initial-setup-ks.cfg | tr [a-z] [A-Z]
如图所示,其中[a-z]表示小写字母集合,[A-Z]则表示大写字母集合。
图中命令的含义是先用 cat 命令打开指定的文件,并将文件内容通过管道符“|”传给命令 tr,由 tr 命令完成后面指定的字符替换工作。
2.6、wc 命令
wc 是 word counts 的缩写,该命令用于统计指定文本文件的行数、字符数或字节数,语法格式为:wc [选项] 文件名称
wc 命令的常用选项及含义:
选项 | 含义 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
2.7、grep 命令
grep 命令是用途最为广泛的文本搜索匹配工具,主要用于找出所有满足条件的文本行。
常用语法格式为:grep [选项] 需匹配的字符串 文件名
grep 命令的常用选项及其含义:
项目 | Value |
---|---|
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 同时显示在原文件中的行号 |
-v | 反向选择,即显示所有不满足条件的行 |
-a | 将二进制文件作为文本文件来搜索 |
Linux 系统中的/etc/passwd 文件保存着当前系统的所有用户账号信息,用 cat命令可以查看这些账号信息,可以发现一些账号后面被为/sbin/nologin,这种标记意味着禁止该用户账号登录系统。可以使用 grep 命令找出所有有此标记的用户账号。
2.8、cut 命令
cut 命令则用于按列提取文本内容,其常用语法格式为:cut [选项] 文件名
/etc/passwd 文件中的数据项之间是用冒号(:)间隔的,每项所在的列就是一个字段,如同 Excel 表格中的一列,或者数据库中的一个字段
第 1 列的内容就是账号名称。
在 cut 命令中,常用选项包括-f 和-d,其中-f 用于指定要显示第几列,选项-d 用于指定数据项之间所使用的间隔符号。
2.9、diff 命令
diff 是英文单词 different 的简写,该命令用于按行比较文件之间内容的差异,常用语法格式为:“diff [选项] 文件 1 文件 2
”
diff 命令中,选项–brief 用于确认两个文件是否相同;选项-c 则详细比较出两个文件的哪些行不相同。
首先运行 gedit 命令打开图形文本编辑器,并依次编写和保存如图的 file_A 和 file_B 两个文件。
如下图所示。从图中可以看出,diff 命令是逐行对两个文件进行比较的,对于不同的行,各文件内容行前面用“!”标记。
用于文件比较的命令还有 comm 和 cmp,comm 命令用于对两个已排好序的文件逐行进行比较,cmp命令用于对两个文件逐字节进行比较。具体可参考帮助手册。
2.10、uniq 命令
uniq 是英文单词 unique 的缩写,该命令用于删除文本文件中连续的重复行,语法格式为: uniq [选项] 文件名称
运行 gedit 命令打开文本编辑器,并编写和保存如图所示的 file_C 文件。
接下来就可以利用 uniq 命令删除 file_C 文件中重复的连续行了,如图下图所示。从图中可以清晰看到,uniq 删除的是连续的重复行,对于不是连续的重复行则不起作用。
实际的文本内容并没有改变
2.11、sort 命令
sort 命令用于对文件文本内容按行进行排序,与 Excel 中的排序原理类似,语法格式为:sort [选项] 文件名
sort 命令的常用选项及其含义:
选项 | 含义 |
---|---|
-f | 忽略大小写 |
-b | 忽略前导空格 |
-n | 根据字符串数值进行比较 |
-r | 逆向排序 |
-u | 去除重复行 |
-t | 指定间隔符 |
-k | 根据指定 key 排序 |
运行 gedit 命令打开文本编辑器,并编写和保存如图所示的 file_D文件。
利用 sort 命令对 fruit 文件中的内容进行排序,如图下所示,使用选项-u 还可以删除重复的行,这一点注意对比 uniq 命令。
3、常用文件和目录管理命令
3.1、touch 命令
touch 命令用于创建空白文件或设置文件时间属性,语法格式为:touch [选项] 文件名
touch 命令的常见选项及其含义
选项 | 含义 |
---|---|
-a | 修改文件的读取时间(atime) |
-m | 修改文件内容的修改时间(mtime) |
-d | 同时修改 atime 与 mtime |
不使用选项时,touch 命令将创建一个空白文件。
图中命令及其功能简要介绍如下:
- 首先利用 touch 命令创建一个名为 newfile1 的文件。
- 利用 ls 命令查看该文件的属性信息,包括该文件的mtime,该时间记为 t0。
- 利用 echo 命令将信息输出到文件 newfile1 中。
- 利用 cat 命令查看文件内容。
- 再次查看文件属性信息,注意对比 mtime 的变化。
- 利用 touch 命令的选项-d 修改 mtime,将该时间修改为 t0。
- 最后再次查看文件的属性信息,注意 mtime 的变化。
修改文件的 mtime 是黑客入侵时的常规操作。
3.2、mkdir 命令
mkdir 是 make directory 的缩写,该命令用于创建空目录,语法格式为:mkdir [选项] 目录名称
在 mkdir 命令中,常用选项-p 递归创建多级目录,图中的 4 条命令简介如下:
- 在当前目录下创建一个名为 heibao 的目录
- 利用选项-p 在 heibao目录下递归创建 3 个嵌套的子目录。
- 利用 tree 命令查看 heibao目录的层次关系。
3.3、cp 命令
cp 是 copy 的缩写,该命令用于复制文件或目录,语法格式为:cp [选项] 源文件路径和名称 目标路径和名称
。
cp 命令的常用选项及含义
选项 | 含义 |
---|---|
-r | 递归持续复制(只用于目录) |
-a | 复制文件全部档案,包括权限和属性等 |
-f | 若存在同名文件,则直接覆盖且不给提示 |
-i | 若存在同名文件,则给予提示,默认选项 |
3.4、mv 命令
mv 是英文单词 move 的简写,该命令用于移动或重命名文件,语法格式为:“mv [选项] 源文件名 目标文件名
”
mv 命令的两个常用选项-f 和-i 与 cp 命令相同。
在同一目录内,对某文件执行 mv 操作其实就是重命名该文件。
- 创建file1
- 重命名
- 移动文件
3.5、rm 命令
rm 是英文单词 remove 的简写,该命令用于删除文件或目录,语法格式为:“rm [选项] 文件名称
”。
rm 命令的常用选项及含义:
选项 | 含义 |
---|---|
-f | 强制执行,不予询问确认 |
-i | 删除前询问是否确定删除 |
-r | 删除目录需要使用该选项 |
3.6、dd 命令
dd 命令可用于创建一个指定长度的文件,其语法格式如下:
dd if=参数值 1 of=参数值 2 count=参数值 3 bs=参数值 4
dd 命令中的参数及含义
参数 | 含义 |
---|---|
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“数据块”的大小 |
count | 设置要复制“数据块”的数量 |
图中的/dev/zero 是一个设备文件,该文件不占用系统存储空间,但可以提供无穷无尽的 0 数据。图中就是复制 6 个大小为 10MB 的数据块到一个名为 newfile1 的文件中。
dd 命令还可以用于转换文件或者磁盘备份与恢复。
3.7、file 命令
file 命令用于查看文件的类型,语法格式为:file [选项] 文件名
在 Linux 系统中,文本、目录、设备等都统称为文件,通过 file 可以查看指定文件的类型。
如图所示,可见 initial-setup-ks.cfg 是 ASCII 文本文件;/dev/zero 是特殊的字符设备文件;而/root 为目录文件。
3.8、tar 命令
tar 命令用于对文件进行打包压缩或解压,语法格式为:“tar 选项 文件名
”。
Linux 系统中主要使用的压缩格式有.tar、.tar.gz 或.tar.bz2 格式,这些格式大多由 tar 命令生成或解压。
tar 命令常用选项及含义
选项 | 含义 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-v | 显示压缩或解压的过程 |
-f | 指定压缩包文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
这个命令很重要,使用频率也很高,下面对其常用选项再作以下说明:
- -c:该选项用于创建压缩文件
- -x:该选项用于解压文件,-c 和-x 两个选项不能同时使用。
- -v:利用该选项可以动态显示压缩或解压的过程,推荐使用。
- -C:该选项用于将压缩包解压到指定的目录。
- -f:该选项必须放到选项的最后面,表示指定要压缩或解压的压缩包名。
对于初学者,记得并掌握以下两个命令即可解决大部分问题了。
(1)压缩命令:tar -czvf 压缩包名.tar.gz 要打包的目录或文件
(2)解压命令:tar -xzvf 压缩包名.tar.gz