简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

站内搜索

搜索

活动公告

11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28
通知:签到时间调整为每日4:00(东八区)
10-23 09:26

elementary OS系统命令行使用指南从零基础到专家详解必备命令与实用技巧助你高效管理系统并解决实际问题的完整学习手册

3万

主题

423

科技点

3万

积分

大区版主

木柜子打湿

积分
31916

三倍冰淇淋无人之境【一阶】财Doro小樱(小丑装)立华奏以外的星空【二阶】⑨的冰沙

发表于 2025-9-27 14:50:00 | 显示全部楼层 |阅读模式 [标记阅至此楼]

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. elementary OS系统简介

elementary OS是一款基于Ubuntu LTS的Linux发行版,以其简洁、优雅的设计和用户友好的界面而闻名。虽然elementary OS提供了美观的图形用户界面(GUI),但掌握命令行操作将极大地提升你的系统管理效率和问题解决能力。

命令行(也称为终端、Shell或控制台)是用户通过文本命令与计算机交互的方式。在elementary OS中,默认使用的Shell是Bash(Bourne Again Shell),它功能强大且灵活。

2. 命令行基础

2.1 打开终端

在elementary OS中,有几种方式可以打开终端:

1. 使用快捷键Ctrl + Alt + T,这是最快捷的方式。
2. 通过应用程序菜单:点击”应用程序” → “系统工具” → “终端”。
3. 使用Super键(Windows键)打开搜索,输入”终端”或”Terminal”并按回车。

2.2 终端基本设置

打开终端后,你可以进行一些基本设置来提升使用体验:
  1. # 查看当前使用的Shell
  2. echo $SHELL
  3. # 查看可用的Shell
  4. cat /etc/shells
  5. # 更改终端字体大小
  6. # 在终端中右键 → 配置文件首选项 → 常规 → 自定义字体
  7. # 设置终端颜色主题
  8. # 在终端中右键 → 配置文件首选项 → 颜色
复制代码

2.3 命令基本结构

Linux命令的基本结构如下:
  1. 命令 [选项] [参数]
复制代码

• 命令:告诉系统要执行的操作
• 选项:调整命令行为的标志,通常以-(短选项)或--(长选项)开头
• 参数:命令操作的对象

例如:
  1. ls -l /home
复制代码

这里,ls是命令,-l是选项,/home是参数。

2.4 获取帮助

在学习命令行时,了解如何获取帮助非常重要:
  1. # 查看命令的简要帮助
  2. command --help
  3. # 查看命令的详细手册
  4. man command
  5. # 查看命令的信息页
  6. info command
  7. # 查看命令的简要描述
  8. whatis command
  9. # 查找与关键词相关的命令
  10. apropos keyword
复制代码

例如,查看ls命令的帮助:
  1. ls --help
  2. man ls
复制代码

3. 基础命令详解

3.1 文件列表命令ls

ls命令用于列出目录内容。
  1. # 列出当前目录的内容
  2. ls
  3. # 列出详细信息,包括权限、所有者、大小和修改时间
  4. ls -l
  5. # 列出所有文件,包括隐藏文件(以.开头的文件)
  6. ls -a
  7. # 列出所有文件的详细信息
  8. ls -la
  9. # 以人类可读的格式显示文件大小(如K、M、G)
  10. ls -lh
  11. # 按修改时间排序,最新的在前
  12. ls -lt
  13. # 按文件大小排序,最大的在前
  14. ls -lS
  15. # 递归列出子目录的内容
  16. ls -R
复制代码

3.2 目录切换命令cd

cd命令用于更改当前工作目录。
  1. # 切换到主目录
  2. cd
  3. # 切换到指定目录
  4. cd /path/to/directory
  5. # 切换到上一级目录
  6. cd ..
  7. # 切换到上一次的工作目录
  8. cd -
  9. # 切换到当前用户的主目录
  10. cd ~
  11. # 切换到指定用户的主目录
  12. cd ~username
复制代码

3.3 显示当前工作目录pwd

pwd命令用于显示当前工作目录的完整路径。
  1. # 显示当前工作目录
  2. pwd
  3. # 显示符号链接的实际路径(物理路径)
  4. pwd -P
复制代码

3.4 查看文件内容cat

cat命令用于连接文件并打印到标准输出。
  1. # 显示文件内容
  2. cat filename
  3. # 显示多个文件的内容
  4. cat file1 file2
  5. # 显示行号
  6. cat -n filename
  7. # 显示非空行的行号
  8. cat -b filename
  9. # 在每行末尾显示$符号
  10. cat -E filename
  11. # 将文件内容输出到新文件
  12. cat file1 > newfile
  13. # 将文件内容追加到已有文件
  14. cat file1 >> existingfile
复制代码

3.5 分页查看文件内容less和more

对于大文件,使用less或more命令可以分页查看内容。
  1. # 使用less查看文件
  2. less filename
  3. # 使用more查看文件
  4. more filename
复制代码

在less中,可以使用以下快捷键:

• 空格或f:向前翻一页
• b:向后翻一页
• Enter:向前一行
• q:退出
• /pattern:搜索模式
• n:查找下一个匹配项
• p:查找上一个匹配项

3.6 查看文件开头和结尾head和tail
  1. # 查看文件前10行
  2. head filename
  3. # 查看文件前n行
  4. head -n 20 filename
  5. # 查看文件后10行
  6. tail filename
  7. # 查看文件后n行
  8. tail -n 20 filename
  9. # 实时查看文件更新(常用于日志文件)
  10. tail -f filename
