- 一、文件管理
- 1.
ls
- 显示目录中文件及其属性信息 - 2.
cd
- 切换目录 - 3.
mkdir
- 创建目录文件 - 4.
rmdir
- 删除空目录文件 - 5.
rm
- 删除文件或目录 - 6.
cp
- 复制文件或目录 - 7.
mv
- 移动或改名文件 - 8.
touch
- 创建文件 - 9.
ln
- 创建链接 - 10.
find
- 根据路径和条件搜索指定文件 - 11.
nl
- 为文件添加行号 - 12.
tail
- 查看文件尾部内容 - 13.
head
- 查看文件开头内容 - 二、文档编辑
- 1.
cat
- 在终端设备上显示文件内容 - 2.
grep
- 强大的文本搜索工具 - 3.
sed
- 批量编辑文本文件 - 4.
awk
- 文本处理工具 - 5.
vi
/vim
- 文本编辑器 - 6.
cut
- 文本切割工具 - 7.
wc
- 统计文件的行数、字数和字节数 - 8.
sort
- 对文本进行排序 - 9.
tr
- 字符转换、删除和压缩工具 - 10.
rev
- 反转文本的字符顺序 - 11.
nl
- 为文件添加行号 - 12.
tail
- 查看文件尾部内容 - 13.
head
- 查看文件开头内容 - 三、系统管理
- 1.
ps
- 显示进程状态 - 2.
top
- 实时监控系统中进程的资源使用情况 - 3.
kill
- 杀死进程 - 4.
useradd
- 创建并设置用户信息 - 5.
userdel
- 删除用户 - 6.
usermod
- 修改用户信息 - 7.
groupadd
- 创建用户组 - 8.
groupdel
- 删除用户组 - 9.
chmod
- 改变文件或目录权限 - 10.
chown
- 改变文件或目录的所有者和所属组 - 四、磁盘管理
- 1.
df
- 显示磁盘空间使用量情况 - 2.
du
- 显示目录或文件的磁盘使用量 - 3.
fdisk
- 管理磁盘分区 - 4.
mkfs
- 格式化磁盘分区 - 5.
mount
- 将文件系统挂载到目录 - 6.
umount
- 卸载挂载的文件系统 - 五、文件传输
- 1.
scp
- 安全地复制文件和目录 - 2.
rsync
- 远程数据同步工具 - 3.
ftp
- 文件传输协议客户端 - 六、网络通讯
- 1.
ping
- 测试主机间网络连通性 - 2.
traceroute
- 跟踪数据包到达目标主机的路径 - 3.
nslookup
- 查询 DNS 记录 - 4.
dig
- 查询 DNS 信息 - 5.
ssh
- 安全的远程连接服务 - 6.
netstat
- 显示网络状态 - 7.
ifconfig
- 显示或设置网络设备参数信息 - 8.
ip
- 管理网络接口、路由、设备和隧道 - 七、备份压缩
- 1.
tar
- 压缩和解压缩文件 - 2.
zip
- 压缩文件 - 3.
unzip
- 解压缩 zip 格式文件 - 4.
xz
- 高压缩率的压缩和解压缩工具 - 5.
gzip
- 压缩文件 - 6.
gunzip
- 解压文件 - 八、其他命令
- 1.
echo
- 输出字符串或提取后的变量值 - 2.
history
- 显示与管理历史命令记录 - 3.
alias
- 创建命令别名 - 4.
export
- 设置环境变量 - 5.
source
- 执行脚本并在当前 shell 中生效 - 14.
test
- 条件测试命令 - 15.
ss
- 查看套接字统计信息 - 16.
ethtool
- 查看和修改网络接口的硬件设置 - 查看网络接口的设置
- 修改网络接口的速度
一、文件管理
1. ls
- 显示目录中文件及其属性信息
- 功能:列出目录内容。
- 常用参数:
-a
:显示所有文件和目录,包括以.
开头的隐藏文件。-l
:以长格式显示文件和目录的详细信息,如权限、所有者、大小、修改时间等。-h
:与-l
结合使用,以人类可读的格式显示文件大小(如K
、M
、G
等)。-R
:递归列出子目录的内容。-t
:按文件修改时间排序,最新的文件排在最前面。-S
:按文件大小排序,最大的文件排在最前面。
- 示例:
# 显示当前目录下所有文件和目录,包括隐藏文件 ls -a # 以长格式显示当前目录下的文件和目录 ls -l # 以长格式和人类可读的格式显示当前目录下的文件和目录 ls -lh # 递归列出当前目录及其子目录下的所有文件和目录 ls -R # 按文件修改时间排序显示当前目录下的文件和目录 ls -lt # 按文件大小排序显示当前目录下的文件和目录 ls -lS
- 题目:
- 如何以长格式显示
/home
目录下的所有文件和目录,包括隐藏文件,并按文件大小排序? - 如何递归列出
/var/log
目录下的所有文件和目录,并以人类可读的格式显示文件大小,按修改时间排序? - 如何只显示当前目录下的目录,不显示文件,并按文件修改时间排序?
- 如何以长格式显示
2. cd
- 切换目录
- 功能:改变当前工作目录。
- 常用参数:无
- 示例:
# 进入指定目录 cd /home/user # 进入用户主目录 cd ~ # 返回上一级目录 cd .. # 返回上上一级目录 cd ../..
- 题目:
- 如何从当前目录进入
/usr/local
目录? - 如何从
/home/user
目录返回上一级目录? - 如何进入当前用户的主目录?
- 如何从当前目录进入
3. mkdir
- 创建目录文件
- 功能:创建新的目录。
- 常用参数:
-p
:递归创建目录,即如果父目录不存在,也会一并创建。
- 示例:
# 在当前目录下创建一个名为 test 的目录 mkdir test # 递归创建多层目录 mkdir -p /home/user/test/subdir
- 题目:
- 如何在
/home
目录下创建一个名为new_dir
的目录? - 如何在当前目录下递归创建
dir1/dir2/dir3
目录? - 如何创建一个带有空格的目录名,如
my new dir
?
- 如何在
4. rmdir
- 删除空目录文件
- 功能:删除空目录。
- 常用参数:无
- 示例:
# 删除当前目录下的空目录 test rmdir test
- 题目:
- 如何删除
/home/user
目录下的空目录empty_dir
? - 如果目录不为空,使用
rmdir
会有什么结果? - 如何删除多层空目录,如
dir1/dir2/dir3
?
- 如何删除
5. rm
- 删除文件或目录
- 功能:删除文件或目录。
- 常用参数:
-r
:递归删除目录及其内容。-f
:强制删除,不提示确认。-i
:交互式删除,删除前询问确认。
- 示例:
# 删除文件 rm test.txt # 递归删除目录及其内容 rm -r test_dir # 强制删除文件 rm -f test.txt # 交互式删除文件 rm -i test.txt
- 题目:
- 如何删除
/home/user
目录下的所有.log
文件? - 如何强制递归删除
/home/user/test
目录及其内容? - 如何在删除文件前进行交互式确认?
- 如何删除
6. cp
- 复制文件或目录
- 功能:复制文件或目录。
- 常用参数:
-r
:递归复制目录及其内容。-p
:保留源文件或目录的属性,如权限、时间戳等。-i
:覆盖既有文件之前先询问用户。-a
:此参数的效果和同时指定-dpR
参数相同,即归档复制,保留文件的所有属性。
- 示例:
# 复制文件 cp test.txt new_test.txt # 递归复制目录 cp -r test_dir new_test_dir # 复制文件并保留属性 cp -p test.txt new_test.txt # 覆盖文件前询问用户 cp -i test.txt new_test.txt # 归档复制目录 cp -a test_dir new_test_dir
- 题目:
- 如何将
/home/user
目录下的所有.txt
文件复制到/backup
目录下,并保留属性? - 如何递归复制
/home/user/test
目录及其内容到/backup/test
目录下,覆盖文件前询问用户? - 如何使用
-a
参数复制/home/user
目录到/backup
目录?
- 如何将
7. mv
- 移动或改名文件
- 功能:移动文件或目录,也可用于重命名文件或目录。
- 常用参数:无
- 示例:
# 移动文件 mv test.txt /home/user/ # 重命名文件 mv test.txt new_name.txt
- 题目:
- 如何将
/home/user
目录下的old_file.txt
移动到/backup
目录下,并改名为new_file.txt
? - 如何将
/home/user/test
目录移动到/backup
目录下? - 如何重命名
/home/user
目录为/home/new_user
?
- 如何将
8. touch
- 创建文件
- 功能:创建一个新的空文件,如果文件已存在,则更新其访问和修改时间。
- 常用参数:无
- 示例:
# 在当前目录下创建一个名为 test.txt 的文件 touch test.txt
- 题目:
- 如何在
/home/user
目录下创建一个名为new_file.txt
的文件? - 如果
test.txt
文件已存在,使用touch
命令会有什么效果? - 如何同时创建多个文件,如
file1.txt
、file2.txt
、file3.txt
?
- 如何在
9. ln
- 创建链接
- 功能:创建硬链接或符号链接。
- 常用参数:
-s
:创建符号链接(软链接)。
- 示例:
# 创建硬链接 ln /home/user/test.txt /home/user/link_to_test.txt # 创建符号链接 ln -s /home/user/test.txt /home/user/soft_link_to_test.txt
- 题目:
- 如何在
/home/user
目录下为/var/log/syslog
文件创建一个符号链接? - 硬链接和符号链接有什么区别?
- 如何删除符号链接?
- 如何在
10. find
- 根据路径和条件搜索指定文件
- 功能:在指定目录下根据各种条件查找文件。
- 常用参数:
-name
:按文件名查找。-size
:按文件大小查找,+
表示大于指定大小,-
表示小于指定大小,单位可以是k
(KB)、M
(MB)、G
(GB)等。-type
:按文件类型查找,f
表示文件,d
表示目录,l
表示链接文件等。-mtime
:按文件修改时间查找,+
表示大于指定天数,-
表示小于指定天数。-exec
:对查找到的文件执行指定的命令,命令以{}
表示当前文件,以\;
结尾。-perm
:按文件权限查找,可使用数字或符号表示权限。
- 示例:
# 在当前目录下查找所有名为 test.txt 的文件 find . -name test.txt # 在 /home 目录下查找大小大于 10M 的文件 find /home -size +10M # 在当前目录下查找所有目录 find . -type d # 在当前目录下查找最近 7 天内修改过的文件 find . -mtime -7 # 查找当前目录下所有 .txt 文件,并将其删除 find . -name "*.txt" -exec rm {} \; # 查找当前目录下权限为 755 的文件 find . -perm 755
- 题目:
- 如何在
/var/log
目录下查找所有扩展名为.log
且大小小于 1M 的文件? - 如何在
/home
目录下查找最近 30 天内未修改过的目录,并将其删除? - 如何查找当前目录下权限为 644 的
.sh
文件,并将其权限修改为 755?
- 如何在
11. nl
- 为文件添加行号
- 功能:为文件内容添加行号,可对行号进行多种显示设计。
- 常用参数:
-b
:指定行号指定的方式,-b a
表示不论是否为空行,也同样列出行号;-b t
表示空行不列出行号(默认值)。-n
:列出行号表示的方法,-n ln
表示行号在屏幕最左方显示;-n rn
表示行号在自己栏位最右方显示,且不加 0;-n rz
表示行号在自己栏位最右方显示,且加 0。-w
:行号栏位占用的位数。-p
:在逻辑定界符处不重新开始计算行号。
- 示例:
# 为文件添加行号 .nl test.txt # 空行也加上行号 .nl -b a test.txt # 让行号前面自动补上 0,统一输出格式 .nl -b a -n rz test.txt # 调整行号位数为 3 位 .nl -b a -n rz -w 3 test.txt
- 题目:
- 如何为
/home/user/test.txt
文件添加行号,且空行也显示行号,行号显示在最右方,位数为 3 位? - 如何在逻辑定界符处不重新开始计算行号?
- 如何将行号的显示格式设置为
001
、002
等?
- 如何为
12. tail
- 查看文件尾部内容
- 功能:查看文件尾部内容,默认显示文件末尾 10 行。
- 常用参数:
-c
:设置显示文件尾部的字符数。-f
:持续显示文件尾部最新内容。-n
:设置显示文件尾部的行数。--pid
:当指定 PID 进程结束时,自动退出命令。
- 示例:
# 默认显示指定文件尾部的后 10 行内容 .tail File.cfg # 指定显示指定文件尾部的后 5 行内容 .tail -n 5 File.cfg # 指定显示指定文件尾部的后 30 个字节 .tail -c 30 File.cfg # 持续刷新显示指定文件尾部的后 10 行内容 .tail -f File.cfg # 当指定 PID 进程结束时,自动退出命令 .tail -f --pid=1234 File.cfg
- 题目:
- 如何查看
/var/log/syslog
文件的最后 20 行内容? - 如何持续监控
/var/log/messages
文件的最新内容,直到 PID 为 5678 的进程结束? - 如何查看
/home/user/test.txt
文件的最后 50 个字符?
- 如何查看
13. head
- 查看文件开头内容
- 功能:显示文件开头的内容,默认为前 10 行。
- 常用参数:
-c
:设置显示头部内容的字符数。-n
:设置显示行数。-v
:显示文件名的头信息。-q
:不显示文件名的头信息。
- 示例:
# 默认显示文件的前 10 行内容 .head -n 10 File.cfg # 显示指定文件的前 5 行内容 .head -n 5 File.cfg # 显示指定文件的前 20 个字符 .head -c 20 File.cfg # 显示文件名的头信息 .head -v File.cfg # 不显示文件名的头信息 .head -q File.cfg
- 题目:
- 如何查看
/var/log/syslog
文件的前 15 行内容,并显示文件名的头信息? - 如何查看
/home/user/test.txt
文件的前 30 个字符,不显示文件名的头信息? - 如何同时查看多个文件(如
file1.txt
、file2.txt
)的前 5 行内容,并显示文件名的头信息?
- 如何查看
二、文档编辑
1. cat
- 在终端设备上显示文件内容
- 功能:显示文件内容,也可用于合并文件。
- 常用参数:
-n
:显示行号。-b
:只对非空行显示行号。-s
:压缩连续的空行,只显示一行。
- 示例:
# 显示文件内容 cat test.txt # 显示文件内容并显示行号 cat -n test.txt # 只对非空行显示行号 cat -b test.txt # 压缩连续的空行 cat -s test.txt # 合并两个文件并输出到新文件 cat file1.txt file2.txt > new_file.txt
- 题目:
- 如何显示
/var/log/syslog
文件的内容,并显示行号,同时压缩连续的空行? - 如何将
file1.txt
、file2.txt
和file3.txt
合并为一个文件merged.txt
,并显示合并后文件的行号? - 如何只显示文件的前 10 行内容,并显示行号?
- 如何显示
2. grep
- 强大的文本搜索工具
- 功能:在文件中搜索匹配指定模式的行。
- 常用参数:
-n
:显示匹配行的行号。-i
:忽略大小写。-r
:递归搜索目录及其子目录中的文件。-v
:显示不匹配的行。-E
:使用扩展正则表达式。
- 示例:
# 在文件中搜索包含 hello 的行,并显示行号 grep -n "hello" test.txt # 递归搜索目录及其子目录中的文件,查找包含 hello 的行 grep -r "hello" /home/user/ # 搜索不包含 hello 的行 grep -v "hello" test.txt # 使用扩展正则表达式搜索包含数字的行 grep -E "[0-9]" test.txt
- 题目:
- 如何在
/var/log/syslog
文件中搜索包含error
的行,并显示行号,忽略大小写? - 如何递归搜索
/home/user
目录及其子目录中的文件,查找不包含password
的行? - 如何使用扩展正则表达式搜索
/home/user/test.txt
文件中以字母开头的行?
- 如何在
3. sed
- 批量编辑文本文件
- 功能:流编辑器,用于对文本进行替换、删除、插入等操作。
- 常用参数:
-i
:直接修改文件内容。s
:替换操作,格式为s/原字符串/新字符串/g
,g
表示全局替换。d
:删除操作。a
:在指定行后插入内容。i
:在指定行前插入内容。
- 示例:
# 将文件中的所有 hello 替换为 world,并输出结果 sed 's/hello/world/g' test.txt # 直接修改文件中的所有 hello 替换为 world sed -i 's/hello/world/g' test.txt # 删除文件中的所有空行 sed '/^$/d' test.txt # 在第 3 行后插入内容 sed '3a This is a new line.' test.txt # 在第 5 行前插入内容 sed '5i This is a new line before.' test.txt
- 题目:
- 如何将
/var/log/syslog
文件中的所有error
替换为warning
,并直接修改文件内容? - 如何删除
/home/user/test.txt
文件中以#
开头的行? - 如何在
/home/user/test.txt
文件的第 10 行后插入内容New content
?
- 如何将
4. awk
- 文本处理工具
- 功能:用于文本处理和数据提取,支持模式匹配和编程。
- 常用参数:无
- 示例:
# 打印文件的第一列 awk '{print $1}' test.txt # 计算文件中第二列的总和 awk '{sum+=$2} END {print sum}' test.txt # 筛选出第二列大于 10 的行 awk '$2 > 10 {print}' test.txt # 按第三列排序并输出 awk '{print $0}' test.txt | sort -k 3
- 题目:
- 如何打印
/var/log/syslog
文件的第三列? - 如何统计文件中每行的字段数?
- 如何筛选出
/home/user/test.txt
文件中第一列以abc
开头的行?
- 如何打印
5. vi
/vim
- 文本编辑器
- 功能:强大的文本编辑器,用于编辑各种文本文件。
- 常用操作:
i
:进入插入模式,开始编辑文本。Esc
:退出插入模式,进入命令模式。:wq
:保存并退出。:q!
:不保存并退出。/
:在命令模式下,用于搜索文本。:%s/原字符串/新字符串/g
:在命令模式下,用于全局替换文本。
- 示例:
# 编辑文件 vi test.txt
- 题目:
- 如何使用
vi
编辑器打开/home/user/test.txt
文件,并在文件末尾添加一行内容Hello, World!
? - 如何在
vi
编辑器中查找文件中的hello
字符串,并将其替换为world
? - 如何在
vi
编辑器中删除第 5 行到第 10 行的内容?
- 如何使用
6. cut
- 文本切割工具
- 功能:使用分隔符、字节、字段和列从平面文件数据库或行中获取所需的字符串。
- 常用参数:
-b
:按字节位置切割。-c
:按字符位置切割。-d
:与-f
配合,指定分隔符来提取字符串。-f
:按指定字段提取。-s
:仅提取包含分隔符的行。--complement
:打印除指定字段外的输出。--output-delimiter
:替换输出中的分隔符。
- 示例:
# 按字节位置提取字符串 .echo "Hello World" | cut -b 1,2,3,5,8,9 # 按字符位置提取字符串 .echo "Hello World" | cut -c 1,2,3,5,6,8,10,11 # 按字段提取字符串 .cut -f 3 database.txt # 使用分隔符提取字符串 .cut -d ':' -f 1 /etc/passwd # 仅提取包含分隔符的行 .cut -d ':' -f 1 -s /etc/passwd # 打印除指定字段外的输出 .cut -d ':' --complement -s -f 5 /etc/passwd # 替换输出中的分隔符 .cut -d ':' -f 1,5 --output-delimiter='@' /etc/passwd
- 题目:
- 如何从
/etc/passwd
文件中提取第二列内容? - 如何将
echo "The 1% of the 1%"
的输出按空格分隔,提取第二和第三字段,并替换输出分隔符为逗号? - 如何按字节范围提取字符串,如提取前 5 个字节?
- 如何从
7. wc
- 统计文件的行数、字数和字节数
- 功能:计算文件的行数、字数和字节数。
- 常用参数:
-l
:显示行数。-w
:显示字数。-m
:显示字符数。-c
:显示字节数。-L
:显示最长行的长度。
- 示例:
# 统计文件的行数、字数和字节数 .wc /home/linuxy/passwd-10 # 统计文件的行数 .wc -l /home/linuxy/passwd-10 # 统计文件的字数 .wc -w /home/linuxy/passwd-10 # 统计文件的字符数 .wc -m /home/linuxy/passwd-10 # 统计文件的字节数 .wc -c /home/linuxy/passwd-10 # 统计文件最长行的长度 .wc -L /home/linuxy/passwd-10
- 题目:
- 如何统计
/var/log/syslog
文件的行数? - 如何统计
/home/user/test.txt
文件的字数? - 如何统计多个文件(如
file1.txt
、file2.txt
)的总行数?
- 如何统计
8. sort
- 对文本进行排序
- 功能:对文本进行排序。
- 常用参数:
-n
:按数字顺序排序。-r
:反向排序。-k
:指定排序的字段。-t
:指定字段分隔符。
- 示例:
# 对文件内容进行排序 .sort test.txt # 按数字顺序排序 .sort -n numbers.txt # 反向排序 .sort -r test.txt # 按指定字段排序 .sort -k 2 data.txt # 按指定字段排序,指定字段分隔符为逗号 .sort -k 2 -t ',' data.csv
- 题目:
- 如何对
/home/user/numbers.txt
文件中的数字进行排序? - 如何对
/var/log/syslog
文件按第二列进行反向排序,字段分隔符为空格? - 如何对包含多列数据的文件按第三列进行数字排序,字段分隔符为制表符?
- 如何对
9. tr
- 字符转换、删除和压缩工具
- 功能:用于字符转换,删除和压缩。可将一组字符转换为另一组字符,删除一组字符,或者压缩一组字符。
- 常用参数:
-d
:删除 SET1 中所有的字符。-s
:压缩 SET1 中所有重复的字符。-c
:使用 SET1 中未列出的字符替代原始字符。
- 示例:
# 将小写字母转换为大写字母 .echo 'hello world' | tr 'a-z' 'A-Z' # 删除字符串中的所有数字 .echo 'hello world123' | tr -d '0-9' # 将字符串中的所有空格替换为下划线 .echo 'hello world' | tr ' ' '_' # 压缩字符串中的连续空格 .echo 'hello world' | tr -s ' ' # 使用 SET1 中未列出的字符替代原始字符 .echo 'hello' | tr -c 'aeiou' 'X'
- 题目:
- 如何将
/home/user/test.txt
文件中的所有小写字母转换为大写字母? - 如何删除
/var/log/syslog
文件中的所有数字和标点符号? - 如何将
/home/user/input.txt
文件中的所有空格替换为逗号,并压缩连续的逗号?
- 如何将
10. rev
- 反转文本的字符顺序
- 功能:将指定文件或标准输入的每一行文本的字符顺序反转。
- 常用参数:
-V
:显示版本信息并退出。-h
:显示帮助信息并退出。
- 示例:
# 从标准输入读取数据并反转 .rev # 从文件读取数据并反转 .rev filelist.txt # 使用 echo 命令将文本传递给 rev 命令 .echo "Linux is fun" | rev # 反转文件内容并保存到新文件 .rev file.txt > new_file.txt
- 题目:
- 如何反转
/home/user/test.txt
文件中每一行的字符顺序,并保存到新文件reversed.txt
? - 如何使用
rev
命令去除文本中的标点符号? - 如何提取文件名的后缀?
- 如何反转
11. nl
- 为文件添加行号
- 功能:为文件内容添加行号,可对行号进行多种显示设计。
- 常用参数:
-b
:指定行号指定的方式,-b a
表示不论是否为空行,也同样列出行号;-b t
表示空行不列出行号(默认值)。-n
:列出行号表示的方法,-n ln
表示行号在屏幕最左方显示;-n rn
表示行号在自己栏位最右方显示,且不加 0;-n rz
表示行号在自己栏位最右方显示,且加 0。-w
:行号栏位占用的位数。-p
:在逻辑定界符处不重新开始计算行号。
- 示例:
# 为文件添加行号 .nl test.txt # 空行也加上行号 .nl -b a test.txt # 让行号前面自动补上 0,统一输出格式 .nl -b a -n rz test.txt # 调整行号位数为 3 位 .nl -b a -n rz -w 3 test.txt
- 题目:
- 如何为
/home/user/test.txt
文件添加行号,且空行也显示行号,行号显示在最右方,位数为 3 位? - 如何在逻辑定界符处不重新开始计算行号?
- 如何将行号的显示格式设置为
001
、002
等?
- 如何为
12. tail
- 查看文件尾部内容
- 功能:查看文件尾部内容,默认显示文件末尾 10 行。
- 常用参数:
-c
:设置显示文件尾部的字符数。-f
:持续显示文件尾部最新内容。-n
:设置显示文件尾部的行数。--pid
:当指定 PID 进程结束时,自动退出命令。
- 示例:
# 默认显示指定文件尾部的后 10 行内容 .tail File.cfg # 指定显示指定文件尾部的后 5 行内容 .tail -n 5 File.cfg # 指定显示指定文件尾部的后 30 个字节 .tail -c 30 File.cfg # 持续刷新显示指定文件尾部的后 10 行内容 .tail -f File.cfg # 当指定 PID 进程结束时,自动退出命令 .tail -f --pid=1234 File.cfg
- 题目:
- 如何查看
/var/log/syslog
文件的最后 20 行内容? - 如何持续监控
/var/log/messages
文件的最新内容,直到 PID 为 5678 的进程结束? - 如何查看
/home/user/test.txt
文件的最后 50 个字符?
- 如何查看
13. head
- 查看文件开头内容
- 功能:显示文件开头的内容,默认为前 10 行。
- 常用参数:
-c
:设置显示头部内容的字符数。-n
:设置显示行数。-v
:显示文件名的头信息。-q
:不显示文件名的头信息。
- 示例:
# 默认显示文件的前 10 行内容 .head -n 10 File.cfg # 显示指定文件的前 5 行内容 .head -n 5 File.cfg # 显示指定文件的前 20 个字符 .head -c 20 File.cfg # 显示文件名的头信息 .head -v File.cfg # 不显示文件名的头信息 .head -q File.cfg
- 题目:
- 如何查看
/var/log/syslog
文件的前 15 行内容,并显示文件名的头信息? - 如何查看
/home/user/test.txt
文件的前 30 个字符,不显示文件名的头信息? - 如何同时查看多个文件(如
file1.txt
、file2.txt
)的前 5 行内容,并显示文件名的头信息?
- 如何查看
三、系统管理
1. ps
- 显示进程状态
- 功能:显示当前系统中正在运行的进程信息。
- 常用参数:
-e
:显示所有进程。-f
:显示完整格式的进程信息。-u
:显示指定用户的进程。-p
:显示指定 PID 的进程。-aux
:显示所有用户的所有进程的详细信息,包括 CPU 和内存使用情况。-o
:自定义输出格式。
- 示例:
# 显示所有进程 ps -e # 显示所有进程的完整信息 ps -ef # 显示指定用户的进程 ps -u user # 显示指定 PID 的进程 ps -p 1234 # 显示所有用户的所有进程的详细信息 ps -aux # 自定义输出格式,显示 PID 和命令 ps -eo pid,cmd
- 题目:
- 如何显示所有用户的所有进程的完整信息,并按 CPU 使用率排序?
- 如何显示用户
root
的所有进程,并只显示 PID、用户和命令? - 如何显示 PID 为 5678 的进程的详细信息?
2. top
- 实时监控系统中进程的资源使用情况
- 功能:实时显示系统中各个进程的资源使用情况,如 CPU、内存等。
- 常用参数:无
- 示例:
# 启动 top 命令 .top
- 题目:
- 如何在
top
命令中按 CPU 使用率排序? - 如何在
top
命令中查看指定用户的进程? - 如何退出
top
命令?
- 如何在
3. kill
- 杀死进程
- 功能:向进程发送信号,终止进程。
- 常用参数:
-9
:强制终止进程。-1
:发送 SIGHUP 信号,通常用于重启或重新加载进程。-2
:发送 SIGINT 信号,通常由 Ctrl+C 发送给前台进程。-15
:发送 SIGTERM 信号,默认的终止信号,要求进程优雅地退出。
- 示例:
# 终止指定 PID 的进程 kill 1234 # 强制终止指定 PID 的进程 kill -9 1234 # 发送 SIGHUP 信号给指定 PID 的进程 kill -1 1234 # 发送 SIGINT 信号给指定 PID 的进程 kill -2 1234 # 发送 SIGTERM 信号给指定 PID 的进程 kill -15 1234
- 题目:
- 如何终止 PID 为 5678 的进程?
- 如果进程无法正常终止,应该使用什么参数?
- 如何向进程发送
SIGHUP
信号?
4. useradd
- 创建并设置用户信息
- 功能:创建新用户。
- 常用参数:
-m
:自动创建用户的主目录。-g
:指定用户所属的主组。-G
:指定用户所属的附加组。-s
:指定用户的登录 Shell。-c
:指定用户的注释信息。
- 示例:
# 创建新用户,并自动创建主目录 useradd -m new_user # 创建新用户,并指定主组和附加组 useradd -m -g users -G wheel new_user # 创建新用户,并指定登录 Shell useradd -m -s /bin/bash new_user # 创建新用户,并指定注释信息 useradd -m -c "Test user" new_user
- 题目:
- 如何创建一个名为
test_user
的用户,并自动创建主目录,指定主组为users
,附加组为sudo
,登录 Shell 为/bin/zsh
? - 如果忘记使用
-m
参数创建用户,应该如何解决? - 如何查看新创建用户的信息?
- 如何创建一个名为
5. userdel
- 删除用户
- 功能:删除用户。
- 常用参数:
-r
:同时删除用户的主目录和邮件 spool。
- 示例:
# 删除用户 userdel new_user # 删除用户,并删除主目录和邮件 spool userdel -r new_user
- 题目:
- 如何删除用户
test_user
,并删除其主目录和邮件 spool? - 删除用户后,相关的系统文件会有什么变化?
- 如果用户正在登录,能否直接删除该用户?
- 如何删除用户
6. usermod
- 修改用户信息
- 功能:修改用户的信息,如用户名、主目录、登录 Shell 等。
- 常用参数:
-d
:修改用户的主目录。-s
:修改用户的登录 Shell。-g
:修改用户的主组。-G
:修改用户的附加组。-l
:修改用户名。
- 示例:
# 修改用户的主目录 usermod -d /home/new_home new_user # 修改用户的登录 Shell usermod -s /bin/bash new_user # 修改用户的主组 usermod -g users new_user # 修改用户的附加组 usermod -G sudo new_user # 修改用户名 usermod -l new_username old_username
- 题目:
- 如何将用户
test_user
的主目录修改为/home/new_test_user
? - 如何将用户
test_user
的登录 Shell 修改为/bin/zsh
? - 如何将用户
test_user
的用户名修改为new_test_user
?
- 如何将用户
7. groupadd
- 创建用户组
- 功能:创建新的用户组。
- 常用参数:
-g
:指定组的 GID。
- 示例:
# 创建新的用户组 .groupadd new_group # 创建新的用户组,并指定 GID .groupadd -g 1001 new_group
- 题目:
- 如何创建一个名为
test_group
的用户组? - 如何创建一个名为
new_group
的用户组,并指定 GID 为 1002? - 如何查看新创建用户组的信息?
- 如何创建一个名为
8. groupdel
- 删除用户组
- 功能:删除用户组。
- 常用参数:无
- 示例:
# 删除用户组 .groupdel new_group
- 题目:
- 如何删除用户组
test_group
? - 如果用户组中还有用户,能否直接删除该用户组?
- 删除用户组后,相关的系统文件会有什么变化?
- 如何删除用户组
9. chmod
- 改变文件或目录权限
- 功能:修改文件或目录的权限。
- 常用参数:
- 数字表示法:如
755
、644
等。 - 符号表示法:如
u+r
、g+w
、o-x
等。 -R
:递归修改目录及其子目录下的所有文件和目录的权限。
- 数字表示法:如
- 示例:
# 使用数字表示法修改文件权限 chmod 755 test.txt # 使用符号表示法修改文件权限 chmod u+rwx,g+rx,o+r test.txt # 递归修改目录及其子目录下的所有文件和目录的权限 chmod -R 755 test_dir
- 题目:
- 如何将
/home/user/test.txt
文件的权限修改为所有者可读、可写、可执行,所属组可读、可执行,其他用户可读? - 如何使用符号表示法为
/home/user/test_dir
目录及其子目录下的所有文件和目录的所有者添加写权限? - 如何查看文件或目录的当前权限?
- 如何将
10. chown
- 改变文件或目录的所有者和所属组
- 功能:修改文件或目录的所有者和所属组。
- 常用参数:无
- 示例:
# 修改文件的所有者和所属组 chown new_user:new_group test.txt # 修改目录及其子目录下的所有文件和目录的所有者和所属组 chown -R new_user:new_group test_dir
- 题目:
- 如何将
/home/user/test.txt
文件的所有者修改为new_user
,所属组修改为new_group
? - 如何递归修改
/home/user/test_dir
目录及其子目录下的所有文件和目录的所有者为root
,所属组为root
? - 修改文件或目录的所有者和所属组需要什么权限?
- 如何将
四、磁盘管理
1. df
- 显示磁盘空间使用量情况
- 功能:显示文件系统的磁盘使用情况,如已用空间、可用空间、挂载点等。
- 常用参数:
-h
:以人类可读的格式显示磁盘空间。-T
:显示文件系统的类型。
- 示例:
# 显示所有文件系统的磁盘使用情况 .df # 以人类可读的格式显示所有文件系统的磁盘使用情况 .df -h # 显示所有文件系统的磁盘使用情况,并显示文件系统类型 .df -hT
- 题目:
- 如何以人类可读的格式显示
/home
分区的磁盘使用情况,并显示文件系统类型? - 如何查看某个文件系统的详细信息?
- 如何查看所有挂载点的磁盘使用情况?
- 如何以人类可读的格式显示
2. du
- 显示目录或文件的磁盘使用量
- 功能:估算文件或目录的磁盘使用量。
- 常用参数:
-h
:以人类可读的格式显示磁盘使用量。-s
:只显示总计。-c
:显示所有文件和目录的总大小。
- 示例:
# 显示当前目录及其子目录的磁盘使用量 .du # 以人类可读的格式显示当前目录及其子目录的磁盘使用量 .du -h # 只显示当前目录的总计磁盘使用量 .du -s # 显示所有文件和目录的总大小 .du -hc
- 题目:
- 如何以人类可读的格式显示
/var/log
目录的磁盘使用量,并显示总大小? - 如何查看某个文件的磁盘使用量?
- 如何只显示
/home/user
目录的总计磁盘使用量?
- 如何以人类可读的格式显示
3. fdisk
- 管理磁盘分区
- 功能:用于创建、删除、修改磁盘分区。
- 常用参数:无
- 示例:
# 查看磁盘分区信息 .fdisk -l # 对 /dev/sda 磁盘进行分区操作 .fdisk /dev/sda
- 题目:
- 如何查看
/dev/sdb
磁盘的分区信息? - 如何在
/dev/sdc
磁盘上创建一个新的分区? - 分区操作后,需要做什么才能使分区生效?
- 如何查看
4. mkfs
- 格式化磁盘分区
- 功能:对磁盘分区进行格式化,创建文件系统。
- 常用参数:无
- 示例:
# 对 /dev/sda1 分区进行 ext4 格式化 .mkfs.ext4 /dev/sda1 # 对 /dev/sdb2 分区进行 xfs 格式化 .mkfs.xfs /dev/sdb2
- 题目:
- 如何对
/dev/sdb2
分区进行 xfs 格式化? - 格式化磁盘分区会有什么后果?
- 格式化前需要注意什么?
- 如何对
5. mount
- 将文件系统挂载到目录
- 功能:将文件系统挂载到指定的挂载点。
- 常用参数:
-t
:指定文件系统类型。-o
:指定挂载选项,如ro
(只读)、rw
(读写)等。
- 示例:
# 将 /dev/sda1 分区挂载到 /mnt 目录 .mount /dev/sda1 /mnt # 将 /dev/sdb2 分区以只读方式挂载到 /backup 目录 .mount -t xfs -o ro /dev/sdb2 /backup
- 题目:
- 如何将
/dev/sdb2
分区挂载到/backup
目录,并指定文件系统类型为 xfs? - 如何将
/dev/sda1
分区以读写方式挂载到/mnt
目录? - 如何查看当前系统的挂载信息?
- 如何将
6. umount
- 卸载挂载的文件系统
- 功能:卸载已挂载的文件系统。
- 常用参数:无
- 示例:
# 卸载 /mnt 目录的挂载 .umount /mnt # 卸载 /dev/sda1 分区的挂载 .umount /dev/sda1
- 题目:
- 如何卸载
/backup
目录的挂载? - 如果文件系统正在被使用,能否直接卸载?
- 卸载文件系统后,相关的目录会有什么变化?
- 如何卸载
五、文件传输
1. scp
- 安全地复制文件和目录
- 功能:在本地和远程主机之间安全地复制文件和目录。
- 常用参数:
-r
:递归复制目录。-P
:指定远程主机的 SSH 端口。
- 示例:
# 从远程主机复制文件到本地 .scp user@remote:/path/to/file /local/path # 从本地复制文件到远程主机 .scp /local/path user@remote:/path/to/file # 递归复制目录 .scp -r user@remote:/path/to/dir /local/path # 指定远程主机的 SSH 端口 .scp -P 2222 user@remote:/path/to/file /local/path
- 题目:
- 如何从远程主机
remote_server
的/home/user
目录复制test.txt
文件到本地的/backup
目录,远程主机的 SSH 端口为 2222? - 如何将本地的
/home/user/test_dir
目录递归复制到远程主机remote_server
的/backup
目录? - 复制文件或目录时,需要注意什么?
- 如何从远程主机
2. rsync
- 远程数据同步工具
- 功能:用于在本地和远程主机之间同步文件和目录,支持增量同步。
- 常用参数:
-r
:递归同步目录。-a
:归档模式,保留文件的所有属性。-v
:显示详细的同步信息。-z
:压缩传输数据。
- 示例:
# 从远程主机同步文件到本地 .rsync -av user@remote:/path/to/dir /local/path # 从本地同步文件到远程主机 .rsync -av /local/path user@remote:/path/to/dir # 递归同步目录并压缩传输数据 .rsync -avz user@remote:/path/to/dir /local/path
- 题目:
- 如何从远程主机
remote_server
的/home/user
目录同步test_dir
目录到本地的/backup
目录,并显示详细的同步信息,压缩传输数据? - 如何将本地的
/home/user/test_dir
目录同步到远程主机remote_server
的/backup
目录,只同步修改过的文件? rsync
与scp
有什么区别?
- 如何从远程主机
3. ftp
- 文件传输协议客户端
- 功能:用于通过 FTP 协议进行文件传输。
- 常用参数:无
- 示例:
# 连接到 FTP 服务器 .ftp ftp.example.com # 登录 FTP 服务器 .user username password # 下载文件 .get file.txt # 上传文件 .put file.txt # 退出 FTP 客户端 .quit
- 题目:
- 如何连接到 FTP 服务器
ftp.example.com
,并下载test.txt
文件? - 如何上传本地的
new_file.txt
文件到 FTP 服务器? - FTP 协议有什么优缺点?
- 如何连接到 FTP 服务器
六、网络通讯
1. ping
- 测试主机间网络连通性
- 功能:测试与目标主机的网络连通性。
- 常用参数:
-c
:指定发送的数据包数量。-i
:指定发送数据包的时间间隔。-w
:指定等待响应的超时时间。-s
:指定数据包的大小。
- 示例:
# 测试与目标主机的连通性,发送 5 个数据包 .ping -c 5 8.8.8.8 # 测试与目标主机的连通性,发送数据包的时间间隔为 2 秒 .ping -i 2 8.8.8.8 # 测试与目标主机的连通性,等待响应的超时时间为 10 秒 .ping -w 10 8.8.8.8 # 测试与目标主机的连通性,指定数据包大小为 1000 字节 .ping -s 1000 8.8.8.8
- 题目:
- 如何测试与
www.google.com
的网络连通性,发送 10 个数据包,时间间隔为 1 秒,数据包大小为 500 字节? - 如果
ping
命令没有响应,可能是什么原因? - 如何查看
ping
命令的详细统计信息?
- 如何测试与
2. traceroute
- 跟踪数据包到达目标主机的路径
- 功能:跟踪数据包从本地主机到目标主机所经过的路由。
- 常用参数:
-n
:以数字形式显示 IP 地址,不进行域名解析。-m
:指定最大跳数。
- 示例:
# 跟踪到目标主机的路由 .traceroute 8.8.8.8 # 以数字形式显示 IP 地址,跟踪到目标主机的路由 .traceroute -n 8.8.8.8 # 指定最大跳数为 20,跟踪到目标主机的路由 .traceroute -m 20 8.8.8.8
- 题目:
- 如何跟踪到
www.baidu.com
的路由,并以数字形式显示 IP 地址? traceroute
命令的输出结果表示什么?- 如果
traceroute
命令在某个节点停止,可能是什么原因?
- 如何跟踪到
3. nslookup
- 查询 DNS 记录
- 功能:查询域名对应的 IP 地址或反向查询 IP 地址对应的域名。
- 常用参数:无
- 示例:
# 查询域名对应的 IP 地址 .nslookup www.google.com # 反向查询 IP 地址对应的域名 .nslookup 8.8.8.8
- 题目:
- 如何查询
www.github.com
的 IP 地址? - 如何反向查询
192.168.1.1
的域名? - 如果
nslookup
命令没有返回结果,可能是什么原因?
- 如何查询
4. dig
- 查询 DNS 信息
- 功能:更强大的 DNS 查询工具,可查询各种 DNS 记录。
- 常用参数:
-t
:指定查询的记录类型,如A
、MX
、NS
等。
- 示例:
# 查询域名的 A 记录 .dig www.google.com A # 查询域名的 MX 记录 .dig www.google.com MX
- 题目:
- 如何查询
www.baidu.com
的 A 记录? - 如何查询
example.com
的 MX 记录? dig
命令与nslookup
命令有什么区别?
- 如何查询
5. ssh
- 安全的远程连接服务
- 功能:通过 SSH 协议安全地远程连接到其他主机。
- 常用参数:
-p
:指定远程主机的 SSH 端口。-i
:指定私钥文件。
- 示例:
# 连接到远程主机 .ssh user@remote # 连接到远程主机,并指定端口 .ssh -p 2222 user@remote # 连接到远程主机,并指定私钥文件 .ssh -i /path/to/private_key user@remote
- 题目:
- 如何连接到远程主机
remote_server
,使用用户test_user
登录,远程主机的 SSH 端口为 2222? - 如何使用私钥文件连接到远程主机
remote_server
? - 如何在 SSH 连接中执行远程命令?
- 如何连接到远程主机
6. netstat
- 显示网络状态
- 功能:显示网络连接、路由表、接口状态等信息。
- 常用参数:
-a
:显示所有连接和监听端口。-t
:只显示 TCP 连接。-u
:只显示 UDP 连接。-n
:以数字形式显示地址和端口。-p
:显示建立相关链接的程序名。
- 示例:
# 显示所有网络连接和监听端口 .netstat -a # 只显示 TCP 连接 .netstat -t # 只显示 UDP 连接 .netstat -u # 以数字形式显示地址和端口 .netstat -n # 显示建立相关链接的程序名 .netstat -p
- 题目:
- 如何显示所有 TCP 连接的详细信息,包括建立链接的程序名?
- 如何查看监听端口的信息,并以数字形式显示地址和端口?
netstat
命令的输出结果中,各个字段表示什么含义?
7. ifconfig
- 显示或设置网络设备参数信息
- 功能:显示或设置网络接口的配置信息。
- 常用参数:无
- 示例:
# 显示所有网络接口的配置信息 .ifconfig # 显示指定网络接口的配置信息 .ifconfig eth0 # 设置网络接口的 IP 地址 .ifconfig eth0 192.168.1.100 netmask 255.255.255.0
- 题目:
- 如何显示
eth1
网络接口的配置信息? - 如何设置
eth0
网络接口的 IP 地址为192.168.1.200
,子网掩码为255.255.255.0
? ifconfig
命令已逐渐被ip
命令取代,ip
命令有什么优势?
- 如何显示
8. ip
- 管理网络接口、路由、设备和隧道
- 功能:更强大的网络管理命令,可替代
ifconfig
等命令。 - 常用参数:无
- 示例:
# 显示网络接口的 IP 地址和状态 .ip addr show # 设置网络接口的 IP 地址 .ip addr add 192.168.1.100/24 dev eth0 # 删除网络接口的 IP 地址 .ip addr del 192.168.1.100/24 dev eth0 # 显示路由表 .ip route show # 添加路由 .ip route add 192.168.2.0/24 via 192.168.1.1
- 题目:
- 如何显示
eth1
网络接口的详细信息? - 如何设置
eth0
网络接口的 IP 地址为192.168.1.200
,子网掩码为255.255.255.0
? - 如何添加一条默认路由,网关为
192.168.1.1
?
- 如何显示
七、备份压缩
1. tar
- 压缩和解压缩文件
- 功能:用于打包和压缩文件或目录。
- 常用参数:
-c
:创建新的归档文件。-x
:从归档文件中提取文件。-v
:显示详细的操作信息。-f
:指定归档文件的名称。-z
:使用 gzip 压缩。-j
:使用 bzip2 压缩。-C
:指定解压的目标目录。
- 示例:
# 创建一个 gzip 压缩的归档文件 .tar -zcvf archive.tar.gz file1 file2 dir1 # 解压 gzip 压缩的归档文件到指定目录 .tar -zxvf archive.tar.gz -C /backup # 创建一个 bzip2 压缩的归档文件 .tar -jcvf archive.tar.bz2 file1 file2 dir1 # 解压 bzip2 压缩的归档文件 .tar -jxvf archive.tar.bz2
- 题目:
- 如何将
/home/user
目录下的所有.txt
文件打包并压缩为backup.tar.gz
文件? - 如何解压
backup.tar.bz2
文件到/backup
目录? tar
命令的不同压缩选项有什么区别?
- 如何将
2. zip
- 压缩文件
- 功能:用于压缩文件或目录。
- 常用参数:
-r
:递归压缩目录及其子目录。-e
:添加密码保护。
- 示例:
# 压缩文件 .zip archive.zip file1 file2 # 递归压缩目录 .zip -r archive.zip dir1 # 压缩文件并添加密码保护 .zip -e archive.zip file1
- 题目:
- 如何将
/home/user
目录下的test_dir
目录压缩为test.zip
文件,并添加密码保护? - 如何在压缩文件时排除某些文件?
zip
与tar
有什么区别?
- 如何将
3. unzip
- 解压缩 zip 格式文件
- 功能:用于解压 zip 格式的压缩文件。
- 常用参数:
-d
:指定解压的目标目录。-l
:列出.zip
文件中的内容,但不解压。-v
:显示详细信息,包括.zip
文件的结构和压缩率等信息。-t
:测试.zip
文件的完整性,但不解压。-n
:解压时不覆盖已存在的文件。-o
:解压时覆盖已存在的文件,而不提示。-x
:解压时排除指定的文件或目录。-j
:解压时不保留目录结构,将所有文件解压到当前目录中。
- 示例:
# 解压缩 .zip 文件 unzip archive.zip # 解压到指定目录 unzip archive.zip -d /path/to/directory # 列出 .zip 文件的内容 unzip -l archive.zip # 测试 .zip 文件的完整性 unzip -t archive.zip # 解压时排除特定文件 unzip archive.zip -x "*.log" # 解压时不覆盖已存在的文件 unzip -n archive.zip # 解压缩文件并覆盖已存在的文件 unzip -o archive.zip # 解压缩时不保留目录结构 unzip -j archive.zip
- 题目:
- 如何将
test.zip
文件解压到/home/user/extract
目录? - 如果解压时遇到同名文件,应该如何处理?
- 如何查看 zip 文件的内容而不解压?
- 如何将
4. xz
- 高压缩率的压缩和解压缩工具
- 功能:使用 LZMA2 压缩算法,对文件进行高压缩率的压缩和解压缩。
- 常用参数:
-z
,--compress
:强制压缩。-d
,--decompress
,--uncompress
:强制解压缩。-t
,--test
:测试压缩文件的完整性。-l
,--list
:列出有关.xz
文件的信息。-k
,--keep
:保留输入文件。-f
,--force
:强制覆盖输出文件和(解)压缩链接。-c
,--stdout
,--to-stdout
:写入标准输出,不删除输入文件。-0
…-9
:压缩预设,默认为 6,使用 7 - 9 前需考虑压缩和解压缩内存使用量。-e
,--extreme
:尝试通过使用更多的 CPU 时间来提高压缩比。-T
,--threads=NUM
:最多使用 NUM 个线程,默认值为 1,设置为 0 则使用与处理器内核一样多的线程。
- 示例:
# 压缩文件 xz 20221119test2.txt # 解压文件并保留原文件 xz -dk 20221119test2.txt.xz # 显示 .xz 文件的基本信息 xz -l 20221119test2.txt.xz
- 题目:
- 如何将
/home/user/test.txt
文件压缩为test.txt.xz
,并保留原文件,使用多线程压缩? - 如何测试
test.txt.xz
文件的完整性? - 如何以最高压缩比压缩
/home/user/data.txt
文件?
- 如何将
5. gzip
- 压缩文件
- 功能:使用 DEFLATE 压缩算法减小文件大小,主要用于压缩文本文件、Tar 归档文件和网页。
- 常用参数:
-d
:解压缩文件。-f
:强制压缩文件,即使已经存在同名的压缩文件。-k
:压缩文件并保留原始文件。-r
:递归地压缩目录中的所有文件。-v
:显示正在处理的文件的名称和压缩比。-1
:最快的压缩速度,最小的压缩比。-9
:最慢的压缩速度,最大的压缩比。
- 示例:
# 压缩单个文件 .gzip filename # 保留原始文件 .gzip -k filename # 压缩多个文件 .gzip file1 file2 file3 # 改变压缩级别 .gzip -9 filename # 解压缩文件 .gzip -d filename.gz # 递归压缩目录 .gzip -r directoryname
- 题目:
- 如何将
/home/user
目录下的所有.txt
文件压缩为.gz
文件,并保留原始文件,以最快速度压缩? - 如何解压缩
/backup/test.txt.gz
文件,并显示详细的解压缩信息? - 如何递归压缩
/home/user/backup
目录下的所有文件,并显示压缩进度?
- 如何将
6. gunzip
- 解压文件
- 功能:解开被 gzip 压缩过的文件。
- 常用参数:
-c
:将解压缩后的文件内容输出到标准输出(而不是写入文件)。-d
:解压缩文件(默认行为,可省略)。-f
:强制解压缩,即使已存在同名的解压缩文件。-k
:保留原始的压缩文件。-l
:显示压缩文件的详细信息,包括压缩前后的文件大小、压缩比等。-n
:不覆盖已存在的解压缩文件。-q
:静默模式,不显示解压缩进度和错误信息。-r
:递归地解压缩指定目录下的所有文件。-t
:测试压缩文件的完整性,而不进行实际的解压缩操作。-v
:显示详细的解压缩信息,包括解压缩的文件名、压缩比等。
- 示例:
# 解压缩文件 .gunzip example.txt.gz # 解压缩文件并保留原始文件 .gunzip -k example.txt.gz # 解压缩文件并将内容输出到标准输出 .gunzip -c example.txt.gz # 递归地解压缩目录下的所有文件 .gunzip -r directory
- 题目:
- 如何解压缩
/backup/test.txt.gz
文件,并将解压缩后的内容输出到标准输出,保留原始压缩文件? - 如何测试
test.txt.gz
文件的完整性,并显示详细信息? - 如何递归地解压缩
/home/user/backup
目录下的所有.gz
文件,不覆盖已存在的解压缩文件?
- 如何解压缩
八、其他命令
1. echo
- 输出字符串或提取后的变量值
- 功能:输出字符串或变量的值。
- 常用参数:
-n
:不输出换行符。-e
:启用反斜杠转义功能。
- 示例:
# 输出字符串 .echo "Hello, World!" # 输出变量的值 .name="John" .echo $name # 不输出换行符 .echo -n "No newline." # 启用反斜杠转义功能 .echo -e "Hello\tWorld!"
- 题目:
- 如何输出当前日期和时间,不输出换行符?
- 如何将输出结果重定向到文件,并启用反斜杠转义功能?
- 如何在输出中使用变量和字符串的组合,并输出换行符?
2. history
- 显示与管理历史命令记录
- 功能:显示历史命令记录。
- 常用参数:
-c
:清除历史命令记录。-n
:显示最近的 n 条历史命令记录。
- 示例:
# 显示历史命令记录 .history # 清除历史命令记录 .history -c # 显示最近的 10 条历史命令记录 .history -n 10
- 题目:
- 如何查看最近 10 条历史命令记录?
- 如何清除历史命令记录?
- 如何重复执行上一条命令?
3. alias
- 创建命令别名
- 功能:创建命令的别名,方便使用。
- 常用参数:无
- 示例:
# 创建别名 .alias ll='ls -l' # 使用别名 .ll
- 题目:
- 如何创建一个名为
rmf
的别名,其实际命令为rm -rf
? - 如何查看已创建的别名?
- 如何删除已创建的别名?
- 如何创建一个名为
4. export
- 设置环境变量
- 功能:设置环境变量。
- 常用参数:无
- 示例:
# 设置环境变量 .export PATH=$PATH:/home/user/bin # 查看环境变量的值 .echo $PATH
- 题目:
- 如何设置一个名为
MY_VAR
的环境变量,其值为hello
? - 如何使环境变量在所有会话中都生效?
- 如何查看所有环境变量的值?
- 如何设置一个名为
5. source
- 执行脚本并在当前 shell 中生效
- 功能:执行脚本文件,并使脚本中的变量和函数在当前 shell 中生效。
- 常用参数:无
- 示例:
# 执行脚本文件 .source script.sh
- 题目:
- 如何执行
/home/user/test.sh
脚本文件,并使其中的变量在当前 shell 中生效? source
命令与直接执行脚本有什么区别?- 如果脚本文件有错误,
source
命令会有什么反应?
- 如何执行
14. test
- 条件测试命令
- 功能:用于测试文件类型、比较数值、字符串等条件。
- 常用参数:
- 文件测试:
-e
(文件是否存在)、-f
(是否为普通文件)、-d
(是否为目录)、-r
(是否可读)、-w
(是否可写)、-x
(是否可执行)等。 - 数值比较:
-eq
(等于)、-ne
(不等于)、-gt
(大于)、-lt
(小于)、-ge
(大于等于)、-le
(小于等于)等。 - 字符串比较:
=
(相等)、!=
(不相等)、-z
(字符串是否为空)、-n
(字符串是否不为空)等。
- 文件测试:
- 示例:
# 测试文件是否存在 .if test -e test.txt; then echo "File exists"; fi # 比较数值 .if test 5 -gt 3; then echo "5 is greater than 3"; fi # 比较字符串 .if test "hello" = "hello"; then echo "Strings are equal"; fi # 测试文件是否可读 .if test -r test.txt; then echo "File is readable"; fi
- 题目:
- 如何测试
/home/user/test.txt
文件是否存在且可写? - 如何比较两个数值(如 10 和 20)的大小,并输出比较结果?
- 如何判断两个字符串(如 “abc” 和 “def”)是否相等,并根据结果执行不同的操作?
- 如何测试
15. ss
- 查看套接字统计信息
- 功能:查看套接字统计信息,可替代
netstat
命令。 - 常用参数:
-t
:只显示 TCP 套接字。-u
:只显示 UDP 套接字。-l
:只显示监听套接字。-n
:以数字形式显示地址和端口。-p
:显示使用套接字的进程信息。
- 示例:
# 显示所有 TCP 监听套接字 .ss -tl # 显示所有 UDP 套接字 .ss -u # 以数字形式显示地址和端口,显示使用套接字的进程信息 .ss -tnp
- 题目:
- 如何查看所有 TCP 连接的详细信息,包括使用套接字的进程信息?
- 如何查看监听 UDP 端口的信息,并以数字形式显示地址和端口?
ss
命令与netstat
命令有什么区别?
16. ethtool
- 查看和修改网络接口的硬件设置
作者:严锋 创建时间:2023-11-07 12:14
最后编辑:严锋 更新时间:2025-04-27 18:22
最后编辑:严锋 更新时间:2025-04-27 18:22