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

站内搜索

搜索

活动公告

11-27 10:00
11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28

深入探索Kubuntu高级命令行使用技巧从入门到精通显著提升Linux操作效率让你成为终端高手

3万

主题

23

科技点

3万

积分

大区版主

碾压王

积分
31964

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

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

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

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

x
引言

在Kubuntu这个优雅的KDE Plasma桌面环境中,图形用户界面(GUI)为用户提供了直观的操作体验。然而,真正掌握Linux系统,提升工作效率的关键在于精通命令行操作。命令行不仅提供了更直接、更快速的系统控制方式,还能实现GUI难以完成的复杂任务。本文将带你从基础到高级,全面探索Kubuntu中的命令行技巧,助你成为终端高手,显著提升Linux操作效率。

基础命令回顾

在深入高级技巧之前,让我们简要回顾一些基础命令,确保所有读者都有足够的背景知识。

文件和目录操作

• ls- 列出目录内容
• cd- 更改当前目录
• pwd- 显示当前工作目录
• mkdir- 创建新目录
• touch- 创建空文件或更新文件时间戳
• cp- 复制文件或目录
• mv- 移动或重命名文件或目录
• rm- 删除文件或目录
• chmod- 修改文件权限
• chown- 修改文件所有者

系统信息和管理

• uname- 显示系统信息
• top/htop- 显示运行进程
• ps- 显示当前进程
• df- 显示磁盘空间使用情况
• du- 显示目录空间使用情况
• free- 显示内存使用情况

文本查看和编辑

• cat- 显示文件内容
• less/more- 分页显示文件内容
• head/tail- 显示文件的开头或结尾部分
• nano/vim- 文本编辑器

这些基础命令是日常操作的基础,掌握它们是学习高级技巧的前提。

文件和目录操作高级技巧

使用find进行高级文件搜索

find命令是Linux中最强大的文件搜索工具之一,它可以根据各种条件搜索文件。
  1. # 在当前目录及其子目录中查找所有.txt文件
  2. find . -name "*.txt"
  3. # 查找大于100MB的文件
  4. find . -type f -size +100M
  5. # 查找最近7天内修改过的文件
  6. find . -type f -mtime -7
  7. # 查找空文件或目录
  8. find . -empty
  9. # 查找特定用户拥有的文件
  10. find . -user username
  11. # 结合-exec执行命令,例如查找所有.jpg文件并移动到pictures目录
  12. find . -name "*.jpg" -exec mv {} ~/pictures \;
复制代码

使用xargs处理命令输出

xargs命令可以将输入转换为命令行参数,特别适合与其他命令结合使用。
  1. # 查找所有.log文件并删除
  2. find . -name "*.log" | xargs rm
  3. # 统计多个文件的行数
  4. ls *.txt | xargs wc -l
  5. # 并行处理文件,提高效率
  6. find . -name "*.jpg" | xargs -P 4 -I {} convert {} {}.png
复制代码

高级文件复制和同步

rsync是一个强大的文件同步工具,比传统的cp命令更灵活高效。
  1. # 本地目录同步
  2. rsync -avh /source/ /destination/
  3. # 通过SSH同步远程目录
  4. rsync -avh -e ssh /source/ user@remote:/destination/
  5. # 只同步大小或时间不同的文件
  6. rsync -avh --size-only /source/ /destination/
  7. # 排除特定文件或目录
  8. rsync -avh --exclude='*.tmp' /source/ /destination/
  9. # 显示进度条
  10. rsync -avh --progress /source/ /destination/
复制代码

使用ln创建硬链接和软链接

链接是Linux文件系统的重要概念,理解并善用链接可以节省存储空间并简化文件管理。
  1. # 创建硬链接(文件必须有相同的inode)
  2. ln source_file hard_link
  3. # 创建软链接(符号链接)
  4. ln -s source_file soft_link
  5. # 创建目录的软链接
  6. ln -s /path/to/directory directory_link
  7. # 查看链接信息
  8. ls -li
复制代码

文本处理和数据操作

使用grep进行高级文本搜索

grep是文本搜索的利器,支持正则表达式,可以高效地从大量文本中提取所需信息。
  1. # 在文件中搜索特定字符串
  2. grep "search_term" filename.txt
  3. # 递归搜索目录中的所有文件
  4. grep -r "search_term" /path/to/directory/
  5. # 显示匹配行及其行号
  6. grep -n "search_term" filename.txt
  7. # 显示不匹配的行
  8. grep -v "exclude_term" filename.txt
  9. # 使用正则表达式搜索
  10. grep -E "^[0-9]{3}-[0-9]{3}-[0-9]{4}$" phone_numbers.txt
  11. # 只显示匹配的文件名
  12. grep -l "search_term" *.txt
  13. # 统计匹配的行数
  14. grep -c "search_term" filename.txt