复制代码

4. 文件和目录管理命令

4.1 创建目录mkdir
  1. # 创建单个目录
  2. mkdir directory_name
  3. # 创建多个目录
  4. mkdir dir1 dir2 dir3
  5. # 创建多级目录(包括父目录)
  6. mkdir -p path/to/directory
  7. # 创建目录并设置权限
  8. mkdir -m 755 directory_name
复制代码

4.2 创建空文件touch
  1. # 创建空文件
  2. touch filename
  3. # 创建多个文件
  4. touch file1 file2 file3
  5. # 更新文件的访问和修改时间
  6. touch existing_file
  7. # 只更新文件的访问时间
  8. touch -a existing_file
  9. # 只更新文件的修改时间
  10. touch -m existing_file
  11. # 设置特定的时间戳
  12. touch -t 202301011200.00 filename
复制代码

4.3 复制文件和目录cp
  1. # 复制文件
  2. cp source_file destination_file
  3. # 复制文件到目录
  4. cp file1 file2 directory/
  5. # 复制目录(递归)
  6. cp -r source_directory destination_directory
  7. # 复制时保留文件属性
  8. cp -p source_file destination_file
  9. # 复制时显示详细信息
  10. cp -v source_file destination_file
  11. # 复制时覆盖前确认
  12. cp -i source_file destination_file
  13. # 创建文件的硬链接而不是复制
  14. cp -l source_file destination_file
  15. # 创建文件的符号链接而不是复制
  16. cp -s source_file destination_file
复制代码

4.4 移动和重命名文件mv
  1. # 移动文件
  2. mv source_file destination_directory/
  3. # 重命名文件
  4. mv old_name new_name
  5. # 移动目录
  6. mv source_directory destination_directory/
  7. # 移动前确认
  8. mv -i source_file destination_file
  9. # 移动时显示详细信息
  10. mv -v source_file destination_file
  11. # 如果目标文件存在则不覆盖
  12. mv -n source_file destination_file
  13. # 强制覆盖目标文件
  14. mv -f source_file destination_file
复制代码

4.5 删除文件和目录rm
  1. # 删除文件
  2. rm filename
  3. # 删除多个文件
  4. rm file1 file2 file3
  5. # 删除前确认
  6. rm -i filename
  7. # 删除时显示详细信息
  8. rm -v filename
  9. # 强制删除(不提示确认)
  10. rm -f filename
  11. # 递归删除目录及其内容
  12. rm -r directory_name
  13. # 强制递归删除目录及其内容(使用时需非常小心)
  14. rm -rf directory_name
复制代码

4.6 查找文件find

find命令是一个强大的工具,用于在目录树中搜索文件。
  1. # 在当前目录及其子目录中查找名为filename的文件
  2. find . -name filename
  3. # 查找所有.txt文件
  4. find . -name "*.txt"
  5. # 查找目录
  6. find . -type d -name directory_name
  7. # 查找文件
  8. find . -type f -name filename
  9. # 查找大小大于100MB的文件
  10. find . -type f -size +100M
  11. # 查找修改时间在7天以内的文件
  12. find . -type f -mtime -7
  13. # 查找空文件
  14. find . -type f -empty
  15. # 查找并对找到的文件执行操作(如删除)
  16. find . -name "*.tmp" -delete
  17. # 查找并对找到的文件执行命令
  18. find . -name "*.jpg" -exec convert {} {}.png \;
复制代码

4.7 定位文件locate

locate命令通过搜索预建的数据库来快速查找文件。
  1. # 更新文件数据库(需要root权限)
  2. sudo updatedb
  3. # 查找包含filename的文件
  4. locate filename
  5. # 查找以filename开头的文件
  6. locate filename*
  7. # 查找以filename结尾的文件
  8. locate *filename
  9. # 显示匹配项的数量
  10. locate -c filename
  11. # 只显示存在的文件
  12. locate -e filename
复制代码

5. 系统管理命令

5.1 系统信息
  1. # 显示系统信息
  2. uname -a
  3. # 显示内核信息
  4. uname -r
  5. # 显示操作系统信息
  6. lsb_release -a
  7. # 显示系统运行时间
  8. uptime
  9. # 显示当前登录用户
  10. who
  11. # 显示当前用户及其活动
  12. w
  13. # 显示系统资源使用情况
  14. free -h
  15. # 显示磁盘使用情况
  16. df -h
  17. # 显示目录或文件的磁盘使用情况
  18. du -sh directory_name
  19. # 显示系统进程
  20. ps aux
  21. # 实时显示系统进程
  22. top
  23. # 更友好的实时系统进程监控
  24. htop
复制代码

5.2 用户和权限管理
  1. # 查看当前用户
  2. whoami
  3. # 查看用户ID
  4. id
  5. # 查看所有用户
  6. cat /etc/passwd
  7. # 添加新用户(需要root权限)
  8. sudo adduser username
  9. # 删除用户(需要root权限)
  10. sudo deluser username
  11. # 修改用户密码
  12. passwd
  13. # 修改其他用户密码(需要root权限)
  14. sudo passwd username
  15. # 切换用户
  16. su username
  17. # 切换到root用户
  18. sudo su
复制代码

