目录
文件目录相关命令
ls
ls 命令是用于列出目录、文本文件内容的命令。
常用选项:
选项 | 描述 | |
-l | 以长格式显示文件和文件夹的详细信息,包括文件权限、所有者、文件大小、修改时间等 | |
-a | 显示所有文件和文件夹,包括隐藏文件。工作中常用于查看包括隐藏文件在内的所有文件 | |
-R | 递归地列出当前目录下所有子目录和文件。工作中常用于查找特定文件或者对整个目录进行操作。 | |
-t | 按照修改时间倒序显示文件和文件夹。工作中常用于查看最新修改的文件或者目录。 | |
-S | 按文件大小进行排序,从大到小显示文件和文件夹。工作中常用于查看占用空间较大的文件。 | |
-h | 以人类可读的格式显示文件和文件夹的大小,如使用K、M、G等单位表示文件大小。工作中常用于查看文件大小。 | |
-i | 显示文件的inode节点号。工作中常用于查看文件的inode节点号。 | |
-d | 仅显示目录本身,而不显示其内容。工作中常用于查看目录的信息,而不深入到子目录中。 |
这些选项都可以灵活的组合应用,下面是一些常用组合选项:
1. ls -lha:显示当前目录下所有文件和文件夹的详细信息,包括隐藏文件,以人类可读的格式显示文件大小。
2. ls -lRt:递归地列出当前目录及其子目录下所有文件和文件夹的详细信息,并按照修改时间排序。
3. ls -lhS:以人类可读的格式显示当前目录下文件和文件夹的大小,并按照文件大小从大到小排序。
4. ls -lhd */:递归地列出当前目录下所有子目录的详细信息,并且仅显示目录本身而不显示其内容。
cd
cd 命令是用于进、出目录的命令。
常用选项:
选项 | 描述 |
cd | 进入当前用户的主目录。 |
cd ~ | 进入当前用户的主目录。 |
cd - | 返回上次所在的目录。 |
cd / | 进入根目录。 |
cd .. | 进入当前目录的父目录。 |
cp
cp 命令是用于复制文件或目录的命令。
常见选项:
选项 | 描述 |
cp file1 file2 | 将文件 file1 复制为 file2 |
-r | 递归地复制目录 dir1 及其内容到目录 dir2 。 |
-i | 将文件 file1 复制到目录 dir ,如果目标目录中存在同名文件,则询问是否覆盖。 |
-u | 仅在源文件的更新时间较新时才复制文件到目录 dir 。 |
-a | 以递归和保留特性(包括权限、所有者、时间戳等)的方式复制源文件或目录到目标文件或目录。 |
-v | 显示复制过程中详细的输出信息。 |
常见案例:
1.cp file1.txt file2.txt:将文件 file1.txt 复制为 file2.txt。
2.cp -r directory1 directory2:递归地复制目录 directory1 及其内容到目录 directory2。
3.cp -i file1.txt directory:将文件 file1.txt 复制到目录 directory,如果目标目录中存在同名文件,则询问是否覆盖。
4.cp -u file1.txt directory:仅在源文件 file1.txt 的更新时间较新时才复制文件到目录 directory。
5.cp -a source_directory destination_directory:以递归和保留特性的方式复制源目录及其内容到目标目录。
6.cp -v file1.txt file2.txt:显示复制过程中详细的输出信息,并将文件 file1.txt 复制为 file2.txt。
列标用数字。
find
find 命令是用于在指定目录下搜索文件或目录的命令。
常见选项:
选项 | 描述 |
find <path> -name <pattern> | 根据文件名模式 <pattern> 在指定路径 <path> 下搜索文件和目录。 |
find <path> -type <type> | 根据文件类型 <type> 在指定路径 <path> 下搜索文件和目录。例如,d 表示目录,f 表示文件。 |
find <path> -user <username> | 根据文件所有者 |
find <path> -size <size> | 根据文件大小 <size> 在指定路径 <path> 下搜索文件和目录。例如,+10M 表示大小大于10MB的文件。 |
find <path> -mtime <n> | 根据文件的修改时间 <n> 在指定路径 <path> 下搜索文件和目录。例如,+7 表示修改时间超过7天的文件。 |
find <path> -exec <command> | 对搜索到的文件和目录执行指定的命令 <command> 。 |
常见案例:
find /home/user -name "*.txt"
:在/home/user
目录及其子目录中搜索所有以.txt
结尾的文件。find /var/log -type f -size +10M
:在/var/log
目录及其子目录中搜索大于 10MB 的普通文件。find / -user root
:在整个文件系统中搜索所有属主为root
的文件和目录。find /tmp -mtime +7 -exec rm {} \;
:在/tmp
目录中搜索修改时间超过 7 天的文件,并删除它们。find /home -name "*.txt" -exec grep "keyword" {} +
:在/home
目录及其子目录中搜索所有以.txt
结尾的文件,并在其中搜索包含关键字的内容。
mkdir
mkdir命令用于创建目录(文件夹)。
常见选项:
选项 | 描述 |
-p | 创建多级目录。如果父级目录不存在,则自动创建。例如:mkdir -p /path/to/directory 。 |
-m | 设置目录的权限模式。例如:mkdir -m 755 /path/to/directory 。 |
常见案例:
mkdir directory_name
:在当前目录下创建一个名为 directory_name 的目录。mkdir -p /path/to/directory
:创建 /path/to/directory 目录,如果 /path/to 目录不存在,则同时创建它们。mkdir -m 755 /path/to/directory
:创建 /path/to/directory 目录,并将其权限设置为 755。mkdir dir1 dir2 dir3
:在当前目录下同时创建名为 dir1、dir2 和 dir3 的三个目录。mkdir -p dir/subdir/subsubdir
:在当前目录下创建 dir 目录,并在其中创建 subdir 子目录,再在 subdir 中创建 subsubdir 子子目录。
mv
mv 命令用于移动或重命名文件或目录。
常见选项:
选项 | 描述 |
-i | 在目标文件已存在时进行交互式提示,询问是否覆盖。 |
-u | 只在源文件比目标文件新或目标文件不存在时才进行移动。 |
-f | 强制执行移动操作,覆盖目标文件而不进行任何交互提示。 |
-n | 当目标文件已经存在时,不覆盖目标文件。 |
-v | 显示详细的输出信息,列出每个移动操作的名称。 |
常见案例:
mv file1 file2
:将文件 file1 移动或重命名为 file2。如果 file2 已经存在,则会覆盖。mv file directory
:将文件 file 移动到目录 directory 中。mv directory1 directory2
:将目录 directory1 移动或重命名为 directory2。如果 directory2 已经存在,则会覆盖。mv -i file1 file2
:在目标文件 file2 存在时进行交互提示,询问是否覆盖。mv -u file1 directory
:只在源文件 file1 比目标文件新或目标文件不存在时才进行移动。mv -f file1 file2
:强制执行移动操作,覆盖目标文件而不进行任何交互提示。mv -n file1 file2
:当目标文件 file2 已经存在时,不覆盖目标文件。mv -v file1 file2
:显示详细的输出信息,列出每个移动操作的名称。
rm
rm 命令用于删除文件和目录。
常见选项:
选项 | 描述 |
-i | 在删除每个文件之前进行交互式提示,询问是否确认删除。 |
-r | 递归地删除目录及其所有内容。 |
-f | 强制执行删除操作,无需进行任何交互提示。 |
-v | 显示详细的输出信息,列出每个删除操作的名称。 |
常见案例:
rm file
:删除名为 file 的文件。rm -i file
:在删除文件 file 之前进行交互式提示,询问是否确认删除。rm -r directory
:递归地删除目录 directory 及其所有内容。rm -f file
:强制执行删除操作,无需进行任何交互提示。rm -v file
:显示详细的输出信息,列出删除操作的名称。rm -rf directory
:强制递归删除目录 directory 及其所有内容,无需进行任何交互提示。rm *.txt
:删除当前目录中所有以 .txt 结尾的文件。rm -i *.txt
:逐个删除当前目录中以 .txt 结尾的文件,并在删除之前进行交互式提示。
touch
touch 命令用于创建空文件或更改文件的访问和修改时间戳。
常见选项:
选项 | 描述 |
-a | 只更改访问时间。 |
-m | 只更改修改时间。 |
-c | 仅在文件不存在时才创建文件。 |
-r | 根据指定文件的时间戳来设置新文件的时间戳。 |
-t | 使用指定的时间来设置新文件的时间戳。 |
常见案例:
touch file
:创建一个名为 file 的空文件。如果文件已经存在,则只更新其访问和修改时间戳。touch -a file
:只更新文件 file 的访问时间,保持修改时间不变。touch -m file
:只更新文件 file 的修改时间,保持访问时间不变。touch -c file
:只在文件 file 不存在时才创建文件。touch -r source_file new_file
:根据 source_file 的时间戳来设置 new_file 的时间戳。touch -t 202410011200 file
:使用指定的时间(2024年10月01日12:00)来设置文件 file 的时间戳。touch *.txt
:在当前目录下的所有以 .txt 结尾的文件上更新访问和修改时间戳。touch -m *.txt
:在当前目录下的所有以 .txt 结尾的文件上只更新修改时间,保持访问时间不变。
file
file 命令用于确定文件的类型。它通过检查文件的内容、魔术数字、元数据等信息来判断文件的类型。
常见选项:
选项 | 描述 |
-b | 不显示文件名,仅显示文件类型。 |
-i | 显示文件类型的 MIME 类型。 |
-z | 尝试对压缩文件进行解压缩并显示其类型。 |
常见案例:
file file1
:显示文件 file1 的类型和文件名。file -b file1
:仅显示文件 file1 的类型,不显示文件名。file -i file1
:显示文件 file1 的 MIME 类型。file -z compressed_file.gz
:尝试对压缩文件 compressed_file.gz 进行解压缩,并显示其类型。file /path/to/directory
:显示目录 /path/to/directory 的类型(通常会显示为"directory")。file *
:显示当前目录下所有文件的类型。
tree
tree 命令用于以树状结构的形式显示当前目录下的文件和子目录。它会递归地显示目录结构,并以层级关系展示文件和目录的信息。
常见选项:
选项 | 描述 |
-d | 仅显示目录,不显示文件。 |
-L | 限制显示的层级数。 |
-a | 显示所有文件和目录,包括隐藏文件。 |
-I | 排除符合指定模式的文件或目录。 |
-f | 在每个文件或目录的名称前显示完整的路径。 |
常见案例:
tree
:在当前目录下以树状结构显示文件和子目录。tree -d
:仅显示目录,不显示文件。tree -L 2
:限制显示的层级数为 2,只显示当前目录下的子目录及其内容。tree -a
:显示所有文件和目录,包括隐藏文件。tree -I "*.txt"
:排除所有以 .txt 结尾的文件。tree -f
:在每个文件或目录的名称前显示完整的路径。tree /path/to/directory
:在指定目录下以树状结构显示文件和子目录。tree -d -L 3 /path/to/directory
:在指定目录下限制显示的层级数为 3,只显示子目录及其内容。
chattr
chattr 命令用于改变文件或目录的扩展属性。扩展属性可以提供额外的保护和控制对文件的访问和修改。chattr 命令只能由文件的所有者或超级用户使用。
常见选项:
选项 | 描述 |
+ | 添加指定的扩展属性。 |
- | 移除指定的扩展属性。 |
i | 设置文件为不可修改(immutable)。即使是超级用户也无法修改或删除该文件。 |
a | 设置文件为只追加(append-only)。文件只能进行追加操作,不能修改或删除。 |
R | 递归地应用于目录及其内容。 |
常见案例:
chattr +i file
:给文件 file 设置为不可修改,即使是超级用户也无法修改或删除该文件。chattr -i file
:移除文件 file 的不可修改属性。chattr +a file
:给文件 file 设置为只追加,文件只能进行追加操作,不能修改或删除。chattr -a file
:移除文件 file 的只追加属性。chattr +iR directory
:递归地将目录 directory 及其所有内容设置为不可修改,无法修改或删除文件。chattr -iR directory
:递归地移除目录 directory 及其所有内容的不可修改属性。
lsattr
sattr 命令用于显示文件或目录的扩展属性。它可以列出文件或目录的特殊属性,包括不可修改(immutable)、只追加(append-only)等。lsattr 命令只能由文件的所有者或超级用户使用。
常见选项:
选项 | 描述 |
-a | 显示所有文件和目录,包括隐藏文件和隐藏目录。 |
-d | 仅显示目录的特殊属性,不显示目录中的文件的特殊属性。 |
-R | 递归地显示目录及其子目录下所有文件和目录的特殊属性。 |
-l | 以长格式显示特殊属性,包括权限、所有者、大小等信息。 |
常见案例:
lsattr file
:显示文件 file 的特殊属性。lsattr -a
:显示当前目录下所有文件和目录的特殊属性,包括隐藏文件和隐藏目录。lsattr -d directory
:仅显示目录 directory 的特殊属性,不显示目录中的文件的特殊属性。lsattr -R directory
:递归地显示目录 directory 及其子目录下所有文件和目录的特殊属性。lsattr -l file
:以长格式显示文件 file 的特殊属性,包括权限、所有者、大小等信息。lsattr -lad directory
:以长格式显示目录 directory 的特殊属性,包括权限、所有者、大小等信息,不递归显示目录中的文件的特殊属性。
md5sum
md5sum 命令可以用于验证文件的完整性,比较两个文件是否相同等。
常见选项:
选项 | 描述 |
-b | 以二进制模式计算文件的 MD5 摘要。 |
-c | 校验文件的 MD5 摘要是否匹配给定的校验和文件。 |
-s | 不显示文件名。 |
常见案例:
md5sum file
:计算文件 file 的 MD5 摘要,并显示文件名和摘要。md5sum -b file
:以二进制模式计算文件 file 的 MD5 摘要。md5sum -c checksum.txt
:根据 checksum.txt 文件中的校验和来校验文件的完整性。md5sum -s file
:计算文件 file 的 MD5 摘要,但不显示文件名,仅显示摘要。md5sum file1 file2
:计算文件 file1 和 file2 的 MD5 摘要,并显示文件名和摘要。md5sum -b file1 file2
:以二进制模式计算文件 file1 和 file2 的 MD5 摘要。
查看文件以及内容处理相关命令
vim
Vim(Vi Improved)是一款文本编辑器,是 Unix 和类 Unix 系统上的最受欢迎和广泛使用的编辑器之一。Vim 具有强大的编辑功能和高度可定制性,适用于各种编程语言和文本编辑任务。
常见用法:
分类 | 描述 |
插入文本 |
|
导航和编辑 |
|
保存和退出: |
|
撤销和重做 |
|
搜索和替换 |
|
翻页和跳转 |
|
复制、剪切和粘贴 |
|
执行外部命令 |
|
设置行号 |
|
cat
cat
是一个常用的 Linux 和 Unix 命令,用于查看、合并或连接文件内容。
常见选项:
选项 | 描述 |
-n | 显示行号,在输出中显示每一行的行号。 |
-b | 显示非空行的行号,在输出中只显示非空行的行号。 |
-v | 显示控制字符和不可打印的字符。 |
常见案例:
- 查看文件内容:
cat file.txt
。它将显示文件file.txt
的全部内容。 - 合并多个文件:
cat file1.txt file2.txt > merged.txt
。它将把file1.txt
和file2.txt
的内容合并到一个新文件merged.txt
中。 - 显示行号:
cat -n file.txt
。它将显示文件file.txt
的内容,并为每一行添加行号。 - 创建文件:
cat > newfile.txt
。它可以让你在终端中输入文本,并将输入的内容保存到newfile.txt
文件中。按下Ctrl + D
结束输入。 - 追加文件:
cat file1.txt >> file2.txt
。它将把file1.txt
的内容追加到file2.txt
的末尾。 - cat >> file.txt << EOF
Line1
Line 2
Line 3
EOF
在输入的地方,输入文本行,按下回车键后输入 EOF
,然后再按下回车键。这将在 file.txt
文件中追加三行文本。
more 和head
more
是一个在 Unix 和 Linux 系统中用于逐页显示文本内容的命令,而 head
是一个用于显示文件开头内容的命令。
常用选项:
more 命令
- 空格键:向下滚动一页。
- Enter 键:向下滚动一行。
- q 键:退出
more
。
常见用法:
- 查看文件内容:
more file.txt
。它以分页的方式显示文件file.txt
的内容,让你能够逐页阅读文本内容。使用空格键或 Enter 键向下滚动一页或一行,并使用 q 键退出more
。
head 命令
常用选项:
-n <num>
:仅显示头部的<num>
行内容。其中<num>
是要显示的行数。
常见用法:
- 查看文件开头内容:
head -n 10 file.txt
。这将显示文件file.txt
的开头 10 行内容。你可以根据需要通过更改-n
后的数字来显示任意行数。
tail
tail
是一个常用的在 Unix 和 Linux 系统中查看文件末尾内容的命令。它通常用于实时监控日志文件和其他持续更新的文件。
常用选项:
-n <num>
:仅显示最后<num>
行内容。其中<num>
是要显示的行数。-f
:实时跟踪文件内容的更新。终端将持续显示文件的新增内容。
常见用法:
- 查看文件末尾内容:
tail file.txt
。它默认显示文件file.txt
的最后 10 行内容。你可以根据需要通过添加-n
选项来指定要显示的行数,如tail -n 20 file.txt
。 - 实时监控文件更新:
tail -f file.txt
。这将持续显示文件file.txt
追加的内容。你可以实时地看到文件的更新,非常适用于实时监控日志文件变化和其他持续更新的文件。
cut
cut是一个Unix和类Unix系统中的命令,用于从文件或标准输入中剪切指定的字段或列。cut命令的默认分隔符是制表符(Tab),也可以使用其他指定的分隔符。
常见选项:
选项 | 描述 |
-c | 按字符位置切割字段。 |
-d | 指定字段的分隔符。 |
-f | 按字段位置切割字段。 |
–complement | 选择未被切割的字段。 |
常见用法:
- 按字符位置切割字段:
cut -c 1-3 filename
:提取filename文件中每一行的前三个字符。cut -c 1,3,5-7 filename
:提取filename文件中每一行的第1、3、5-7个字符。
- 按字段位置切割字段:
cut -d ":" -f 1 filename
:以冒号作为分隔符,提取filename文件每一行的第一个字段。cut -d "," -f 1-3,5 filename
:以逗号作为分隔符,提取filename文件每一行的第1、2、3和5个字段。
- 选择未被切割的字段:
cut -d ":" --complement -f 1 filename
:以冒号作为分隔符,提取filename文件每一行除了第一个字段之外的所有字段。
- 从标准输入中读取数据进行切割:
echo "hello world" | cut -d " " -f 2
:以空格作为分隔符,提取从标准输入读取的字符串中的第二个字段。
- 组合使用选项:
cut -c 1-3,5-7 filename
:提取filename文件每一行的第1-3个字符和第5-7个字符。
sort
sort用于对文件或标准输入的内容进行排序。sort命令默认以文本行的字典顺序对文本进行排序,也可以根据指定的字段和选项进行排序。
常见选项:
选项 | 描述 |
-b | 忽略行首空格字符。 |
-c | 检查文件是否已经按照顺序排序。 |
-n | 以数值的方式进行排序。 |
-r | 倒序排序。 |
-k | 指定以哪个字段进行排序。 |
常见案例:
- 对文件内容进行排序:
sort filename
:对filename文件的内容按照字典顺序排序,并将结果输出到终端。sort -r filename
:对filename文件的内容按照字典逆序排序,并将结果输出到终端。sort -n filename
:对filename文件的内容按照数值顺序排序,并将结果输出到终端。
- 对标准输入内容进行排序:
echo "4 2 1 3" | sort
:将字符串"4 2 1 3"作为标准输入,按照字典顺序进行排序,并将结果输出到终端。
- 检查文件是否已经排序:
sort -c filename
:检查filename文件的内容是否已经按照顺序排列,若已排序,则不会输出任何内容,否则会显示出错误信息。
- 指定以哪个字段进行排序:
sort -k 2 filename
:按照filename文件每一行中的第2个字段进行排序。sort -k 2,2 -k 1 filename
:先按照filename文件每一行中的第2个字段进行排序,若第2个字段相同,则再按照第1个字段排序。
- 将排序结果保存到文件:
sort filename -o outputfile
:将filename文件的内容按照字典顺序排序,并将结果保存到outputfile文件中。若outputfile文件已存在,则会覆盖原文件。
uniq
用于对已排序的文件或标准输入进行去重操作。uniq命令会删除或仅保留连续重复的行,只保留唯一的行。
常见选项:
选项 | 描述 |
-c | 在每一行前面显示该行在输入文件中出现的次数。 |
-d | 仅显示重复的行。 |
-u | 仅显示不重复的行。 |
常见用法:
- 对已排序文件进行去重:
uniq filename
:对filename文件进行去重操作,删除连续重复的行,并将结果输出到终端。uniq -c filename
:对filename文件进行去重操作,删除连续重复的行,并在每一行前面显示该行在输入文件中出现的次数。uniq -d filename
:对filename文件进行去重操作,仅显示重复的行。uniq -u filename
:对filename文件进行去重操作,仅显示不重复的行。
- 对标准输入进行去重:
echo "apple banana apple orange" | uniq
:将字符串"apple banana apple orange"作为标准输入,进行去重操作,并将结果输出到终端。echo -e "apple\nbanana\napple\norange" | uniq -c
:将每一行作为标准输入,进行去重操作,并在每一行前面显示该行在输入中出现的次数。
- 将去重结果保存到文件:
uniq filename -o outputfile
:对filename文件进行去重操作,并将结果保存到outputfile文件中。若outputfile文件已存在,则会覆盖原文件。
- 对于未排序的文件,先进行排序再去重:
sort filename | uniq
:先对filename文件进行排序,然后进行去重操作。
wc
wc用于计算文件或标准输入中的字节数、字数和行数。wc命令通常用于统计文本文件中的内容。
常见选项:
选项 | 描述 |
-c | 统计字节数。 |
-w | 统计字数。 |
-l | 统计行数。 |
常见用法:
- 统计文件中的字节数、字数和行数:
wc filename
:统计filename文件中的字节数、字数和行数,并将结果输出到终端。wc -c filename
:仅统计filename文件中的字节数。wc -w filename
:仅统计filename文件中的字数。wc -l filename
:仅统计filename文件中的行数。
- 统计标准输入中的字节数、字数和行数:
echo "Hello, world!" | wc
:将字符串"Hello, world!"作为标准输入,统计其字节数、字数和行数,并将结果输出到终端。
- 统计多个文件的总字节数、字数和行数:
wc file1 file2
:统计file1和file2文件的总字节数、字数和行数,并将结果输出到终端。
- 仅输出结果统计值:
wc -l filename | awk '{print $1}'
:统计filename文件中的行数,并只输出行数的统计值。可以使用类似的方法获取字节数和字数的统计值。
grep
grep用于在文件或标准输入中搜索指定的字符串模式,并将匹配的行输出。grep命令可以用于查找包含特定文本的文件或过滤输出。
常见选项:
选项 | 描述 |
-i | 忽略大小写进行匹配。 |
-v | 输出不匹配的行。 |
-c | 只输出匹配的行数。 |
-r或-R | 递归地搜索目录中的文件。 |
常见用法:
- 在文件中搜索指定字符串模式:
grep pattern filename
:在filename文件中搜索匹配pattern的行,并将匹配的行输出到终端。grep -i pattern filename
:忽略大小写,在filename文件中搜索匹配pattern的行,并将匹配的行输出到终端。grep -v pattern filename
:在filename文件中搜索不匹配pattern的行,并将不匹配的行输出到终端。grep -c pattern filename
:统计在filename文件中匹配pattern的行数,并输出行数。
- 在标准输入中搜索指定字符串模式:
echo "hello world" | grep pattern
:将字符串"hello world"作为标准输入,在输入中搜索匹配pattern的行,并将匹配的行输出到终端。echo "hello world" | grep -i pattern
:忽略大小写,在输入中搜索匹配pattern的行,并将匹配的行输出到终端。echo "hello world" | grep -v pattern
:在输入中搜索不匹配pattern的行,并将不匹配的行输出到终端。echo "hello world" | grep -c pattern
:统计在输入中匹配pattern的行数,并输出行数。
- 递归地搜索目录中的文件:
grep -r pattern directory
:在directory目录中递归地搜索匹配pattern的行,并将匹配的行输出到终端。
tr
tr用于在文件或标准输入中进行字符转换和替换操作。
常见选项:
选项 | 描述 |
-c | 删除所有不在指定字符集中的字符。 |
-d | 删除所有指定字符集中的字符。 |
-s | 将连续出现的指定字符集中的字符,仅替换成一个。 |
-t | 指定源字符集和目标字符集,用于转换字符。 |
常见用法:
-
将文件中的所有大写字母转换成小写字母:
tr '[:upper:]' '[:lower:]' < input.txt
这将将input.txt文件中的所有大写字母替换为小写字母,并将结果输出到标准输出。 -
删除文件中的所有数字:
tr -d '0-9' < input.txt
这将删除input.txt文件中的所有数字,并将结果输出到标准输出。 -
将文件中的多个空格替换成一个空格:
tr -s ' ' < input.txt
这将将input.txt文件中的连续出现的多个空格替换为单个空格,并将结果输出到标准输出。 -
将文件中的特定字符删除:
tr -d '@' < input.txt
这将删除input.txt文件中的所有"@"字符,并将结果输出到标准输出。
文件压缩以及解压缩相关命令
tar
tar通常用于将多个文件或目录打包成单个归档文件,以便更方便地传输、备份或存档数据。
常用选项:
选项 | 描述 |
-c | 创建归档文件。 |
-x | 提取归档文件中的内容。 |
-t | 查看归档文件中的内容列表。 |
-f | 指定要操作的归档文件。 |
-z | 使用gzip对归档文件进行压缩或解压缩(通常使用.tar.gz扩展名)。 |
-j | 使用bzip2对归档文件进行压缩或解压缩(通常使用.tar.bz2扩展名)。 |
-v | 显示详细的操作信息。 |
常见用法:
-
创建一个归档文件:
tar -cvf archive.tar file1.txt file2.txt
这将创建一个名为archive.tar的归档文件,并将file1.txt和file2.txt打包到其中。 -
提取归档文件的内容:
tar -xvf archive.tar
这将提取archive.tar文件中的所有内容,并还原到当前目录中。 -
查看归档文件中的内容列表:
tar -tvf archive.tar
这将显示archive.tar文件中的所有文件和目录的列表。 -
对归档文件进行压缩:
tar -czvf archive.tar.gz directory
这将创建一个名为archive.tar.gz的压缩归档文件,其中包含directory目录及其所有内容。 -
解压缩压缩的归档文件:
tar -xzvf archive.tar.gz
这将解压缩名为archive.tar.gz的压缩归档文件,并将其内容还原到当前目录中。
unzip
unzip"是在linux操作系统中用于解压缩ZIP文件的命令。它能够解压缩被压缩成ZIP格式的文件或目录。
常见选项:
选项 | 描述 |
-l | 显示ZIP文件中的内容列表。 |
-d | 指定解压缩文件的目标目录。 |
-o | 覆盖现有的文件而不询问确认。 |
-q | 减少命令的输出信息,使其更加安静。 |
-r | 递归地解压缩ZIP文件中的所有文件和目录。 |
-j | 只解压缩ZIP文件中的文件,忽略目录结构。 |
常见用法:
-
解压缩一个ZIP文件:
unzip archive.zip
这将解压缩名为archive.zip的ZIP文件,并将其内容还原到当前目录中。 -
解压缩一个ZIP文件到指定目录:
unzip archive.zip -d destination_directory
这将解压缩名为archive.zip的ZIP文件,并将其内容还原到指定的目标目录。 -
显示ZIP文件中的内容列表:
unzip -l archive.zip
这将显示名为archive.zip的ZIP文件中的所有文件和目录的列表。 -
递归地解压缩ZIP文件中的所有文件和目录:
unzip -r archive.zip
这将递归地解压缩名为archive.zip的ZIP文件中的所有文件和目录,并将其内容还原到当前目录中。 -
只解压缩ZIP文件中的文件,忽略目录结构:
unzip -j archive.zip
这将只解压缩名为archive.zip的ZIP文件中的文件,并将其提取到当前目录,忽略目录结构。
gzip
gzip"是在linux操作系统中用于压缩文件的命令。它使用DEFLATE算法对文件进行压缩,并将其扩展名更改为”.gz"。
常见选项:
选项 | 描述 |
-d | 解压缩一个文件。 |
-c | 将压缩的输出结果写入到标准输出,而不修改原始文件。 |
-r | 递归地压缩目录中的所有文件。 |
-f | 强制压缩,不进行任何确认提示。 |
-k | 保留原始文件,不删除压缩前的文件。 |
-t | 测试一个压缩文件是否完整并可读。 |
-v | 显示详细的操作信息。 |
常见用法:
-
压缩一个文件:
gzip file.txt
这将压缩名为file.txt的文件,并创建一个新的被压缩后的文件file.txt.gz。 -
解压缩一个文件:
gzip -d file.txt.gz
这将解压缩名为file.txt.gz的压缩文件,并恢复原始文件file.txt。 -
将压缩的输出结果写入到标准输出:
gzip -c file.txt > file.txt.gz
这将压缩文件file.txt,并将压缩后的内容写入到标准输出,可以通过重定向保存为新文件。 -
递归地压缩目录中的所有文件:
gzip -r directory
这将递归地压缩指定目录中的所有文件,包括它的子目录中的文件。 -
强制压缩文件,不进行任何确认提示:
gzip -f file.txt
这将强制压缩名为file.txt的文件,即使已经存在同名的压缩文件。
zip
"zip"是在linux操作系统中用于创建和管理ZIP压缩文件的命令。它能够将多个文件和目录打包成单个ZIP文件,并可以对ZIP文件进行解压缩和管理。
常见选项:
选项 | 描述 |
-r | 递归地将目录中的所有文件和子目录添加到ZIP文件中。 |
-d | 从ZIP文件中删除指定的文件。 |
-u | 更新ZIP文件,只添加新的或更新的文件。 |
-l | 显示ZIP文件中的内容列表。 |
-v | 显示详细的操作信息。 |
-q | 禁用所有或部分输出。 |
-j | 将文件存储在ZIP文件中而不带目录结构。 |
常见用法:
-
创建一个ZIP文件:
zip archive.zip file1.txt file2.txt
这将创建一个名为archive.zip的ZIP文件,并将file1.txt和file2.txt添加到其中。 -
添加目录中的所有文件和子目录到ZIP文件:
zip -r archive.zip directory
这将递归地将directory目录中的所有文件和子目录添加到名为archive.zip的ZIP文件中。 -
从ZIP文件中删除指定的文件:
zip -d archive.zip file1.txt
这将从名为archive.zip的ZIP文件中删除file1.txt文件。 -
更新ZIP文件,只添加新的或更新的文件:
zip -u archive.zip newfile.txt
这将将newfile.txt文件添加或更新到名为archive.zip的ZIP文件中。 -
显示ZIP文件中的内容列表:
zip -l archive.zip
这将显示名为archive.zip的ZIP文件中的所有文件和目录的列表。 -
将文件存储在ZIP文件中而不带目录结构:
zip -j archive.zip file.txt
这将将file.txt文件存储在名为archive.zip的ZIP文件中,而不带目录结构。
软件包管理相关命令
rpm
"rpm"是在许多Linux发行版中用于软件包管理的命令。它能够安装、升级、查询和删除以RPM格式打包的软件包。
常见选项:
选项 | 描述 |
-i | 安装一个软件包。 |
-U | 升级一个已安装的软件包。 |
-e | 删除一个已安装的软件包。 |
-q | 查询软件包的信息。 |
-V | 验证已安装的软件包。 |
-l | 列出一个已安装的软件包的文件列表。 |
常见用法:
-
安装一个软件包:
rpm -i package.rpm
这将安装名为package.rpm的软件包。 -
升级一个已安装的软件包:
rpm -U package.rpm
这将升级名为package.rpm的已安装软件包,如果已经安装了旧版本。 -
删除一个已安装的软件包:
rpm -e package
这将删除名为package的已安装软件包。 -
查询软件包的信息:
rpm -q package
这将查询名为package的软件包的信息,包括版本、发布、架构等。 -
验证已安装的软件包:
rpm -V package
这将验证名为package的已安装软件包的完整性和一致性。 -
列出一个已安装的软件包的文件列表:
rpm -ql package
这将列出名为package的已安装软件包的所有文件。
yum
yum"是在基于RPM的Linux发行版中用于管理软件包的命令。它是"Yellowdog Updater, Modified”(YUM)的缩写,是一个高级工具,用于自动解决依赖关系、软件包安装、升级、查询等操作。
常见选项:
选项 | 描述 |
install | 安装一个或多个软件包。 |
update | 升级一个或多个已安装的软件包。 |
remove | 删除一个或多个已安装的软件包。 |
search | 搜索可用的软件包。 |
info | 显示软件包的详细信息。 |
list | 列出已安装的软件包。 |
clean | 清理缓存和临时文件。 |
常见用法:
-
安装一个或多个软件包,并同时更新已安装的软件包:
yum install package1 package2 -y
这将安装名为package1和package2的软件包,并自动确认安装过程中的提示。 -
升级一个或多个已安装的软件包,并同时删除过时的包:
yum update package1 package2 --oldinstall
这将升级名为package1和package2的已安装软件包,并在升级后删除过时的包。 -
删除一个或多个已安装的软件包,同时删除其依赖的未被其他软件包使用的包:
yum remove package1 package2 autoremove
这会删除名为package1和package2的已安装软件包,并自动删除它们的依赖项中未被其他软件包使用的包。 -
搜索可用的软件包,并显示匹配的结果:
yum search keyword
这将搜索包含关键字的可用软件包,并显示与之匹配的结果列表。 -
显示软件包的详细信息:
yum info package
这将显示名为package的软件包的详细信息,包括版本、发布、描述等。 -
列出已安装的软件包,并按名称和版本排序:
yum list installed | sort -k1,1 -k2,2
这将列出所有已安装的软件包,并对结果按名称和版本进行排序。 -
清理YUM缓存和临时文件:
yum clean all
这将清理YUM的所有缓存和临时文件,以释放存储空间。
apt-get
"apt-get"是Debian和Ubuntu等基于Debian的发行版中用于管理软件包的命令。它是Advanced Packaging Tool (APT) 的一部分,用于安装、升级、查询和删除软件包。
常见选项:
选项 | 描述 |
install | 安装一个或多个软件包。 |
upgrade | 升级所有可用的软件包。 |
remove | 删除一个或多个已安装的软件包。 |
search | 搜索可用的软件包。 |
show | 显示软件包的详细信息。 |
list | 列出已安装的软件包。 |
常见用法:
-
安装一个或多个软件包,并同时更新已安装的软件包:
apt-get install package1 package2 -y
这将安装名为package1和package2的软件包,并自动确认安装过程中的提示。 -
升级所有可用的软件包,并自动删除不需要的包:
apt-get upgrade --autoremove
这将升级系统中所有可用的软件包,并自动删除不再需要的包。 -
删除一个或多个已安装的软件包,并同时删除其依赖的未被其他软件包使用的包:
apt-get remove package1 package2 autoremove
这会删除名为package1和package2的已安装软件包,并自动删除它们的依赖项中未被其他软件包使用的包。 -
搜索可用的软件包,并显示匹配的结果:
apt-get search keyword
这将搜索包含关键字的可用软件包,并显示与之匹配的结果列表。 -
显示软件包的详细信息:
apt-get show package
这将显示名为package的软件包的详细信息,包括版本、发布、描述等。 -
列出已安装的软件包:
apt-get list --installed
这将列出所有已安装的软件包。
信息显示相关命令
uname
"uname"命令用于显示操作系统的相关信息,包括内核版本、操作系统类型等。
常见选项:
选项 | 描述 |
-a | 显示所有可用的信息。 |
-s | 显示内核名称。 |
-n | 显示网络节点主机名。 |
-r | 显示内核版本。 |
-m | 显示计算机硬件的体系结构。 |
-p | 显示处理器类型。 |
-i | 显示硬件平台名称。 |
常见用法:
-
显示所有可用的信息:
uname -a
这将显示系统的所有相关信息,包括内核名称、版本、计算机硬件体系结构等。 -
显示内核版本:
uname -r
这将显示当前系统的内核版本号。 -
显示网络节点主机名:
uname -n
这将显示网络节点的主机名。 -
显示计算机硬件的体系结构:
uname -m
这将显示计算机硬件的体系结构,例如x86_64。 -
显示硬件平台名称:
uname -i
这将显示硬件平台的名称,例如x86_64、i386等。
hostname
"hostname"命令用于显示或设置系统的主机名。
常见选项:
选项 | 描述 |
-s | 仅显示主机名的短名称(不包含域名)。 |
-f | 显示完整的主机名(包含域名)。 |
-i | 显示主机的IP地址(可用于显示主机的网络地址)。 |
常见用法:
-
显示主机名:
hostname
这将显示系统的主机名。 -
显示主机名的短名称:
hostname -s
这将显示系统主机名的短名称,即去除域名部分。 -
显示完整的主机名(包含域名):
hostname -f
这将显示系统的完整主机名,包括域名。 -
显示主机的IP地址:
hostname -i
这将显示系统主机的IP地址。
uptime
"uptime"命令用于显示系统的运行时间和当前系统负载平均值。
常见选项:
选项 | 描述 |
-p | 以较为友好的格式显示系统运行时间。 |
-s | 显示系统的启动时间。 |
-a | 同时显示系统的运行时间和负载平均值。 |
-w | 以日期和时间格式显示系统的运行时间。 |
-i | 显示系统的平均空闲时间。 |
常见用法:
-
显示系统的运行时间和当前系统负载平均值:
uptime
这将显示系统的运行时间、当前活跃用户数量和当前系统负载平均值(1分钟、5分钟、15分钟)。 -
以较为友好的格式显示系统运行时间:
uptime -p
这将以友好的方式显示系统的运行时间,例如 “up 3 hours, 12 minutes”。 -
显示系统的启动时间:
uptime -s
这将显示系统的启动时间。
stat
"stat"命令用于显示文件或文件系统的详细信息,包括文件大小、访问时间、修改时间等。
常见选项:
选项 | 描述 |
-c | 使用自定义格式输出文件信息。 |
-t | 以可读的方式显示时间戳。 |
-f | 显示文件系统的信息而不是文件本身的信息。 |
-L | 跟踪符号链接的信息。 |
-s | 仅显示文件大小(以字节为单位)。 |
常见用法:
-
显示文件的详细信息:
stat file.txt
这将显示文件file.txt的详细信息,包括大小、权限、时间戳等。 -
使用自定义格式输出文件信息:
stat -c "%A %s %n" file.txt
这将以自定义格式输出文件file.txt的信息,包括权限和大小。 -
以可读的方式显示时间戳:
stat -t file.txt
这将以可读的方式显示文件file.txt的时间戳,如访问时间、修改时间等。 -
显示文件系统的信息:
stat -f /dev/sda1
这将显示文件系统/dev/sda1的信息,而非具体文件的信息。 -
跟踪符号链接的信息:
stat -L sym-link
这将显示符号链接sym-link文件的信息,而非链接指向的文件的信息。 -
仅显示文件大小:
stat -s file.txt
这将仅显示文件file.txt的大小(以字节为单位)。
du
"du"命令用于统计文件或目录的磁盘使用情况,包括文件或目录的大小、磁盘占用量等。
常见选项:
选项 | 描述 |
-h | 以人类可读的方式显示文件或目录的大小。 |
-s | 仅显示总大小,不显示子目录的大小。 |
-c | 显示总大小,并附加最后一行总计大小的信息。 |
-a | 显示所有文件和目录的大小,而非仅显示目录大小。 |
-L | 跟踪符号链接指向的文件和目录的大小。 |
-x | 仅显示当前文件系统上的文件和目录大小,不递归到其他文件系统。 |
常见用法:
-
显示目录的总大小:
du -sh directory
这将以人类可读的方式显示目录directory的总大小。 -
显示目录下所有文件和子目录的大小:
du -ah directory
这将显示目录directory下所有文件和子目录的大小。 -
显示目录下深度为2的目录大小:
du -hd 2 directory
这将显示目录directory下深度为2的目录的大小。 -
显示目录的总大小,并附加最后一行总计大小的信息:
du -ch directory
这将显示目录directory的总大小,并在最后一行附加总计大小的信息。 -
仅显示当前文件系统上的文件和目录大小:
du -x directory
这将仅显示当前文件系统上目录directory及其子目录的大小,不递归到其他文件系统。
df
"df"命令用于显示文件系统的磁盘使用情况,包括文件系统的可用空间、已使用空间、总空间等。
常见选项:
选项 | 描述 |
-h | 以人类可读的方式显示磁盘空间大小。 |
-a | 显示所有的文件系统,包括虚拟文件系统。 |
-T | 显示文件系统类型。 |
-i | 显示inode的使用情况。 |
-x | 排除特定的文件系统类型。 |
-P | 使用POSIX输出格式。 |
-B | 指定块大小。 |
常见用法:
-
显示所有文件系统的磁盘使用情况:
df -h
这将以人类可读的方式显示系统上所有文件系统的磁盘使用情况。 -
显示特定文件系统的磁盘使用情况:
df -hT /dev/sda1
这将以人类可读的方式显示/dev/sda1文件系统的磁盘使用情况,并显示文件系统类型。 -
显示文件系统的inode使用情况:
df -i /dev/sda1
这将显示/dev/sda1文件系统的inode使用情况,包括已用inode、可用inode等。 -
排除特定文件系统类型的磁盘使用情况:
df -h -x squashfs
这将显示系统上所有文件系统的磁盘使用情况,但排除squashfs文件系统。 -
使用POSIX输出格式显示文件系统的磁盘使用情况:
df -P
这将以POSIX输出格式显示系统上所有文件系统的磁盘使用情况
top
"top"命令用于实时监控系统的进程活动和系统资源使用情况。
常用选项:
选项 | 描述 |
-d | 设置刷新时间间隔。 |
-u | 仅显示特定用户的进程。 |
-p | 仅显示特定进程ID的进程。 |
-o | 更改排序字段。 |
-k | 以SI单位(K、M、G等)显示内存和CPU使用情况。 |
常见用法:
-
实时监控系统的进程活动和资源使用情况:
top
这将实时显示系统的进程活动和资源使用情况,包括CPU使用率、内存使用率、进程列表等。 -
设置刷新时间间隔为3秒:
top -d 3
这将每3秒刷新一次top命令的输出。 -
仅显示特定用户的进程:
top -u username
这将仅显示特定用户名为"username"的进程。 -
仅显示特定进程ID的进程:
top -p pid1,pid2,pid3
这将仅显示特定进程ID为"pid1"、“pid2”、"pid3"的进程。 -
更改排序字段为内存使用情况:
top -o %MEM
这将按照内存使用情况从高到低排序进程列表。
date
"date"命令用于显示或设置系统的日期和时间。
常见选项:
选项 | 描述 |
-d | 显示指定日期和时间的格式。 |
-s | 设置日期和时间。 |
+%FORMAT | 指定要显示的日期和时间格式。 |
-u | 显示UTC时间(协调世界时)。 |
-R | 以RFC 2822格式显示日期和时间。 |
常见用法:
-
显示当前日期和时间:
date
这将显示当前系统的日期和时间。 -
显示指定日期和时间的格式:
date -d "2022-12-31 23:59:59"
这将显示指定日期和时间的格式。 -
设置日期和时间:
date -s "2022-12-31 23:59:59"
这将设置系统的日期和时间为指定的日期和时间。 -
显示自定义的日期和时间格式:
date +"%Y-%m-%d %H:%M:%S"
这将以自定义格式显示当前系统的日期和时间。 -
显示UTC时间(协调世界时):
date -u
这将显示当前系统的UTC时间。 -
以RFC 2822格式显示日期和时间:
date -R
这将以RFC 2822格式显示当前系统的日期和时间。
free
"free"命令用于显示系统当前的内存使用情况。
常见选项:
选项 | 描述 |
-h | 以人类可读的方式显示内存大小。 |
-b | 以字节为单位显示内存大小。 |
-m | 以兆字节(MB)为单位显示内存大小。 |
-g | 以吉字节(GB)为单位显示内存大小。 |
-t | 显示总内存使用情况。 |
-s | 以指定的时间间隔连续显示内存使用情况。 |
-c | 显示指定次数的内存使用情况。 |
常见用法:
-
显示系统当前的内存使用情况:
free
这将显示系统当前的内存使用情况,包括总内存、已使用内存、空闲内存等。 -
以人类可读的方式显示内存大小:
free -h
这将以人类可读的方式显示系统当前的内存使用情况。 -
显示总内存使用情况:
free -t
这将显示系统当前的总内存使用情况,包括总内存、已使用内存、空闲内存等。 -
以指定的时间间隔连续显示内存使用情况:
free -s 2
这将以2秒的时间间隔连续显示系统的内存使用情况。 -
显示指定次数的内存使用情况:
free -c 5
这将连续显示5次系统的内存使用情况。
搜索文件相关命令
which
"which"命令用于定位可执行文件的路径。
常见选项:
选项 | 描述 |
-a | 显示所有符合条件的可执行文件路径,而非只显示第一个。 |
-s | 仅显示找到的可执行文件路径,不显示额外的信息。 |
-f | 输出所有符合条件的可执行文件的绝对路径,包括别名、脚本和函数等。 |
-V | 显示which命令的版本信息。 |
常见用法:
-
查找特定命令的路径:
which ls
这将显示"ls"命令的路径。 -
查找所有符合条件的命令路径:
which -a python
这将显示系统中所有符合条件的"python"命令的路径,如果有多个。 -
仅显示找到的命令路径,不显示额外的信息:
which -s gcc
这将仅显示找到的"gcc"命令的路径,而不显示其他信息。 -
输出所有符合条件的命令的绝对路径:
which -f java
这将输出所有符合条件的"java"命令的绝对路径,包括别名、脚本和函数等。 -
显示which命令的版本信息:
which -V
这将显示which命令的版本信息。
whereis
"whereis"命令用于查找指定命令或文件的二进制文件、源代码文件和帮助文件的路径。
常见选项:
选项 | 描述 |
-b | 仅搜索二进制文件。 |
-m | 仅搜索帮助文件。 |
-s | 仅搜索源代码文件。 |
-u | 搜索不在正常路径中的可执行文件、源代码和帮助文件。 |
-B | 指定要搜索的二进制文件路径。 |
-M | 指定要搜索的帮助文件路径。 |
-S | 指定要搜索的源代码文件路径。 |
常见用法:
-
查找特定命令的路径:
whereis ls
这将显示"ls"命令的二进制文件、源代码文件和帮助文件的路径。 -
仅搜索二进制文件:
whereis -b gcc
这将仅搜索"gcc"命令的二进制文件路径。 -
仅搜索帮助文件:
whereis -m tar
这将仅搜索"tar"命令的帮助文件路径。 -
仅搜索源代码文件:
whereis -s python
这将仅搜索"python"命令的源代码文件路径。 -
搜索不在正常路径中的可执行文件、源代码和帮助文件:
whereis -u java
这将搜索"java"命令的可执行文件、源代码和帮助文件,包括不在正常路径中的文件。 -
指定要搜索的二进制文件路径:
whereis -B /usr/bin/ node
这将在指定的路径(/usr/bin/)下搜索"node"命令的二进制文件。 -
指定要搜索的帮助文件路径:
whereis -M /usr/share/man/ gcc
这将在指定的路径(/usr/share/man/)下搜索"gcc"命令的帮助文件。
locate
"locate"命令用于在系统中快速定位文件或目录。
常见选项:
选项 | 描述 |
-i | 忽略大小写。 |
-r | 使用正则表达式进行匹配。 |
-l | 限制结果的数量。 |
-c | 仅计数匹配结果的数量。 |
-n | 仅显示匹配结果行号。 |
常见用法:
-
查找包含指定关键字的文件或目录:
locate text
这将查找包含"text"关键字的文件或目录,并显示所有匹配结果。 -
忽略大小写,查找包含指定关键字的文件:
locate -i Text
这将忽略关键字大小写,查找包含"Text"关键字的文件,并显示所有匹配结果。 -
使用正则表达式,查找匹配特定模式的文件或目录:
locate -r '^doc.*\.pdf$'
这将使用正则表达式,查找文件或目录名以"doc"开头且以".pdf"结尾的文件,并显示所有匹配结果。 -
限制结果的数量,查找指定数量的匹配结果:
locate -l 5 text
这将查找包含"text"关键字的文件或目录,并限制结果显示为5个。 -
仅计数匹配结果的数量:
locate -c text
这将计算包含"text"关键字的文件或目录的数量,而不显示实际匹配结果。 -
仅显示匹配结果的行号:
locate -n text
这将查找包含"text"关键字的文件或目录,并显示匹配结果的行号。
用户管理相关命令
useradd
"useradd"命令用于在Linux系统中创建新用户账号。
常用选项:
选项 | 描述 |
-c | 指定用户账号的注释信息。 |
-d | 指定用户的主目录。 |
-g | 指定用户所属的初始主组。 |
-G | 指定用户所属的附加组。 |
-m | 创建用户时同时创建用户的主目录。 |
-s | 指定用户的登录Shell。 |
常见用法:
-
创建一个新用户账号:
useradd username
这将创建一个名为"username"的新用户账号。 -
创建一个具有注释信息的用户账号:
useradd -c "John Doe" username
这将创建一个名为"username"的新用户账号,并指定注释信息为"John Doe"。 -
创建用户时同时创建用户的主目录:
useradd -m username
这将创建一个名为"username"的新用户账号,并同时创建用户的主目录。 -
指定用户的主目录和登录Shell:
useradd -d /home/username -s /bin/bash username
这将创建一个名为"username"的新用户账号,并指定主目录为"/home/username",登录Shell为"/bin/bash"。 -
指定用户所属的初始主组和附加组:
useradd -g groupname -G group1,group2 username
这将创建一个名为"username"的新用户账号,并指定其所属的初始主组为"groupname",附加组为"group1"和"group2"。
userdel
"userdel"命令用于在Linux系统中删除用户账号。
常见选项:
选项 | 描述 |
-r | 同时删除用户的主目录。 |
-f | 强制删除用户账号,即使用户当前已登录。 |
-Z | 删除用户账号时移除该用户的安全上下文。 |
常见用法:
-
删除一个用户账号:
userdel username
这将删除名为"username"的用户账号。 -
删除用户账号及其主目录:
userdel -r username
这将删除名为"username"的用户账号,并同时删除用户的主目录。 -
强制删除用户账号:
userdel -f username
这将强制删除名为"username"的用户账号,即使用户当前已登录。 -
删除用户账号时移除安全上下文:
userdel -Z username
这将删除名为"username"的用户账号,并同时移除该用户的安全上下文。
passwd
"passwd"命令用于更改用户的密码。
常见选项:
选项 | 描述 |
-l | 锁定用户账号,禁止用户登录系统。 |
-u | 解锁用户账号,允许用户登录系统。 |
-d | 删除用户的密码,允许无密码登录。 |
-e | 强制用户在下次登录时修改密码。 |
常见用法:
-
更改当前用户的密码:
passwd
这将提示输入当前用户的旧密码,然后要求输入新密码两次以进行更改。 -
更改其他用户的密码:
passwd username
这将提示输入管理员密码,然后要求输入新密码两次以更改指定用户名的密码。 -
锁定用户账号并禁止登录:
passwd -l username
这将锁定指定用户名的用户账号,禁止其登录。 -
解锁用户账号并允许登录:
passwd -u username
这将解锁指定用户名的用户账号,允许其登录。 -
删除用户的密码,允许无密码登录:
passwd -d username
这将删除指定用户名的密码,允许其无密码登录。 -
强制用户在下次登录时修改密码:
passwd -e username
这将强制指定用户名的用户在下次登录时修改密码。
id
"id"命令用于显示当前用户或指定用户的用户身份信息。
常见选项:
选项 | 描述 |
-u | 显示用户的用户ID(UID)。 |
-g | 显示用户的组ID(GID)。 |
-G | 显示用户所属的所有组的ID。 |
-n | 以名称而非ID的形式显示用户和组。 |
常见用法:
-
显示当前用户的用户ID:
id -u
这将显示当前用户的用户ID(UID)。 -
显示当前用户的组ID:
id -g
这将显示当前用户的组ID(GID)。 -
显示当前用户所属的所有组的ID:
id -G
这将显示当前用户所属的所有组的ID。 -
以名称形式显示当前用户和组的信息:
id -n
这将以名称而非ID的形式显示当前用户和组的信息。 -
显示指定用户的用户ID和组ID:
id -u -g username
这将显示名为"username"的用户的用户ID和组ID。 -
以名称形式显示指定用户的用户和组信息:
id -n username
这将以名称而非ID的形式显示名为"username"的用户和组的信息。
su
"su"命令用于以其他用户身份登录到系统中。
常见选项:
选项 | 描述 |
-l | 以登录模式切换到目标用户。 |
-c | 在切换用户后执行指定的命令。 |
-s | 指定在切换用户后使用的Shell。 |
常见用法:
-
切换到其他用户:
su username
这将要求输入目标用户"username"的密码,然后切换到该账号。 -
以登录模式切换到其他用户:
su -l username
这将以登录模式切换到目标用户"username",并同时加载其环境变量和配置文件。 -
在切换用户后执行指定的命令:
su -c "command" username
这将以目标用户"username"的身份登录,并执行指定的命令"command"。 -
切换用户后使用特定的Shell:
su -s /bin/bash username
这将以目标用户"username"的身份登录,切换到"/bin/bash"作为Shell。
sudo
"sudo"命令用于以其他用户的权限执行特权命令。
常见选项:
选项 | 描述 |
-u | 以指定的用户名执行命令。 |
-l | 列出当前用户可执行的命令。 |
-i | 以目标用户的环境变量执行命令。 |
-s | 以目标用户的Shell执行命令。 |
-E | 保持当前用户的环境变量。 |
常见用法:
-
以管理员权限执行命令:
sudo command
这将要求输入当前用户的密码,并以管理员权限执行指定的命令。 -
以指定用户的权限执行命令:
sudo -u username command
这将要求输入当前用户的密码,并以指定用户"username"的权限执行命令。 -
列出当前用户可执行的命令:
sudo -l
这将要求输入当前用户的密码,并列出当前用户可执行的命令列表。 -
以目标用户的环境变量执行命令:
sudo -i command
这将要求输入当前用户的密码,并以目标用户的环境变量执行命令。 -
以目标用户的Shell执行命令:
sudo -s command
这将要求输入当前用户的密码,并以目标用户的Shell执行命令。 -
保持当前用户的环境变量执行命令:
sudo -E command
这将要求输入当前用户的密码,并保持当前用户的环境变量执行命令。
usermod
"usermod"命令用于修改用户账号的属性。
常见选项:
选项 | 描述 |
-c | 设置用户账号的注释。 |
-d | 设置用户的主目录。 |
-e | 设置用户账号的过期日期。 |
-s | 设置用户的登录Shell。 |
-G | 修改用户所属的附加组。 |
-a | 将用户添加到指定的附加组。 |
常见应用:
-
修改用户账号的注释:
usermod -c "John Smith" username
这将将用户"username"的注释设置为"John Smith"。 -
修改用户的主目录:
usermod -d /home/newdir username
这将将用户"username"的主目录更改为"/home/newdir"。 -
设置用户账号的过期日期:
usermod -e 2022-12-31 username
这将设置用户"username"的账号过期日期为2022年12月31日。 -
修改用户的登录Shell:
usermod -s /bin/shell username
这将将用户"username"的登录Shell更改为"/bin/shell"。 -
修改用户所属的附加组:
usermod -G group1,group2 username
这将将用户"username"的附加组设置为"group1"和"group2"(替换其他附加组)。 -
将用户添加到指定的附加组:
usermod -a -G group1,group2 username
这将将用户"username"添加到"group1"和"group2"(保留其他附加组)。
groupadd
"groupadd"命令用于新增用户组。
常见选项:
选项 | 描述 |
-g | 指定用户组的组ID(GID)。 |
-r | 创建一个系统用户组。 |
-f | 强制创建用户组,即使已存在。 |
常见用法:
-
创建一个新的用户组:
groupadd groupname
这将创建一个名为"groupname"的新用户组。 -
创建一个具有指定GID的用户组:
groupadd -g 1000 groupname
这将创建一个名为"groupname"、组ID(GID)为1000的新用户组。 -
创建一个系统用户组:
groupadd -r groupname
这将创建一个名为"groupname"的系统用户组。系统用户组的GID值通常小于1000,并且用于特定系统服务。 -
强制创建用户组:
groupadd -f groupname
这将强制创建一个名为"groupname"的用户组,即使已存在。
chage
"chage"命令用于修改用户账号的密码过期设置。
常见选项:
选项 | 描述 |
-d | 设置用户上次更改密码的日期。 |
-E | 设置用户账号的过期日期。 |
-m | 设置用户可以修改密码之间的最小天数。 |
-M | 设置用户的密码有效期限(最大天数)。 |
-I | 设置用户账号处于不活动状态的天数。 |
-l | 显示用户账号的密码过期信息。 |
常见应用:
-
设置用户账号的过期日期:
chage -E 2022-12-31 username
这将设置"usernaem"用户账号的过期日期为2022年12月31日。 -
设置用户可以修改密码之间的最小天数:
chage -m 7 username
这将设置"usernaem"用户可以修改密码之间的最小天数为7天。 -
设置用户的密码有效期限:
chage -M 90 username
这将设置"usernaem"用户的密码有效期限为90天。 -
设置用户账号处于不活动状态的天数:
chage -I 30 username
这将设置"usernaem"用户账号处于不活动状态的天数为30天。 -
显示用户账号的密码过期信息:
chage -l username
这将显示"usernaem"用户账号的密码过期信息,包括上次更改密码的日期、密码过期日期、最小/最大天数和不活动状态的天数。
网络基础相关命令
ifconfig
ifconfig是一个用于配置和显示网络接口配置的命令行工具。它允许用户查看和修改网络接口的IP地址、网络掩码、广播地址、MAC地址等配置信息。
常见用法:
ifconfig
:显示当前系统上所有可用网络接口的配置信息。ifconfig eth0
:显示或配置以太网接口eth0的配置信息。ifconfig eth0 up
:激活以太网接口eth0。ifconfig eth0 down
:禁用以太网接口eth0。ifconfig eth0 192.168.1.10 netmask 255.255.255.0
:为以太网接口eth0配置IP地址192.168.1.10和网络掩码255.255.255.0。
netstat
netstat是一个用于显示网络状态信息的命令行工具。它可以显示网络连接、路由表、接口统计等各种网络相关信息。
常用选项:
选项 | 描述 |
-a | 显示所有的网络连接,包括监听中和已建立的连接。 |
-n | 以数字形式显示IP地址和端口号,而不是显示域名和服务名。 |
-p | 显示占用端口的进程信息。 |
-r | 显示路由表信息。 |
-s | 显示接口的统计信息。 |
常见用法:
netstat
:显示所有活动的网络连接和侦听的端口。netstat -a
:显示所有的网络连接和侦听的端口,包括指定为监听状态的端口。netstat -t
:显示TCP协议相关的网络连接和侦听的端口。netstat -u
:显示UDP协议相关的网络连接和侦听的端口。netstat -p
:显示所有的网络连接和侦听的端口,并显示占用端口的进程信息。netstat -r
:显示当前系统的路由表信息。netstat -s
:显示接口的统计信息,例如接收和发送的数据包数量、错误数量等。
ping
ping是一个用于测试网络连通性的命令行工具,它通过发送ICMP回声请求消息(ping)到目标主机,并等待目标主机的回应消息。通过测量从发送到接收到回应消息的时间,可以评估网络的延迟和丢包情况。
常见选项:
选项 | 描述 |
-c count | 指定发送ping消息的次数。 |
-i interval | 指定发送ping消息的间隔时间,单位为秒。 |
-s size | 指定发送ping消息的数据包大小。 |
-t ttl | 指定发送ping消息的生存时间(TTL)。 |
-W timeout | 指定等待ping回应的超时时间,单位为秒。 |
常见用法:
ping <host>
:向指定的主机发送ping消息,默认发送连续的ping消息,并持续进行测试直到手动停止。ping -c 4 <host>
:向指定的主机发送4个ping消息,并显示每个ping消息的回应情况。ping -i 2 <host>
:向指定的主机发送ping消息,每2秒发送一次。ping -s 1024 <host>
:向指定的主机发送ping消息,指定数据包大小为1024字节。ping -t 64 <host>
:向指定的主机发送ping消息,设置TTL为64。ping -W 5 <host>
:向指定的主机发送ping消息,并设置等待回应的超时时间为5秒。
route
route是一个用于显示和操作网络路由表的命令行工具。它可以用于查看和配置网络数据包的传输路径。
常见选项:
选项 | 描述 |
-n | 以数字形式显示IP地址和网络掩码,而不是显示域名和服务名。 |
add | 添加新的路由。 |
del | 删除已存在的路由。 |
default | 设置默认路由。 |
常见用法:
route
:显示当前系统的路由表信息。route -n
:以数字形式显示当前系统的路由表信息。route add default gw <gateway>
:添加一个默认路由,指定网关地址为。route add -net <network> netmask <netmask> gw <gateway>
:添加一条静态路由,指定目标网络地址为,目标网络的网络掩码为,下一跳网关地址为。route del -net <network> netmask <netmask>
:删除一条静态路由,指定目标网络地址为,目标网络的网络掩码为。route del default gw <gateway>
:删除默认路由,指定网关地址为。
scp
scp是一个用于在本地主机和远程主机之间进行安全文件传输的命令行工具。它通过SSH协议进行加密传输,支持在不同主机之间复制文件和目录。
常见选项:
选项 | 描述 |
-r | 递归复制整个目录。 |
-P | 指定远程主机的SSH端口号。 |
-p | 保持源文件的修改时间和权限。 |
常见用法:
scp <source> <destination>
:将本地主机上的源文件或目录复制到远程主机上的目标位置。scp <user>@<host>:<source> <destination>
:从远程主机上复制文件或目录到本地主机上的目标位置。scp -r <source_dir> <user>@<host>:<destination_dir>
:递归复制整个目录到远程主机上的目标位置。scp -P <port> <source> <user>@<host>:<destination>
:指定远程主机的SSH端口号进行文件复制。scp file.txt user@192.168.1.1:/remote/directory/
:将本地主机上的file.txt文件复制到远程主机192.168.1.1上的/remote/directory/目录中。
wget
wget是一个用于从Web服务器上下载文件的命令行工具。它支持多种协议,包括HTTP、HTTPS和FTP,可以通过URL在命令行中指定要下载的文件。
常见选项:
选项 | 描述 |
-P | 将下载的文件保存到指定目录。 |
-r | 递归下载,用于下载整个目录及其子目录。 |
-N | 只下载比本地文件新的文件。 |
常见用法:
wget <URL>
:下载指定URL的文件到当前目录。wget -P <directory> <URL>
:将下载的文件保存到指定目录。wget -r <URL>
:递归下载指定URL的整个目录及其子目录。wget -N <URL>
:只下载比本地文件新的文件。wget https://example.com/file.txt
:下载指定URL上的file.txt文件到当前目录。wget -P /downloads/ https://example.com/files/file.zip
:将下载的file.zip文件保存到/downloads/目录。
ifup ifdown
常见用法:
ifup <interface>
:启用指定的网络接口。ifdown <interface>
:禁用指定的网络接口。ifup eth0
:启用eth0网络接口。ifdown eth0
:禁用eth0网络接口。
nslookup
nslookup是一个用于查询域名系统(DNS)的命令行工具,通过发送DNS查询请求来获取域名的IP地址和其他相关信息。
常用选项:
-type
:指定要查询的资源记录类型,如A记录、CNAME记录等。-queryclass
:指定要查询的资源记录类别,如IN类别。-debug
:打开调试模式,显示更详细的查询信息。-timeout
:设置查询超时时间。
常见用法:
nslookup <hostname>
:查询指定主机名的IP地址。nslookup <ip_address>
:反向查询指定IP地址的主机名。nslookup -type=mx <domain>
:查询指定域名的邮件交换(MX)记录。nslookup -type=ns <domain>
:查询指定域名的域名服务器(NS)记录。nslookup -type=cname <domain>
:查询指定域名的规范名称(CNAME)记录
tcpdump
tcpdump是一个命令行网络抓包工具,用于捕获网络数据包并进行分析。它可以监听网络接口,显示经过接口的数据包的详细信息,如源IP地址、目标IP地址、协议类型、端口号等。
常见选项:
选项 | 用法 |
-i | 指定要监听的网络接口。 |
-n | 禁用将IP地址和端口号解析为主机名和服务名。 |
-c | 仅捕获指定数量的数据包。 |
-s | 指定捕获数据包的最大长度。 |
-w | 将捕获的数据包写入指定文件。 |
常见用法:
tcpdump
:开始监听默认网络接口的数据包。tcpdump -i eth0
:开始监听名称为eth0的网络接口的数据包。tcpdump -n
:监听数据包,以IP地址和端口号的数字形式显示。tcpdump -c 10
:捕获并显示前10个数据包。tcpdump -s 1500
:捕获指定接口的数据包,最大长度为1500字节。tcpdump -w capture.pcap
:将捕获的数据包写入名为capture.pcap的文件。- tcpdump -i eth0 'port 80' -w xxxxx.pcap :抓取通过网卡eth0进出的HTTP请求和响应数据包,并将其保存到一个数据包文件中
lsof
lsof(List Open Files)是一个用于列出当前系统中打开的文件和进程相关信息的命令行工具。它可以显示哪些文件被打开、被哪个进程打开以及进程与文件之间的关联关系等。
常见选项:
选项 | 描述 |
-i | 显示网络连接相关的信息。 |
-p | 显示指定进程ID相关的信息。 |
-u | 显示指定用户名相关的信息。 |
-c | 显示指定命令相关的信息。 |
-t | 显示套接字和IPC相关的信息。 |
常见用法:
lsof
:列出当前系统上所有打开的文件和进程相关信息。lsof -i
:列出当前系统上所有网络连接相关的信息。lsof -p <pid>
:列出指定进程ID相关的打开文件信息。lsof -u <username>
:列出指定用户名相关的打开文件信息。lsof -c <command>
:列出指定命令相关的打开文件信息。lsof -t /tmp/socket
:列出指定套接字(socket)或IPC相关的信息。
nmap
nmap(Network Mapper)是一个用于网络探测和主机发现的开源工具。它可以扫描目标网络或主机,识别开放的端口,判断网络服务的类型及版本,并提供网络拓扑图和其他相关信息。
常见选项:
选项 | 描述 |
-p | 指定要扫描的端口号。 |
-F | 快速扫描模式,只扫描常用的100个端口。 |
-sS | 使用TCP SYN扫描(半开放扫描)。 |
-sT | 使用TCP连接扫描(全连接扫描)。 |
-v | 显示详细的扫描输出。 |
-sU | 使用UDP扫描。 |
常见用法:
nmap 192.168.0.1
:扫描192.168.0.1主机的所有端口。nmap -p 80,443 192.168.0.1
:扫描192.168.0.1主机的80和443端口。nmap -F 192.168.0.1
:进行快速扫描,仅扫描192.168.0.1主机上的常用端口。nmap -sS 192.168.0.1
:使用TCP SYN扫描方式扫描192.168.0.1主机的所有端口。nmap -sT 192.168.0.1
:使用TCP连接方式扫描192.168.0.1主机的所有端口。nmap -sU 192.168.0.1
:使用UDP扫描方式扫描192.168.0.1主机的所有端口。nmap -O 192.168.0.1
:识别192.168.0.1主机的操作系统类型。nmap -v 192.168.0.1
:显示详细的扫描输出信息。nmap -A 192.168.0.1
:使用高级扫描选项扫描192.168.0.1主机。