复制代码

使用sed进行流编辑

sed(流编辑器)是一个强大的文本处理工具,可以对文本进行过滤和转换。
  1. # 替换文本中的字符串
  2. sed 's/old_text/new_text/g' filename.txt
  3. # 删除空行
  4. sed '/^$/d' filename.txt
  5. # 只显示特定行(例如第5-10行)
  6. sed -n '5,10p' filename.txt
  7. # 删除特定行(例如第3行)
  8. sed '3d' filename.txt
  9. # 在匹配行前后添加内容
  10. sed '/search_term/a\This line is added after' filename.txt
  11. sed '/search_term/i\This line is added before' filename.txt
  12. # 多重编辑
  13. sed -e 's/old/new/g' -e '/^$/d' filename.txt
  14. # 直接修改文件(使用-i选项)
  15. sed -i 's/old_text/new_text/g' filename.txt
复制代码

使用awk进行高级文本处理

awk是一种强大的文本分析工具,特别适合处理表格数据。
  1. # 打印文件的特定列(例如第1和第3列)
  2. awk '{print $1, $3}' filename.txt
  3. # 使用特定分隔符处理CSV文件
  4. awk -F, '{print $1, $3}' data.csv
  5. # 过滤满足条件的行
  6. awk '$3 > 100 {print $1, $3}' data.txt
  7. # 计算总和
  8. awk '{sum += $3} END {print sum}' data.txt
  9. # 使用BEGIN和END块
  10. awk 'BEGIN {print "Start processing"} {print $0} END {print "End processing"}' filename.txt
  11. # 使用if语句
  12. awk '{if ($3 > 100) print $1 " is high"; else print $1 " is normal"}' data.txt
  13. # 使用循环
  14. awk '{for(i=1;i<=NF;i++) sum[i] += $i} END {for(i=1;i<=NF;i++) print "Column " i " sum: " sum[i]}' data.txt
复制代码

使用sort和uniq进行排序和去重

sort和uniq命令组合使用可以高效地处理列表数据。
  1. # 对文件内容进行排序
  2. sort filename.txt
  3. # 对数字进行排序
  4. sort -n numbers.txt
  5. # 逆序排序
  6. sort -r filename.txt
  7. # 按特定列排序
  8. sort -k 2 data.txt
  9. # 去除重复行
  10. uniq filename.txt
  11. # 只显示重复的行
  12. uniq -d filename.txt
  13. # 统计每个条目的出现次数
  14. sort filename.txt | uniq -c
  15. # 组合使用:排序后统计出现次数并按频率排序
  16. sort filename.txt | uniq -c | sort -nr
复制代码

使用cut、join和paste进行数据提取和合并

这些命令提供了灵活的数据处理能力。
  1. # 提取特定列(例如第1和第3列)
  2. cut -d' ' -f1,3 filename.txt
  3. # 按字符位置提取
  4. cut -c1-5 filename.txt
  5. # 连接两个文件(基于共同字段)
  6. join file1.txt file2.txt
  7. # 水平合并文件
  8. paste file1.txt file2.txt
  9. # 使用特定分隔符合并
  10. paste -d',' file1.txt file2.txt
复制代码

系统监控和管理

使用top和htop监控系统资源

top和htop是监控系统进程和资源使用的重要工具。
  1. # 启动top
  2. top
  3. # 启动htop(更友好的界面)
  4. htop
  5. # top命令的交互命令:
  6. #   M - 按内存使用排序
  7. #   P - 按CPU使用排序
  8. #   k - 终止进程
  9. #   r - 重新设置进程优先级
复制代码

使用vmstat、iostat和mpstat监控系统性能

这些命令提供了更详细的系统性能信息。
  1. # 显示虚拟内存统计
  2. vmstat
  3. # 每秒更新一次,共5次
  4. vmstat 1 5
  5. # 显示CPU统计信息
  6. mpstat
  7. # 显示所有CPU核心的统计信息
  8. mpstat -P ALL
  9. # 显示磁盘I/O统计
  10. iostat
  11. # 显示扩展的磁盘I/O统计
  12. iostat -x