Linux文件权限分为读®、写(w)和执行(x)三种,分别对应数字4、2和1。
  1. # 查看文件权限
  2. ls -l filename
  3. # 修改文件权限
  4. chmod permissions filename
  5. # 使用数字模式修改权限
  6. chmod 755 filename  # rwxr-xr-x
  7. chmod 644 filename  # rw-r--r--
  8. # 使用符号模式修改权限
  9. chmod u+x filename  # 为所有者添加执行权限
  10. chmod g-w filename  # 移除组的写权限
  11. chmod o+r filename  # 为其他用户添加读权限
  12. chmod a=rx filename # 为所有用户设置读和执行权限
  13. # 递归修改目录及其内容的权限
  14. chmod -R 755 directory_name
  15. # 修改文件所有者(需要root权限)
  16. sudo chown owner filename
  17. # 修改文件所有者和组(需要root权限)
  18. sudo chown owner:group filename
  19. # 递归修改目录及其内容的所有者(需要root权限)
  20. sudo chown -R owner:group directory_name
复制代码

5.3 进程管理
  1. # 显示所有进程
  2. ps aux
  3. # 显示特定用户的进程
  4. ps -u username
  5. # 显示特定进程的信息
  6. ps -p pid
  7. # 实时显示进程状态
  8. top
  9. # 更友好的进程监控工具
  10. htop
  11. # 终止进程
  12. kill pid
  13. # 强制终止进程
  14. kill -9 pid
  15. # 根据进程名终止进程
  16. pkill process_name
  17. # 根据进程名查找并终止进程
  18. killall process_name
  19. # 在后台运行命令
  20. command &
  21. # 将前台进程移到后台
  22. Ctrl+Z
  23. bg
  24. # 将后台进程移到前台
  25. fg %jobid
  26. # 查看后台作业
  27. jobs
复制代码

5.4 服务管理

在elementary OS(基于Ubuntu)中,使用systemd来管理系统服务。
  1. # 列出所有服务
  2. systemctl list-units --type=service
  3. # 查看服务状态
  4. systemctl status service_name
  5. # 启动服务(需要root权限)
  6. sudo systemctl start service_name
  7. # 停止服务(需要root权限)
  8. sudo systemctl stop service_name
  9. # 重启服务(需要root权限)
  10. sudo systemctl restart service_name
  11. # 重新加载服务配置(需要root权限)
  12. sudo systemctl reload service_name
  13. # 启用服务开机自启(需要root权限)
  14. sudo systemctl enable service_name
  15. # 禁用服务开机自启(需要root权限)
  16. sudo systemctl disable service_name
  17. # 查看服务日志
  18. journalctl -u service_name
  19. # 实时查看服务日志
  20. journalctl -u service_name -f
复制代码

6. 网络相关命令

6.1 网络配置
  1. # 显示网络接口信息
  2. ip addr show
  3. # 显示网络接口信息(旧版命令)
  4. ifconfig
  5. # 显示路由表
  6. ip route show
  7. # 显示路由表(旧版命令)
  8. route -n
  9. # 显示网络连接
  10. netstat -tuln
  11. # 显示网络连接(新版命令)
  12. ss -tuln
  13. # 显示网络统计信息
  14. netstat -s
  15. # 测试网络连通性
  16. ping hostname_or_ip
  17. # 跟踪网络路径
  18. traceroute hostname_or_ip
  19. # 跟踪网络路径(新版命令)
  20. tracepath hostname_or_ip
  21. # 显示DNS信息
  22. nslookup domain_name
  23. # 显示DNS信息(新版命令)
  24. dig domain_name
  25. # 显示网络连接状态
  26. nmcli connection show
  27. # 启用网络连接
  28. nmcli connection up connection_name
  29. # 禁用网络连接
  30. nmcli connection down connection_name
复制代码

6.2 网络传输
  1. # 下载文件
  2. wget url
  3. # 下载文件并指定保存名称
  4. wget -O filename url
  5. # 断点续传下载
  6. wget -c url
  7. # 后台下载
  8. wget -b url
  9. # 下载整个网站
  10. wget -m url
  11. # 下载文件(curl命令)
  12. curl -o filename url
  13. # 显示URL内容
  14. curl url
  15. # 上传文件到服务器
  16. scp file_path username@remote_host:remote_path
  17. # 从服务器下载文件
  18. scp username@remote_host:remote_path local_path
  19. # 同步文件和目录
  20. rsync -av source_directory/ destination_directory/
  21. # 通过SSH同步文件
  22. rsync -av -e ssh source_directory/ username@remote_host:destination_directory/
复制代码

6.3 网络安全
  1. # 显示网络连接和进程
  2. netstat -tulnp
  3. # 显示网络连接和进程(新版命令)
  4. ss -tulnp
  5. # 监控网络流量
  6. iftop
  7. # 监控网络流量(需要安装)
  8. sudo apt install iftop
  9. iftop
  10. # 扫描网络端口
  11. nmap -sT target_ip
  12. # 扫描网络端口(需要安装)
  13. sudo apt install nmap
  14. nmap -sT target_ip
  15. # 显示防火墙状态
  16. sudo ufw status
  17. # 启用防火墙
  18. sudo ufw enable
  19. # 禁用防火墙
  20. sudo ufw disable
  21. # 允许特定端口
  22. sudo ufw allow port_number
  23. # 拒绝特定端口
  24. sudo ufw deny port_number
  25. # 显示防火墙规则
  26. sudo ufw show added
复制代码

7. 软件包管理

elementary OS基于Ubuntu,使用APT(Advanced Package Tool)作为软件包管理系统。

