一、线上查询及帮助命令
1.1 man
1.1.1 介绍
man 命令用于显示命令手册页面(manual pages),提供了关于命令、函数、系统调用等的详细文档和使用说明
.1.2 使用方法
man [选项] [命令或函数或系统调用]
1.1.3 参数详解
- -f:显示与指定关键字相关的手册页的简短描述。
- -K:搜索所有手册页中的关键字并显示相关的手册页。
- -S:指定要查看的手册页的章节。
- -w:显示手册页的位置(文件路径)而不是显示内容。
1.1.4 常见使用案例
1.1.4.1 查看命令的手册页
man ls
这会显示关于 ls 命令的手册页,包括用法、选项、参数等信息
1.1.4.2 查看系统调用的手册页
man 2 open
这会显示关于 open 系统调用的手册页
1.1.4.3 搜索所有手册页中的关键字
man -K keyword
这会搜索所有手册页中包含指定关键字的条目,并显示相关的手册页
1.1.4.4 指定要查看的手册页的章节
man -S 3 printf
这会显示关于 printf 函数的手册页,但只在第 3 章节中搜索
1.1.4.5 显示手册页的位置(文件路径)
man -w ls
这会显示 ls 命令手册页的文件路径,而不是显示内容
1.2 help
1.2.1 介绍
help 命令是 Bash shell 的内置命令,用于显示 shell 内置命令的简要帮助信息
1.2.2 使用方法
help [内置命令]
1.2.3 参数详解
[内置命令]:可选参数,用于指定要显示帮助信息的内置命令的名称
1.2.4 常见使用案例
1.2.4.1 显示所有内置命令的帮助信息
help
这会显示所有可用的内置命令,并提供简要的说明
1.2.4.2 显示特定内置命令的帮助信息
help cd
这会显示关于 cd 内置命令的帮助信息,包括命令的用法和说明
1.2.4.3 查看 help 命令自身的帮助信息
help help
这会显示关于如何使用 help 命令的帮助信息
1.2.4.4 使用管道和grep过滤命令列表
help | grep -E "true"
这会列出所有内置命令,并使用 grep 工具过滤出包含指定模式的命令
二、文件压缩及解压缩命令
2.1 tar
2.1.1 介绍
tar命令是Linux中用于压缩和解压文件或目录的命令
2.1.2 使用方法
tar [选项] 文件与目录
2.1.3 参数详解
-c:创建一个新的打包文件。
-x:从打包文件中提取文件。
-t:列出打包文件中的内容。
-z:通过gzip进行压缩或解压,生成.tar.gz文件。
-j:通过bzip2进行压缩或解压,生成.tar.bz2文件。
-v:在压缩或解压过程中显示详细信息。
-f:指定打包文件的名称。需要注意的是,在-f之后应紧接着指定文件名,不要再加其他参数。
-p:保持原文件的属性(如权限、时间戳等)。
-P:使用绝对路径进行压缩或解压。
-N:设定日期(yyyy/mm/dd),只有比指定日期更新的文件才会被打包或解压。
--exclude FILE:在打包过程中排除指定文件。
2.1.4 常见使用案例
2.1.4.1 创建一个新的打包文件
tar -cvf archive.tar directory_or_file
这将把指定的目录或文件打包成一个名为archive.tar的打包文件
2.1.4.2 从打包文件中提取文件
tar -xvf archive.tar
这将把archive.tar打包文件中的内容提取到当前工作目录下,并保留原有的目录结构
2.1.4.3 查看打包文件的内容
tar -tvf archive.tar
这将列出archive.tar打包文件中的所有文件和目录
2.1.4.4 使用gzip进行压缩
tar -czvf archive.tar.gz directory_or_file
这将把指定的目录或文件打包并压缩成一个名为archive.tar.gz的gzip压缩文件
2.1.4.5 使用bzip2进行压缩
tar -cjvf archive.tar.bz2 directory_or_file
这将把指定的目录或文件打包并压缩成一个名为archive.tar.bz2的bzip2压缩文件
2.2 unzip
2.2.1 介绍
unzip 命令是用于解压 .zip 压缩文件的常用工具
2.2.2 使用方法
unzip [选项] zip_file [file_to_extract]
2.2.3 参数详解
-d 目录:指定解压的目标目录。
-o:覆盖已存在的文件,不提示用户确认。
-j:只解压文件,不创建目录结构。
-l:列出压缩文件中的文件列表,而不解压。
-o:如果目标文件存在并且无法打开,则覆盖它。
-q:安静模式,不显示解压过程中的信息。
-P 密码:如果压缩文件有密码,使用这个选项来提供密码。
-u:只解压比目标目录中已存在的文件更新或更老的文件。
2.2.4 常见使用案例
2.2.4.1 解压 .zip 文件到当前目录
unzip archive.zip
2.2.4.2 解压 .zip 文件到指定目录
unzip archive.zip -d /path/to/directory
2.2.4.3 只列出 .zip 文件中的文件列表,不解压
unzip -l archive.zip
2.2.4.4 覆盖已存在的文件并解压
unzip -o archive.zip
2.2.4.5 解压 .zip 文件中的特定文件
unzip archive.zip file_to_extract
2.2.4.6 解压带有密码的 .zip 文件
unzip -P password archive.zip
2.3 gzip
2.3.1 介绍
gzip 是一个用于文件压缩和解压缩的工具,它使用 Lempel-Ziv 77 (LZ77) 算法和 Huffman 编码
2.3.2 使用方法
2.3.2.1 压缩文件
gzip [选项] 文件名
2.3.2.2 解压缩文件
gzip -d [选项] 压缩文件名
或者,使用 gunzip 命令来解压缩,它是 gzip 的解压缩版本
gunzip [选项] 压缩文件名
2.3.3 参数详解
-c:将压缩或解压缩后的内容输出到标准输出(stdout),而不是替换原始文件。
-d:解压缩文件。与 gunzip 功能相同。
-f:强制压缩或解压缩,即使目标文件已经存在。
-k:保留原始文件,即使压缩或解压缩成功。
-l:列出压缩文件的信息,而不是实际进行压缩或解压缩。
-n:不压缩已经压缩过的文件(即,如果文件已经是 .gz 格式,则不执行任何操作)。
-q:安静模式,不显示任何警告或错误信息。
-r:递归地压缩或解压缩目录中的所有文件。
-t:测试压缩文件的完整性,但不解压缩。
-v:详细模式,显示压缩或解压缩过程中的文件信息。
-#:指定压缩级别,其中 1 表示最快但压缩率最低,9 表示最慢但压缩率最高。默认是 6。
2.3.4 常见使用案例
2.3.4.1 压缩文件
gzip file.txt
这会将 file.txt 压缩为 file.txt.gz
2.3.4.2 解压缩文件
gunzip file.txt.gz
或者,使用 gzip 的 -d 选项
gzip -d file.txt.gz
这会将 file.txt.gz 解压缩为 file.txt
2.3.4.3 压缩多个文件
gzip *.txt
这会将当前目录下所有 .txt 结尾的文件压缩为对应的 .gz 文件
2.3.4.4 查看压缩文件的信息而不解压
gzip -l file.txt.gz
2.3.4.5 强制压缩已经存在的 .gz 文件(通常不推荐)
gzip -n file.txt.gz
2.3.4.6 递归压缩目录中的所有文件
gzip -r directory/
这会将 directory/ 目录下的所有文件(递归地)压缩为 .gz 文件
2.4 zip
2.4.1 介绍
zip 是一个用于创建和管理 .zip 格式压缩文件的命令行工具
2.4.2 使用方法
zip [选项] 压缩文件名 文件或目录列表
2.4.3 参数详解
-r:递归地压缩目录及其内容。
-q:安静模式,不显示压缩过程中的信息。
-9:使用最大压缩比进行压缩,这可能需要更多的时间和计算资源。
-0 到 -8:设置压缩级别,-0 表示不压缩(存储),-8 表示较快但压缩率较低的压缩,-9 是最高压缩率。
-j:只压缩文件,不压缩目录。
-m:将文件压缩为 ZIP 归档后,删除原始文件。
-u:只更新已经存在的文件在 ZIP 归档中,比归档中现有文件更新的文件。
-l:将文件压缩到 ZIP 归档中,如果文件已经存在,则保留原文件。
-o:覆盖现有的 ZIP 归档文件,而不提示确认。
-x:排除指定的文件或目录。
-@:从标准输入(stdin)读取要添加到 ZIP 归档中的文件列表。
-A:调整可执行的自动解压缩文件。
-F:尝试修复损坏的 ZIP 归档。
-T:检查归档文件的日期,以确定是否需要更新。
2.4.4 常见使用案例
2.4.4.1 压缩单个文件
zip archive.zip file.txt
2.4.4.2 压缩多个文件
zip archive.zip file1.txt file2.txt file3.txt
2.4.4.3 递归压缩目录及其内容
zip -r archive.zip directory/
2.4.4.4 使用最大压缩比压缩文件
zip -9 archive.zip file.txt
2.4.4.5 压缩文件并删除原始文件
zip -m archive.zip file.txt
2.4.4.6 排除某些文件或目录进行压缩
zip archive.zip * -x '*.log'
2.4.4.7 从文件列表中读取要压缩的文件
echo "file1.txt" > filelist.txt echo "file2.txt" >> filelist.txt zip archive.zip @filelist.txt
三、搜索文件命令
3.1 which
3.1.1 介绍
which 是一个在 Unix 和类 Unix 系统(如 Linux)中常用的命令,用于在系统的 PATH 变量所列出的目录中搜索某个特定的可执行文件
3.1.2 使用方法
which [命令名]
3.1.3 参数详解
[命令名]:你想要查找的可执行文件的名称
3.1.4 使用案例
3.1.4.1 查找 ls 命令的位置
which ls
这个命令会输出 ls 命令的完整路径,通常是 /bin/ls
3.1.4.2 查找 python 命令的位置
which python
这个命令会输出 python 可执行文件的路径,这取决于你的系统中 Python 的安装方式和版本
3.1.5 注意点:
which 命令只能用来查找可执行文件,并且它只会查找 PATH 环境变量中列出的目录。如果一个命令是通过别名的方式定义的(例如一个 shell 函数或者一个别名),which 命令将不会显示这个命令。
对于一些由包管理器(如 apt、yum、dnf、pacman 等)安装的软件,其可执行文件可能位于非标准路径中,但仍然会被包含在 PATH 中。
如果你想要查找一个命令的所有可能位置,包括别名、函数和可执行文件,你可以使用 type 命令(在 bash 中)或者 command -v 命令(在 POSIX 兼容的 shell 中)
3.2 find
3.2.1 介绍
find 是一个强大的命令行工具,用于在文件系统中搜索文件和目录
3.2.2 使用方法
find [路径] [表达式]
3.2.3 参数详解
- [路径]:指定在哪个目录及其子目录中搜索。如果省略,则默认在当前目录及其子目录中搜索。
- [表达式]:定义搜索条件。可以是多个条件的组合,使用逻辑运算符(-and, -or, -not)来组合它们
3.2.4 常见选项和表达式
- -name:按文件名搜索。
- -type:按文件类型搜索(如 f 表示普通文件,d 表示目录)。
- -size:按文件大小搜索。
- -mtime:按文件的修改时间搜索。
- -exec:对找到的每个文件执行指定的命令。
- -print:打印找到的文件名(默认操作)。
3.2.5 使用案例
3.2.5.1 在当前目录及其子目录中查找名为 example.txt 的文件
find . -name "example.txt"
3.2.5.2 查找当前目录及其子目录中所有的目录
find . -type d
3.2.5.3 查找当前目录及其子目录中大于 1MB 的文件
find . -type f -size +1M
3.2.5.4 查找最后 7 天内修改过的文件
find . -type f -mtime -7
3.2.5.5 查找名为 *.log 的文件并删除它们
find . -name "*.log" -exec rm {} \;
3.2.5.6 查找所有的 .txt 文件,并打印它们的路径
find . -name "*.txt" -print
3.2.6 注意事项:
find 命令非常强大,因此在使用时要小心,特别是当使用 -exec 选项执行命令时。确保你完全理解你正在做什么,以防止意外删除或修改文件。
在使用 -exec 选项时,{} 是一个占位符,它会被替换为当前找到的文件名。\; 表示 -exec 选项的结束。
为了提高搜索效率,你可以尽量缩小搜索范围,比如指定具体的目录路径,而不是从根目录开始搜索整个文件系统。
3.3 whereis
3.3.1 介绍
whereis 是一个在 Unix 和类 Unix 系统(如 Linux)中用于定位可执行文件、源代码和 man 页面位置的命令
3.3.2 使用方法
whereis [命令名或文件名]
3.3.3 参数详解
[命令名或文件名]:你想要查找的可执行文件、源代码或 man 页面的名称
3.3.4 使用案例
3.3.4.1 查找 ls 命令的位置
whereis ls
这个命令通常会返回 ls 可执行文件的位置,以及与之关联的源代码和 man 手册页的位置(如果存在的话)
3.3.4.2 查找 gcc 的相关信息
whereis gcc
这将显示 gcc 可执行文件、源代码和 man 手册页的位置
3.3.5 注意事项:
- whereis 命令主要用于查找标准安装的软件包。对于非标准路径安装的软件或用户自定义的程序,whereis 可能无法找到。
- 如果只关心可执行文件的位置,可以使用 which 命令。
- 如果想要查找包含特定文本的文件,可以使用 grep 命令结合其他命令(如 find)。
- 对于一些软件包,源代码和 man 页面可能并不总是可用,因此 whereis 的输出可能只包含可执行文件的位置。
3.4 locate
3.4.1 介绍
locate 命令用于快速查找文件系统中的文件,它使用一个预先构建的数据库来执行搜索,而不是实时搜索整个文件系统
3.4.2 使用方法
locate [选项] [模式]
3.4.3 参数详解
- [选项]:控制 locate 命令的行为,比如指定数据库路径、限制搜索范围等。
- [模式]:搜索时要匹配的文件名模式。
3.4.4 常见选项
- -i:忽略大小写。
- -r:使用正则表达式进行匹配。
- -n:限制输出的结果数量。
- -d:指定数据库文件的路径。
- -e:启用额外的搜索路径。
3.4.5 常见使用案例
3.4.5.1 查找所有以 .txt 结尾的文件
locate .txt
3.4.5.2 忽略大小写,查找所有包含 example 的文件
locate -i example
3.4.5.3 使用正则表达式查找所有以 file 开头,以 .log 结尾的文件
locate -r '^file.*\.log$'
3.4.6 注意事项:
- locate 命令依赖于一个预先构建的数据库。如果文件系统中添加、删除或重命名了文件,需要定期运行 updatedb 命令来更新数据库。
- 由于 locate 使用的是数据库,它可能无法找到最近创建或移动的文件,除非数据库已经更新。
- 在某些系统中,locate 命令可能默认禁用,因为它可能会暴露敏感信息。在这种情况下,你可能需要手动安装和配置 locate