复制代码

使用lsof查看打开的文件

lsof(list open files)是一个强大的工具,可以查看系统中所有打开的文件和网络连接。
  1. # 列出所有打开的文件
  2. lsof
  3. # 查看特定用户打开的文件
  4. lsof -u username
  5. # 查看特定进程打开的文件
  6. lsof -p PID
  7. # 查看特定目录下的打开文件
  8. lsof +D /path/to/directory
  9. # 查看网络连接
  10. lsof -i
  11. # 查看特定端口的网络连接
  12. lsof -i :80
  13. # 查看特定命令的打开文件
  14. lsof -c command_name
复制代码

使用netstat和ss监控网络连接

这些命令用于监控网络连接、路由表和接口统计。
  1. # 显示所有网络连接
  2. netstat -a
  3. # 显示TCP连接
  4. netstat -t
  5. # 显示监听端口
  6. netstat -l
  7. # 显示PID和程序名称
  8. netstat -p
  9. # 显示数字格式的地址和端口
  10. netstat -n
  11. # 使用ss命令(更快更现代的替代品)
  12. ss -tuln
  13. # 显示TCP连接状态
  14. ss -t state established
  15. # 显示进程信息
  16. ss -tp
复制代码

使用systemctl管理系统服务

在Kubuntu这样的现代Linux系统中,systemctl是管理系统服务的主要工具。
  1. # 列出所有已启用的服务
  2. systemctl list-unit-files --type=service --state=enabled
  3. # 启动服务
  4. sudo systemctl start service_name
  5. # 停止服务
  6. sudo systemctl stop service_name
  7. # 重启服务
  8. sudo systemctl restart service_name
  9. # 重新加载服务配置
  10. sudo systemctl reload service_name
  11. # 启用服务(开机自启)
  12. sudo systemctl enable service_name
  13. # 禁用服务
  14. sudo systemctl disable service_name
  15. # 查看服务状态
  16. systemctl status service_name
  17. # 查看服务日志
  18. journalctl -u service_name
  19. # 实时查看服务日志
  20. journalctl -u service_name -f
复制代码

网络相关命令和技巧

使用curl和wget进行网络请求

这两个命令是命令行下进行网络操作的利器。
  1. # 使用curl下载文件
  2. curl -O https://example.com/file.txt
  3. # 使用curl跟随重定向
  4. curl -L https://example.com
  5. # 使用curl发送POST请求
  6. curl -X POST -d "param1=value1&param2=value2" https://example.com/api
  7. # 使用curl设置HTTP头
  8. curl -H "Content-Type: application/json" -H "Authorization: Bearer token" https://example.com/api
  9. # 使用wget递归下载网站
  10. wget -r https://example.com
  11. # 使用wget限制下载速度
  12. wget --limit-rate=100k https://example.com/largefile.zip
  13. # 使用wget后台下载
  14. wget -b https://example.com/largefile.zip
  15. # 使用wget断点续传
  16. wget -c https://example.com/largefile.zip
复制代码

使用ssh进行远程连接和操作

SSH是远程管理Linux系统的标准工具。
  1. # 基本SSH连接
  2. ssh username@hostname
  3. # 使用特定端口连接
  4. ssh -p 2222 username@hostname
  5. # 使用SSH密钥认证
  6. ssh -i /path/to/private_key username@hostname
  7. # 通过SSH执行远程命令
  8. ssh username@hostname "command"
  9. # 通过SSH复制文件(SCP)
  10. scp file.txt username@hostname:/remote/path/
  11. # 递归复制目录
  12. scp -r /local/directory username@hostname:/remote/path/
  13. # 使用rsync通过SSH同步文件
  14. rsync -avh -e ssh /local/path/ username@hostname:/remote/path/
  15. # 创建SSH隧道(本地端口转发)
  16. ssh -L 8080:localhost:80 username@hostname
  17. # 创建反向SSH隧道(远程端口转发)
  18. ssh -R 8080:localhost:80 username@hostname
  19. # 使用SSH配置文件简化连接
  20. # 编辑 ~/.ssh/config
  21. Host myserver
  22.     HostName example.com
  23.     User username
  24.     Port 2222
  25.     IdentityFile ~/.ssh/id_rsa
  26. # 然后可以使用简化命令连接
  27. ssh myserver
复制代码

使用nc和socat进行网络调试