7.1 APT基础命令
  1. # 更新软件包列表
  2. sudo apt update
  3. # 升级所有已安装的软件包
  4. sudo apt upgrade
  5. # 升级系统(包括内核)
  6. sudo apt full-upgrade
  7. # 安装软件包
  8. sudo apt install package_name
  9. # 安装多个软件包
  10. sudo apt install package1 package2 package3
  11. # 卸载软件包
  12. sudo apt remove package_name
  13. # 卸载软件包及其配置文件
  14. sudo apt purge package_name
  15. # 删除不再需要的软件包
  16. sudo apt autoremove
  17. # 清理下载的软件包缓存
  18. sudo apt clean
  19. # 清理旧的软件包缓存
  20. sudo apt autoclean
  21. # 搜索软件包
  22. apt search keyword
  23. # 显示软件包信息
  24. apt show package_name
  25. # 显示软件包详细信息
  26. apt-cache show package_name
  27. # 列出已安装的软件包
  28. apt list --installed
  29. # 列出可升级的软件包
  30. apt list --upgradable
复制代码

7.2 PPA管理

PPA(Personal Package Archive)是Ubuntu/elementary OS中的一种第三方软件源。
  1. # 添加PPA
  2. sudo add-apt-repository ppa:user/ppa-name
  3. # 删除PPA
  4. sudo add-apt-repository --remove ppa:user/ppa-name
  5. # 列出已添加的PPA
  6. apt policy
复制代码

7.3 Snap包管理

Snap是Ubuntu开发的通用软件包管理系统,elementary OS也支持。
  1. # 安装Snap(如果未安装)
  2. sudo apt install snapd
  3. # 查找Snap包
  4. snap find package_name
  5. # 安装Snap包
  6. sudo snap install package_name
  7. # 列出已安装的Snap包
  8. snap list
  9. # 更新Snap包
  10. sudo snap refresh package_name
  11. # 更新所有Snap包
  12. sudo snap refresh
  13. # 卸载Snap包
  14. sudo snap remove package_name
  15. # 查看Snap信息
  16. snap info package_name
复制代码

7.4 Flatpak包管理

Flatpak是另一种通用软件包管理系统,elementary OS也支持。
  1. # 安装Flatpak
  2. sudo apt install flatpak
  3. # 添加Flathub仓库(Flatpak应用的主要来源)
  4. flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  5. # 查找Flatpak应用
  6. flatpak search application_name
  7. # 安装Flatpak应用
  8. flatpak install flathub application_id
  9. # 列出已安装的Flatpak应用
  10. flatpak list
  11. # 更新Flatpak应用
  12. flatpak update application_id
  13. # 更新所有Flatpak应用
  14. flatpak update
  15. # 卸载Flatpak应用
  16. flatpak uninstall application_id
  17. # 查看Flatpak应用信息
  18. flatpak info application_id
复制代码

8. 高级技巧与脚本编写

8.1 重定向和管道

Linux系统中有三个标准流:

• 标准输入(stdin):文件描述符为0
• 标准输出(stdout):文件描述符为1
• 标准错误(stderr):文件描述符为2
  1. # 将标准输出重定向到文件
  2. command > file
  3. # 将标准错误重定向到文件
  4. command 2> file
  5. # 将标准输出和标准错误都重定向到文件
  6. command > file 2>&1
  7. # 或者使用简写形式
  8. command &> file
  9. # 将标准输出追加到文件
  10. command >> file
  11. # 将标准错误追加到文件
  12. command 2>> file
  13. # 将标准输出和标准错误都追加到文件
  14. command >> file 2>&1
  15. # 或者使用简写形式
  16. command &>> file
  17. # 从文件读取标准输入
  18. command < file
  19. # 将命令的输出作为另一个命令的输入
  20. command1 | command2
  21. # 将命令的输出和错误都作为另一个命令的输入
  22. command1 2>&1 | command2
复制代码
  1. # 列出文件并分页显示
  2. ls -l | less
  3. # 查找包含特定文本的文件
  4. grep -r "search_text" directory/ | less
  5. # 统计文件数量
  6. ls -1 | wc -l
  7. # 查找进程并过滤
  8. ps aux | grep process_name
  9. # 查找最大的文件
  10. du -h * | sort -hr | head -n 10
  11. # 查找最常用的命令
  12. history | awk '{print $2}' | sort | uniq -c | sort -nr | head -n 10
复制代码

8.2 Shell脚本基础
  1. # 创建脚本文件
  2. nano script.sh
  3. # 添加脚本内容
  4. #!/bin/bash
  5. # 这是一个简单的脚本
  6. echo "Hello, World!"
  7. # 保存并退出(Ctrl+X,然后按Y,最后按Enter)
  8. # 使脚本可执行
  9. chmod +x script.sh
  10. # 运行脚本
  11. ./script.sh
  12. # 或者使用bash解释器运行
  13. bash script.sh
复制代码
  1. #!/bin/bash
  2. # 变量赋值
  3. name="John"
  4. age=30
  5. # 使用变量
  6. echo "Name: $name"
  7. echo "Age: $age"
  8. # 变量与其他文本连接
  9. echo "Name: ${name} Doe"
  10. # 命令替换(将命令输出赋值给变量)
  11. current_date=$(date)
  12. echo "Current date: $current_date"
  13. # 算术运算
  14. result=$((5 + 3))
  15. echo "5 + 3 = $result"
  16. # 使用let命令进行算术运算
  17. let result=5*3
  18. echo "5 * 3 = $result"
  19. # 使用expr命令进行算术运算
  20. result=`expr 5 + 3`
  21. echo "5 + 3 = $result"
复制代码
  1. #!/bin/bash
  2. # if语句
  3. age=18
  4. if [ $age -ge 18 ]; then
  5.     echo "You are an adult."
  6. else
  7.     echo "You are a minor."
  8. fi
  9. # if-elif-else语句
  10. score=85
  11. if [ $score -ge 90 ]; then
  12.     echo "Grade: A"
  13. elif [ $score -ge 80 ]; then
  14.     echo "Grade: B"
  15. elif [ $score -ge 70 ]; then
  16.     echo "Grade: C"
  17. elif [ $score -ge 60 ]; then
  18.     echo "Grade: D"
  19. else
  20.     echo "Grade: F"
  21. fi
  22. # 文件测试
  23. file="test.txt"
  24. if [ -f "$file" ]; then
  25.     echo "$file is a regular file."
  26. elif [ -d "$file" ]; then
  27.     echo "$file is a directory."
  28. else
  29.     echo "$file does not exist or is not a regular file or directory."
  30. fi
  31. # 字符串比较
  32. name="John"
  33. if [ "$name" = "John" ]; then
  34.     echo "Hello, John!"
  35. else
  36.     echo "You are not John."
  37. fi
  38. # 逻辑运算
  39. age=25
  40. name="Alice"
  41. if [ $age -ge 18 ] && [ "$name" = "Alice" ]; then
  42.     echo "You are Alice and you are an adult."
  43. else
  44.     echo "You are not Alice or you are not an adult."
  45. fi
复制代码
  1. #!/bin/bash
  2. # for循环
  3. echo "For loop example:"
  4. for i in 1 2 3 4 5; do
  5.     echo "Number: $i"
  6. done
  7. # 使用序列的for循环
  8. echo "For loop with sequence:"
  9. for i in {1..5}; do
  10.     echo "Number: $i"
  11. done
  12. # 使用C风格的for循环
  13. echo "C-style for loop:"
  14. for ((i=1; i<=5; i++)); do
  15.     echo "Number: $i"
  16. done
  17. # 遍历文件
  18. echo "Files in current directory:"
  19. for file in *; do
  20.     echo "File: $file"
  21. done
  22. # while循环
  23. echo "While loop example:"
  24. count=1
  25. while [ $count -le 5 ]; do
  26.     echo "Count: $count"
  27.     count=$((count + 1))
  28. done
  29. # until循环
  30. echo "Until loop example:"
  31. count=1
  32. until [ $count -gt 5 ]; do
  33.     echo "Count: $count"
  34.     count=$((count + 1))
  35. done
  36. # break和continue
  37. echo "Break and continue example:"
  38. for i in {1..10}; do
  39.     if [ $i -eq 5 ]; then
  40.         continue  # 跳过5
  41.     fi
  42.    
  43.     if [ $i -eq 8 ]; then
  44.         break  # 在8处停止
  45.     fi
  46.    
  47.     echo "Number: $i"
  48. done
复制代码
  1. #!/bin/bash
  2. # 定义函数
  3. greet() {
  4.     echo "Hello, $1!"
  5. }
  6. # 调用函数
  7. greet "John"
  8. # 带返回值的函数
  9. add() {
  10.     local result=$(( $1 + $2 ))
  11.     echo $result
  12. }
  13. # 获取函数返回值
  14. sum=$(add 5 3)
  15. echo "5 + 3 = $sum"
  16. # 带默认参数的函数
  17. greet_with_default() {
  18.     local name=${1:-"Guest"}
  19.     echo "Hello, $name!"
  20. }
  21. greet_with_default
  22. greet_with_default "Alice"
  23. # 递归函数
  24. factorial() {
  25.     if [ $1 -le 1 ]; then
  26.         echo 1
  27.     else
  28.         local temp=$(($1 - 1))
  29.         local result=$(factorial $temp)
  30.         echo $(($1 * $result))
  31.     fi
  32. }
  33. echo "Factorial of 5 is: $(factorial 5)"
复制代码

8.3 文本处理工具
  1. # 在文件中搜索文本
  2. grep "pattern" filename
  3. # 在多个文件中搜索文本
  4. grep "pattern" file1 file2 file3
  5. # 递归搜索目录中的文件
  6. grep -r "pattern" directory/
  7. # 显示匹配行的行号
  8. grep -n "pattern" filename
  9. # 显示不匹配的行
  10. grep -v "pattern" filename
  11. # 只显示匹配的文件名
  12. grep -l "pattern" filename
  13. # 使用正则表达式
  14. grep -E "regex_pattern" filename
  15. # 忽略大小写
  16. grep -i "pattern" filename
  17. # 显示匹配行及其前后各2行
  18. grep -C 2 "pattern" filename
  19. # 显示匹配行及其后2行
  20. grep -A 2 "pattern" filename
  21. # 显示匹配行及其前2行
  22. grep -B 2 "pattern" filename
  23. # 统计匹配行数
  24. grep -c "pattern" filename