这些工具在网络调试和测试中非常有用。
  1. # 使用nc(netcat)监听端口
  2. nc -l -p 8080
  3. # 使用nc连接到远程端口
  4. nc hostname 8080
  5. # 使用nc传输文件
  6. # 接收端
  7. nc -l -p 8080 > received_file.txt
  8. # 发送端
  9. nc hostname 8080 < file_to_send.txt
  10. # 使用nc扫描端口
  11. nc -z -v hostname 1-100
  12. # 使用socat创建更复杂的连接
  13. socat TCP-LISTEN:8080,fork EXEC:/bin/cat
  14. # 使用socat创建串口到TCP的转发
  15. socat /dev/ttyS0,raw,echo=0 TCP:hostname:8080
复制代码

使用dig和nslookup进行DNS查询

这些工具用于DNS查询和故障排除。
  1. # 使用dig查询域名的A记录
  2. dig example.com
  3. # 使用dig查询特定类型的记录
  4. dig example.com MX
  5. # 使用dig进行反向查询
  6. dig -x 8.8.8.8
  7. # 使用dig查询特定DNS服务器
  8. dig @8.8.8.8 example.com
  9. # 使用dig跟踪DNS查询过程
  10. dig +trace example.com
  11. # 使用nslookup进行交互式查询
  12. nslookup
  13. > server 8.8.8.8
  14. > example.com
  15. > exit
复制代码

Shell脚本编程基础

基本脚本结构和语法

Shell脚本是自动化任务的强大工具。
  1. #!/bin/bash
  2. # 这是一个简单的Shell脚本示例
  3. # 变量定义
  4. name="John"
  5. age=30
  6. # 输出变量
  7. echo "Name: $name"
  8. echo "Age: $age"
  9. # 命令替换
  10. current_date=$(date)
  11. echo "Current date: $current_date"
  12. # 条件语句
  13. if [ $age -gt 18 ]; then
  14.     echo "$name is an adult."
  15. else
  16.     echo "$name is a minor."
  17. fi
  18. # 循环
  19. for i in {1..5}; do
  20.     echo "Count: $i"
  21. done
  22. # 函数
  23. greet() {
  24.     echo "Hello, $1!"
  25. }
  26. greet "$name"
  27. # 退出状态
  28. exit 0
复制代码

高级脚本技巧
  1. #!/bin/bash
  2. # 命令行参数处理
  3. while getopts ":a:b:" opt; do
  4.     case $opt in
  5.         a) arg_a="$OPTARG"
  6.         ;;
  7.         b) arg_b="$OPTARG"
  8.         ;;
  9.         \?) echo "Invalid option -$OPTARG" >&2
  10.         ;;
  11.     esac
  12. done
  13. echo "Option a: $arg_a"
  14. echo "Option b: $arg_b"
  15. # 数组操作
  16. fruits=("Apple" "Banana" "Cherry")
  17. echo "First fruit: ${fruits[0]}"
  18. echo "All fruits: ${fruits[@]}"
  19. # 数组长度
  20. echo "Number of fruits: ${#fruits[@]}"
  21. # 添加元素到数组
  22. fruits+=("Date")
  23. echo "Updated fruits: ${fruits[@]}"
  24. # 字符串操作
  25. string="Hello, World!"
  26. echo "Length of string: ${#string}"
  27. echo "Substring: ${string:0:5}"
  28. echo "Replace: ${string//World/Universe}"
  29. # 算术运算
  30. a=10
  31. b=20
  32. sum=$((a + b))
  33. echo "Sum: $sum"
  34. # 文件测试
  35. file="/etc/passwd"
  36. if [ -f "$file" ]; then
  37.     echo "$file exists and is a regular file."
  38. else
  39.     echo "$file does not exist or is not a regular file."
  40. fi
  41. # 捕获命令输出并处理
  42. while read -r line; do
  43.     echo "Processing: $line"
  44. done < <(ls -l)
  45. # 错误处理
  46. command_that_might_fail
  47. if [ $? -ne 0 ]; then
  48.     echo "Command failed!"
  49.     exit 1
  50. fi
  51. # 临时文件
  52. temp_file=$(mktemp)
  53. echo "Temporary file: $temp_file"
  54. echo "Some data" > "$temp_file"
  55. # 使用临时文件...
  56. rm "$temp_file"
复制代码