复制代码
  1. # 替换文本(只替换每行第一个匹配项)
  2. sed 's/pattern/replacement/' filename
  3. # 替换文本(替换所有匹配项)
  4. sed 's/pattern/replacement/g' filename
  5. # 替换文本并忽略大小写
  6. sed 's/pattern/replacement/gI' filename
  7. # 删除行
  8. sed '3d' filename  # 删除第3行
  9. sed '3,5d' filename  # 删除第3到5行
  10. sed '/pattern/d' filename  # 删除包含pattern的行
  11. # 插入行
  12. sed '2i\This is a new line' filename  # 在第2行前插入
  13. sed '2a\This is a new line' filename  # 在第2行后插入
  14. # 修改行
  15. sed '2c\This is a modified line' filename  # 替换第2行
  16. # 打印特定行
  17. sed -n '3p' filename  # 只打印第3行
  18. sed -n '3,5p' filename  # 只打印第3到5行
  19. sed -n '/pattern/p' filename  # 只打印包含pattern的行
  20. # 直接修改文件
  21. sed -i 's/pattern/replacement/g' filename
  22. # 多个命令
  23. sed -e 's/pattern1/replacement1/g' -e 's/pattern2/replacement2/g' filename
  24. # 使用脚本文件
  25. sed -f script.sed filename
复制代码
  1. # 打印特定列
  2. awk '{print $1}' filename  # 打印第1列
  3. awk '{print $1, $3}' filename  # 打印第1和第3列
  4. # 使用特定分隔符
  5. awk -F: '{print $1}' /etc/passwd  # 使用冒号作为分隔符
  6. # 模式匹配
  7. awk '/pattern/ {print}' filename  # 打印包含pattern的行
  8. awk '$1 > 100 {print}' filename  # 打印第1列大于100的行
  9. # BEGIN和END块
  10. awk 'BEGIN {print "Start processing"} {print $0} END {print "End processing"}' filename
  11. # 计算和统计
  12. awk '{sum += $1} END {print "Sum:", sum}' filename
  13. awk '{count++} END {print "Count:", count}' filename
  14. # 条件语句
  15. awk '{if ($1 > 100) print $1 " is greater than 100"; else print $1 " is not greater than 100"}' filename
  16. # 循环
  17. awk '{for (i=1; i<=NF; i++) print $i}' filename  # 打印每一列
  18. # 内置函数
  19. awk '{print length($0)}' filename  # 打印每行的长度
  20. awk '{print toupper($0)}' filename  # 转换为大写
  21. awk '{print tolower($0)}' filename  # 转换为小写
复制代码
  1. # 对文件行进行排序
  2. sort filename
  3. # 对数字进行排序
  4. sort -n filename
  5. # 反向排序
  6. sort -r filename
  7. # 按特定列排序
  8. sort -k 2 filename  # 按第2列排序
  9. # 使用特定分隔符
  10. sort -t: -k 3 /etc/passwd  # 使用冒号作为分隔符,按第3列排序
  11. # 去重并排序
  12. sort -u filename
  13. # 检查文件是否已排序
  14. sort -c filename
  15. # 合并并排序多个文件
  16. sort file1 file2
  17. # 按月份排序
  18. sort -M filename
  19. # 按人类可读的数字排序(如1K, 2M, 3G)
  20. sort -h filename
复制代码
  1. # 删除重复行
  2. uniq filename
  3. # 只显示重复行
  4. uniq -d filename
  5. # 只显示不重复的行
  6. uniq -u filename
  7. # 显示重复次数
  8. uniq -c filename
  9. # 忽略前N个字符
  10. uniq -s 2 filename
  11. # 只比较前N个字符
  12. uniq -w 2 filename
  13. # 忽略大小写
  14. uniq -i filename
  15. # 只检查字段
  16. uniq -f 1 filename  # 忽略第1个字段
复制代码

9. 实用命令组合与案例分析

9.1 系统监控与维护
  1. # 显示CPU使用率最高的10个进程
  2. ps aux --sort=-%cpu | head -n 11
  3. # 显示内存使用率最高的10个进程
  4. ps aux --sort=-%mem | head -n 11
  5. # 显示磁盘使用率最高的10个目录
  6. du -h * | sort -hr | head -n 10
  7. # 显示系统总体资源使用情况
  8. free -h && df -h && uptime
  9. # 实时监控网络连接
  10. watch -n 1 "netstat -tuln | head -n 20"
  11. # 监控日志文件
  12. tail -f /var/log/syslog
  13. # 监控多个日志文件
  14. tail -f /var/log/syslog /var/log/auth.log