调试Shell脚本
  1. # 使用-x选项启用调试模式
  2. bash -x script.sh
  3. # 在脚本中设置调试模式
  4. #!/bin/bash -x
  5. # 或者使用set命令
  6. set -x  # 启用调试
  7. set +x  # 禁用调试
  8. # 使用set -e在错误时退出
  9. set -e
  10. # 使用set -u在未定义变量时报错
  11. set -u
  12. # 使用set -o pipefail在管道命令失败时返回错误
  13. set -o pipefail
  14. # 使用trap捕获信号和错误
  15. trap 'echo "Error occurred at line $LINENO"' ERR
  16. # 使用logger记录到系统日志
  17. logger "Script started"
复制代码

自定义终端环境

自定义bash配置文件

通过自定义.bashrc文件,可以大幅提升命令行使用体验。
  1. # 编辑.bashrc文件
  2. nano ~/.bashrc
  3. # 添加自定义别名
  4. alias ll='ls -alF'
  5. alias la='ls -A'
  6. alias l='ls -CF'
  7. alias ..='cd ..'
  8. alias ...='cd ../..'
  9. alias grep='grep --color=auto'
  10. alias fgrep='fgrep --color=auto'
  11. alias egrep='egrep --color=auto'
  12. # 添加自定义函数
  13. extract() {
  14.     if [ -f $1 ] ; then
  15.         case $1 in
  16.             *.tar.bz2)   tar xjf $1     ;;
  17.             *.tar.gz)    tar xzf $1     ;;
  18.             *.bz2)       bunzip2 $1     ;;
  19.             *.rar)       unrar e $1     ;;
  20.             *.gz)        gunzip $1      ;;
  21.             *.tar)       tar xf $1      ;;
  22.             *.tbz2)      tar xjf $1     ;;
  23.             *.tgz)       tar xzf $1     ;;
  24.             *.zip)       unzip $1       ;;
  25.             *.Z)         uncompress $1  ;;
  26.             *.7z)        7z x $1        ;;
  27.             *)     echo "'$1' cannot be extracted via extract()" ;;
  28.         esac
  29.     else
  30.         echo "'$1' is not a valid file"
  31.     fi
  32. }
  33. # 自定义提示符
  34. PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
  35. # 添加路径到PATH变量
  36. export PATH="$PATH:/path/to/custom/bin"
  37. # 设置历史记录选项
  38. export HISTSIZE=10000
  39. export HISTFILESIZE=20000
  40. export HISTCONTROL=ignoredups:erasedups
  41. shopt -s histappend
  42. # 使更改生效
  43. source ~/.bashrc
复制代码

使用tmux和screen进行终端复用

终端复用器可以让你在单个终端窗口中运行多个会话,并可以断开和重新连接会话。
  1. # 安装tmux
  2. sudo apt-get install tmux
  3. # 创建新的tmux会话
  4. tmux new -s session_name
  5. # 断开会话(Ctrl+b,然后按d)
  6. tmux detach
  7. # 列出所有会话
  8. tmux ls
  9. # 重新连接会话
  10. tmux attach -t session_name
  11. # 创建水平分割窗口(Ctrl+b,然后按")
  12. tmux split-window -h
  13. # 创建垂直分割窗口(Ctrl+b,然后按%)
  14. tmux split-window -v
  15. # 切换窗口(Ctrl+b,然后按方向键)
  16. tmux select-pane -U  # 上
  17. tmux select-pane -D  # 下
  18. tmux select-pane -L  # 左
  19. tmux select-pane -R  # 右
  20. # 创建新窗口(Ctrl+b,然后按c)
  21. tmux new-window
  22. # 切换窗口(Ctrl+b,然后按数字)
  23. tmux select-window -t 1
  24. # 使用screen
  25. # 安装screen
  26. sudo apt-get install screen
  27. # 创建新的screen会话
  28. screen -S session_name
  29. # 断开会话(Ctrl+a,然后按d)
  30. screen -d
  31. # 列出所有会话
  32. screen -ls
  33. # 重新连接会话
  34. screen -r session_name
  35. # 创建水平分割窗口(Ctrl+a,然后按|)
  36. screen -X split
  37. # 创建垂直分割窗口(Ctrl+a,然后按S)
  38. screen -X split -v
  39. # 切换窗口(Ctrl+a,然后按Tab)
  40. screen -X focus
复制代码

使用zsh和oh-my-zsh增强终端体验