复制代码
  1. # 清理APT缓存
  2. sudo apt clean
  3. # 删除不再需要的软件包
  4. sudo apt autoremove
  5. # 清理旧内核(保留当前和上一个版本)
  6. sudo apt autoremove --purge
  7. # 清理日志文件
  8. sudo journalctl --vacuum-time=2weeks
  9. # 查找并删除大文件
  10. find /var/log -type f -name "*.log" -size +100M -exec ls -lh {} \;
  11. # 查找并删除临时文件
  12. find /tmp -type f -atime +10 -delete
  13. # 清理浏览器缓存(以Firefox为例)
  14. rm -rf ~/.cache/mozilla/firefox/*.default-release/cache2/
  15. # 清理系统缓存
  16. sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
复制代码

9.2 文件管理
  1. # 批量重命名文件(将所有.txt文件改为.md文件)
  2. for file in *.txt; do mv "$file" "${file%.txt}.md"; done
  3. # 批量转换图片格式(需要安装ImageMagick)
  4. mkdir converted
  5. for file in *.jpg; do convert "$file" "converted/${file%.jpg}.png"; done
  6. # 批量压缩图片(需要安装ImageMagick)
  7. mkdir compressed
  8. for file in *.jpg; do convert "$file" -quality 80% "compressed/$file"; done
  9. # 批量调整图片大小(需要安装ImageMagick)
  10. mkdir resized
  11. for file in *.jpg; do convert "$file" -resize 800x600 "resized/$file"; done
  12. # 批量添加文件前缀
  13. for file in *; do mv "$file" "prefix_$file"; done
  14. # 批量替换文件名中的空格
  15. for file in *; do mv "$file" "${file// /_}"; done
复制代码
  1. # 查找并删除空文件
  2. find . -type f -empty -delete
  3. # 查找并删除空目录
  4. find . -type d -empty -delete
  5. # 查找特定类型的文件并统计数量
  6. find . -type f -name "*.jpg" | wc -l
  7. # 查找大文件并显示大小
  8. find . -type f -size +100M -exec ls -lh {} \;
  9. # 查找最近修改的文件
  10. find . -type f -mtime -7 -exec ls -la {} \;
  11. # 查找包含特定文本的文件
  12. grep -r "search_text" . --include="*.txt"
  13. # 查找并替换文件中的文本
  14. find . -type f -name "*.txt" -exec sed -i 's/old_text/new_text/g' {} \;
  15. # 查找重复文件(需要安装fdupes)
  16. sudo apt install fdupes
  17. fdupes -r .
复制代码

9.3 网络管理
  1. # 测试网络连通性
  2. ping -c 4 google.com
  3. # 跟踪网络路径
  4. traceroute google.com
  5. # 显示网络接口信息
  6. ip addr show
  7. # 显示路由表
  8. ip route show
  9. # 显示网络连接
  10. netstat -tuln
  11. # 显示网络连接统计
  12. netstat -s
  13. # 显示网络带宽使用情况(需要安装iftop)
  14. sudo apt install iftop
  15. sudo iftop
  16. # 显示网络连接和进程
  17. sudo netstat -tulnp
  18. # 扫描网络端口(需要安装nmap)
  19. sudo apt install nmap
  20. sudo nmap -sT localhost
复制代码
  1. # 显示防火墙状态
  2. sudo ufw status
  3. # 启用防火墙
  4. sudo ufw enable
  5. # 允许SSH连接
  6. sudo ufw allow ssh
  7. # 允许特定端口
  8. sudo ufw allow 8080/tcp
  9. # 拒绝特定端口
  10. sudo ufw deny 8080/tcp
  11. # 显示防火墙规则
  12. sudo ufw show added
  13. # 查看失败的登录尝试
  14. sudo grep "Failed password" /var/log/auth.log
  15. # 查看成功的登录尝试
  16. sudo grep "Accepted password" /var/log/auth.log
  17. # 查看当前登录用户
  18. who
  19. # 查看用户登录历史
  20. last
复制代码

9.4 数据备份与恢复
  1. # 创建目录的压缩备份
  2. tar -czf backup.tar.gz /path/to/directory
  3. # 创建目录的压缩备份并显示进度
  4. tar -czvf backup.tar.gz /path/to/directory
  5. # 排除特定文件或目录
  6. tar -czf backup.tar.gz --exclude='*.tmp' --exclude='cache' /path/to/directory
  7. # 增量备份(需要安装rsync)
  8. rsync -av --delete /path/to/source/ /path/to/destination/
  9. # 创建差异备份
  10. rsync -av --compare-dest=/path/to/previous_backup /path/to/source/ /path/to/differential_backup/
  11. # 使用find和tar创建基于时间的备份
  12. find /path/to/source -mtime -1 -print0 | tar -czf backup.tar.gz --null --files-from=-
  13. # 备份整个系统(需要root权限)
  14. sudo tar -czpf system_backup.tar.gz --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp --exclude=/run --exclude=/mnt --exclude=/media --exclude=/lost+found /
复制代码
  1. # 解压tar.gz文件
  2. tar -xzf backup.tar.gz
  3. # 解压到指定目录
  4. tar -xzf backup.tar.gz -C /path/to/destination
  5. # 解压特定文件
  6. tar -xzf backup.tar.gz path/to/file
  7. # 列出tar.gz文件内容
  8. tar -tzf backup.tar.gz
  9. # 恢复rsync备份
  10. rsync -av /path/to/backup/ /path/to/restore/
  11. # 恢复特定文件
  12. rsync -av /path/to/backup/path/to/file /path/to/restore/path/to/
复制代码

10. 常见问题与解决方案

10.1 权限问题

问题:尝试编辑或执行文件时收到”Permission denied”错误。

解决方案:
  1. # 检查文件权限
  2. ls -l filename
  3. # 如果需要编辑文件,确保有写权限
  4. chmod u+w filename
  5. # 如果需要执行文件,确保有执行权限
  6. chmod u+x filename
  7. # 如果文件属于其他用户,可能需要使用sudo
  8. sudo nano filename
  9. # 更改文件所有者(需要root权限)
  10. sudo chown username filename
  11. # 更改文件组(需要root权限)
  12. sudo chgrp groupname filename
复制代码

问题:用户不在sudoers文件中,无法使用sudo命令。

解决方案:
  1. # 需要以root身份或有sudo权限的用户登录
  2. # 将用户添加到sudo组(需要root权限)
  3. usermod -aG sudo username
  4. # 或者编辑sudoers文件(需要root权限)
  5. visudo
  6. # 在文件中添加以下行(替换username为实际用户名)
  7. username ALL=(ALL:ALL) ALL
复制代码

10.2 磁盘空间问题

问题:系统提示磁盘空间不足。

解决方案:
  1. # 检查磁盘使用情况
  2. df -h
  3. # 查找大文件
  4. find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
  5. # 查找大目录
  6. du -h --max-depth=1 / | sort -hr
  7. # 清理APT缓存
  8. sudo apt clean
  9. # 删除不再需要的软件包
  10. sudo apt autoremove
  11. # 清理旧内核
  12. sudo apt autoremove --purge
  13. # 清理日志文件
  14. sudo journalctl --vacuum-time=2weeks
  15. # 清理用户缓存
  16. rm -rf ~/.cache/*
  17. # 清理临时文件
  18. sudo rm -rf /tmp/*
复制代码

问题:df和du命令显示的磁盘使用量不一致。

解决方案:
  1. # 检查是否有已删除但仍被占用的文件
  2. sudo lsof | grep deleted
  3. # 重启相关服务或系统以释放空间
  4. sudo systemctl restart service_name
  5. # 或者重启系统
  6. sudo reboot
复制代码

10.3 网络问题

问题:系统无法连接到网络。

解决方案:
  1. # 检查网络接口状态
  2. ip addr show
  3. # 启用网络接口
  4. sudo ip link set interface_name up
  5. # 检查网络连接状态
  6. nmcli connection show
  7. # 启用网络连接
  8. sudo nmcli connection up connection_name
  9. # 重启网络服务
  10. sudo systemctl restart NetworkManager
  11. # 检查DNS配置
  12. cat /etc/resolv.conf
  13. # 测试DNS解析
  14. nslookup google.com
  15. # 重置网络配置
  16. sudo nmcli networking off
  17. sudo nmcli networking on
复制代码

问题:网络连接速度慢。

解决方案:
  1. # 测试网络速度
  2. ping -c 4 google.com
  3. # 检查网络带宽使用情况
  4. sudo iftop
  5. # 检查网络连接
  6. netstat -tuln
  7. # 检查路由表
  8. ip route show
  9. # 更改DNS服务器
  10. sudo nmcli connection modify connection_name ipv4.dns "8.8.8.8 8.8.4.4"
  11. sudo nmcli connection up connection_name
  12. # 禁用IPv6(如果需要)
  13. sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
  14. sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
复制代码

10.4 软件包问题

问题:安装或更新软件包时遇到依赖问题。

解决方案:
  1. # 更新软件包列表
  2. sudo apt update
  3. # 修复依赖问题
  4. sudo apt --fix-broken install
  5. # 清理软件包缓存
  6. sudo apt clean
  7. # 删除锁定文件(如果存在)
  8. sudo rm /var/lib/dpkg/lock
  9. sudo rm /var/lib/dpkg/lock-frontend
  10. sudo rm /var/cache/apt/archives/lock
  11. # 重新配置软件包
  12. sudo dpkg --configure -a
  13. # 更新系统
  14. sudo apt upgrade
  15. sudo apt full-upgrade
复制代码

问题:无法从软件源下载软件包。

解决方案:
  1. # 检查软件源配置
  2. cat /etc/apt/sources.list
  3. cat /etc/apt/sources.list.d/*
  4. # 备份原始软件源配置
  5. sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  6. # 更新软件源配置(使用elementary OS官方源)
  7. sudo nano /etc/apt/sources.list
  8. # 更新软件包列表
  9. sudo apt update
  10. # 如果使用PPA,检查PPA是否可用
  11. sudo add-apt-repository --remove ppa:user/ppa-name
  12. sudo add-apt-repository ppa:user/ppa-name
复制代码

10.5 系统性能问题

问题:系统运行缓慢,响应时间长。

解决方案:
  1. # 检查系统负载
  2. uptime
  3. # 检查CPU使用率
  4. top
  5. # 检查内存使用情况
  6. free -h
  7. # 检查磁盘I/O
  8. iostat
  9. # 检查进程状态
  10. ps aux --sort=-%cpu | head -n 11
  11. ps aux --sort=-%mem | head -n 11
  12. # 终止占用资源过多的进程
  13. sudo kill -9 pid
  14. # 清理系统缓存
  15. sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
  16. # 检查启动服务
  17. systemctl list-unit-files --type=service | grep enabled
  18. # 禁用不必要的服务
  19. sudo systemctl disable service_name
复制代码

问题:系统启动时间过长。

解决方案:
  1. # 分析系统启动时间
  2. systemd-analyze
  3. # 详细分析启动过程
  4. systemd-analyze blame
  5. # 查看关键服务启动时间
  6. systemd-analyze critical-chain
  7. # 检查启动服务
  8. systemctl list-unit-files --type=service | grep enabled
  9. # 禁用不必要的服务
  10. sudo systemctl disable service_name
  11. # 清理日志文件
  12. sudo journalctl --vacuum-time=2weeks
  13. # 检查启动项
  14. ls -la ~/.config/autostart/
  15. # 删除不必要的启动项
  16. rm ~/.config/autostart/unnecessary.desktop
复制代码

结语

通过本指南的学习,你已经从零基础逐步掌握了elementary OS系统命令行的使用方法,从基础命令到高级技巧,从文件管理到系统维护,从网络配置到脚本编写。命令行是Linux系统的强大工具,掌握它将极大地提升你的工作效率和系统管理能力。

记住,实践是最好的学习方式。在日常使用中多尝试使用命令行,遇到问题查阅手册和在线资源,不断积累经验。随着实践的深入,你会发现命令行操作变得越来越自然,最终成为你管理elementary OS系统的得力助手。

希望本指南能够帮助你在elementary OS的命令行世界中游刃有余,从新手成长为专家!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

频道订阅

频道订阅

加入社群

加入社群

联系我们|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.