Zsh是一个功能强大的Shell,配合oh-my-zsh框架,可以提供更丰富的功能和更美观的界面。
  1. # 安装zsh
  2. sudo apt-get install zsh
  3. # 安装oh-my-zsh
  4. sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
  5. # 切换到zsh
  6. chsh -s $(which zsh)
  7. # 重新登录以使用zsh
  8. # 安装主题(例如powerlevel10k)
  9. git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
  10. # 编辑.zshrc文件设置主题
  11. ZSH_THEME="powerlevel10k/powerlevel10k"
  12. # 安装插件
  13. git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
  14. git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
  15. # 编辑.zshrc文件启用插件
  16. plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
  17. # 使更改生效
  18. source ~/.zshrc
复制代码

使用fzf进行模糊搜索

fzf是一个命令行模糊搜索工具,可以大幅提升文件搜索和命令历史记录的效率。
  1. # 安装fzf
  2. sudo apt-get install fzf
  3. # 在.bashrc或.zshrc中添加以下设置以启用fzf的键绑定
  4. source /usr/share/doc/fzf/examples/key-bindings.bash
  5. source /usr/share/doc/fzf/examples/completion.bash
  6. # 使用fzf搜索文件
  7. vim $(fzf)
  8. # 使用fzf搜索命令历史记录
  9. Ctrl+R
  10. # 使用fzf与find结合
  11. find . -type f | fzf
  12. # 使用fzf预览文件
  13. fzf --preview 'bat --style=numbers --color=always {} | head -500'
  14. # 使用fzf与git结合
  15. git branch | fzf
  16. # 使用fzf与kill命令结合
  17. kill -9 $(ps aux | fzf | awk '{print $2}')
复制代码

命令行效率工具和技巧

使用alias创建命令别名

别名是简化常用命令的有效方法。
  1. # 创建临时别名(仅在当前会话有效)
  2. alias ll='ls -alF'
  3. # 创建永久别名(添加到.bashrc或.zshrc)
  4. echo "alias ll='ls -alF'" >> ~/.bashrc
  5. source ~/.bashrc
  6. # 查看所有别名
  7. alias
  8. # 删除别名
  9. unalias ll
  10. # 常用别名示例
  11. alias ..='cd ..'
  12. alias ...='cd ../..'
  13. alias ....='cd ../../..'
  14. alias grep='grep --color=auto'
  15. alias fgrep='fgrep --color=auto'
  16. alias egrep='egrep --color=auto'
  17. alias df='df -h'
  18. alias du='du -h'
  19. alias free='free -h'
  20. alias update='sudo apt update && sudo apt upgrade -y'
  21. alias myip='curl ipinfo.io/ip'
  22. alias ports='netstat -tulanp'
复制代码

使用history命令管理命令历史

命令历史记录是提高效率的重要工具。
  1. # 显示命令历史
  2. history
  3. # 显示最近的10条命令
  4. history 10
  5. # 执行历史记录中的命令(使用!加命令编号)
  6. !123
  7. # 执行上一条命令
  8. !!
  9. # 执行上一条命令的最后一个参数
  10. !$
  11. # 搜索历史记录(Ctrl+R)
  12. Ctrl+R
  13. # 清除命令历史
  14. history -c
  15. # 删除特定历史记录项
  16. history -d 123
  17. # 设置历史记录格式(添加时间戳)
  18. export HISTTIMEFORMAT="%F %T "
  19. # 设置历史记录大小
  20. export HISTSIZE=10000
  21. export HISTFILESIZE=20000
  22. # 忽略重复命令
  23. export HISTCONTROL=ignoredups
  24. # 忽略特定命令
  25. export HISTIGNORE="ls:cd:pwd:clear"
  26. # 将命令立即添加到历史记录
  27. shopt -s histappend
  28. PROMPT_COMMAND='history -a'
复制代码

使用管道和重定向

管道和重定向是Linux命令行的核心概念,掌握它们可以大幅提升效率。
  1. # 基本管道(将一个命令的输出作为另一个命令的输入)
  2. ls -l | grep ".txt"
  3. # 多重管道
  4. ps aux | grep apache | grep -v grep | awk '{print $2}'
  5. # 输出重定向(覆盖)
  6. ls -l > file_list.txt
  7. # 输出重定向(追加)
  8. ls -l >> file_list.txt
  9. # 错误重定向
  10. command 2> error.log
  11. # 同时重定向输出和错误
  12. command > output.log 2>&1
  13. # 或者使用现代语法
  14. command &> output.log
  15. # 输入重定向
  16. sort < unsorted_list.txt
  17. # Here Document
  18. cat << EOF > new_file.txt
  19. This is a multi-line
  20. text block that will be
  21. written to the file.
  22. EOF
  23. # Here String
  24. grep "search" <<< "This is a string to search in"
  25. # 进程替换(将命令输出作为文件)
  26. diff <(sort file1.txt) <(sort file2.txt)
  27. # 命令分组
  28. { date; ls -l; } > output.log
  29. # 子Shell
  30. (date; ls -l) > output.log
复制代码

使用并行处理提高效率

并行处理可以充分利用多核CPU的性能,大幅提高处理速度。
  1. # 使用xargs进行并行处理
  2. find . -name "*.jpg" | xargs -P 4 -I {} convert {} {}.png
  3. # 使用GNU parallel(需要安装)
  4. sudo apt-get install parallel
  5. # 基本并行处理
  6. ls *.jpg | parallel convert {} {.}.png
  7. # 指定并行作业数
  8. ls *.jpg | parallel -j 4 convert {} {.}.png
  9. # 显示进度条
  10. ls *.jpg | parallel --progress convert {} {.}.png
  11. # 使用参数替换
  12. parallel echo {1} {2} ::: A B C ::: 1 2 3
  13. # 使用参数文件
  14. parallel -a input.txt command
  15. # 使用记录分隔符处理多行输入
  16. parallel -N 3 echo < input.txt
  17. # 使用--dry-run测试命令
  18. parallel --dry-run convert {} {.}.png ::: *.jpg
复制代码

使用watch定期执行命令

watch命令可以定期执行命令并显示结果,非常适合监控任务。
  1. # 每2秒执行一次命令(默认)
  2. watch date
  3. # 指定间隔时间(秒)
  4. watch -n 5 date
  5. # 高亮显示变化
  6. watch -d date
  7. # 如果命令包含管道或特殊字符,需要用引号括起来
  8. watch -n 1 "ps aux | grep apache"
  9. # 使用watch监控文件变化
  10. watch -d ls -l
  11. # 使用watch监控系统负载
  12. watch -n 1 "cat /proc/loadavg"
  13. # 使用watch监控磁盘使用情况
  14. watch -n 1 "df -h"
复制代码

实际应用场景和案例

批量重命名文件
  1. # 使用mv命令和循环批量重命名
  2. for file in *.txt; do
  3.     mv "$file" "new_${file}"
  4. done
  5. # 使用rename命令(需要安装)
  6. sudo apt-get install rename
  7. # 使用Perl风格的rename
  8. rename 's/old/new/' *.txt
  9. # 使用mmv(批量移动和重命名工具)
  10. sudo apt-get install mmv
  11. # 使用mmv批量重命名
  12. mmv "*.txt" "new_#1.txt"
  13. # 使用find和rename结合
  14. find . -name "*.txt" -exec rename 's/old/new/' {} \;
  15. # 使用sed和mv结合
  16. for file in *.txt; do
  17.     newname=$(echo "$file" | sed 's/old/new/')
  18.     mv "$file" "$newname"
  19. done
复制代码

批量处理图像
  1. # 使用ImageMagick批量调整图像大小
  2. sudo apt-get install imagemagick
  3. # 批量调整图像大小为800x600
  4. mogrify -resize 800x600 *.jpg
  5. # 保持宽高比调整大小
  6. mogrify -resize 800x600\> *.jpg
  7. # 批量转换图像格式
  8. mogrify -format png *.jpg
  9. # 批量添加水印
  10. mogrify -gravity southeast -pointsize 20 -fill white -annotate +10+10 "Copyright" *.jpg
  11. # 批量裁剪图像
  12. mogrify -crop 800x600+0+0 *.jpg
  13. # 使用parallel加速批量处理
  14. ls *.jpg | parallel -j 4 convert {} -resize 800x600 resized_{}
复制代码

系统维护和清理
  1. # 查找并删除大文件
  2. find /var/log -type f -size +100M -exec ls -lh {} \;
  3. # 删除旧的日志文件
  4. find /var/log -name "*.log" -mtime +30 -delete
  5. # 清理APT缓存
  6. sudo apt-get clean
  7. sudo apt-get autoremove
  8. # 查找并删除重复文件
  9. sudo apt-get install fdupes
  10. fdupes -r /home/user | grep -v "^$" > duplicates.txt
  11. # 清理旧的内核
  12. sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d')
  13. # 查找并删除空目录
  14. find /path/to/dir -type d -empty -delete
  15. # 查找并删除临时文件
  16. find /tmp -type f -atime +10 -delete
  17. # 清理浏览器缓存
  18. rm -rf ~/.cache/google-chrome/Default/Cache/
  19. rm -rf ~/.mozilla/firefox/*.default-release/cache2/
复制代码

网络监控和安全
  1. # 监控网络连接
  2. sudo netstat -tulnp
  3. # 监控网络流量
  4. sudo apt-get install nethogs
  5. sudo nethogs
  6. # 监控网络带宽
  7. sudo apt-get install bmon
  8. sudo bmon
  9. # 监控网络延迟
  10. ping -c 4 google.com
  11. # 跟踪网络路由
  12. traceroute google.com
  13. # 扫描开放端口
  14. sudo apt-get install nmap
  15. sudo nmap -sS -O 192.168.1.1
  16. # 监控SSH登录尝试
  17. sudo tail -f /var/log/auth.log | grep ssh
  18. # 阻止恶意IP(使用fail2ban)
  19. sudo apt-get install fail2ban
  20. sudo systemctl enable fail2ban
  21. sudo systemctl start fail2ban
  22. # 创建防火墙规则
  23. sudo ufw enable
  24. sudo ufw allow ssh
  25. sudo ufw allow 80/tcp
  26. sudo ufw deny from 192.168.1.100
  27. # 监控网络连接状态
  28. ss -tuln
复制代码

数据备份和恢复
  1. # 使用rsync进行增量备份
  2. rsync -avh --delete /source/ /backup/
  3. # 使用tar创建完整备份
  4. tar -czf backup_$(date +%Y%m%d).tar.gz /path/to/backup/
  5. # 使用tar排除特定目录
  6. tar -czf backup.tar.gz --exclude=/path/to/exclude1 --exclude=/path/to/exclude2 /path/to/backup/
  7. # 使用split分割大备份文件
  8. tar -czf - /path/to/backup | split -b 100M - backup_part_
  9. # 使用scp远程备份
  10. scp -r /path/to/backup user@remote:/backup/
  11. # 使用rsync通过SSH远程备份
  12. rsync -avh -e ssh /source/ user@remote:/destination/
  13. # 使用borg创建增量备份(需要安装)
  14. sudo apt-get install borgbackup
  15. borg init --encryption=repokey /path/to/repo
  16. borg create /path/to/repo::archive-$(date +%Y%m%d) /path/to/backup/
  17. # 使用rclone同步到云存储(需要安装)
  18. sudo apt-get install rclone
  19. rclone config
  20. rclone sync /path/to/backup remote:bucket
复制代码

结论和进一步学习资源

通过本文的介绍,你已经了解了Kubuntu中命令行的高级使用技巧,从基础命令回顾到文件处理、系统管理、网络操作,再到Shell脚本编程和终端环境自定义。这些技巧将帮助你显著提升Linux操作效率,成为真正的终端高手。

要进一步深化你的命令行技能,以下是一些推荐的学习资源:

1. 书籍:《Linux命令行与Shell脚本编程大全》《Unix/Linux编程实践教程》《鸟哥的Linux私房菜》
2. 《Linux命令行与Shell脚本编程大全》
3. 《Unix/Linux编程实践教程》
4. 《鸟哥的Linux私房菜》
5. 在线资源:Linux命令行基础explainshell.com- 解释Linux命令commandlinefu.com- 命令行技巧分享
6. Linux命令行基础
7. explainshell.com- 解释Linux命令
8. commandlinefu.com- 命令行技巧分享
9. 实践项目:构建个人备份脚本创建系统监控仪表板开发自动化部署工具设计个人工作流脚本
10. 构建个人备份脚本
11. 创建系统监控仪表板
12. 开发自动化部署工具
13. 设计个人工作流脚本

书籍:

• 《Linux命令行与Shell脚本编程大全》
• 《Unix/Linux编程实践教程》
• 《鸟哥的Linux私房菜》

在线资源:

• Linux命令行基础
• explainshell.com- 解释Linux命令
• commandlinefu.com- 命令行技巧分享

实践项目:

• 构建个人备份脚本
• 创建系统监控仪表板
• 开发自动化部署工具
• 设计个人工作流脚本

记住,精通命令行是一个持续学习的过程。不断实践、探索新工具和技术,你将逐渐成为真正的Linux终端高手。祝你在Kubuntu的命令行世界中探索愉快!
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则

加入频道

加入频道

加入社群

加入社群

联系我们|小黑屋|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.