【Linux命令行权威指南】总结出134条命令的详细解析和使用,助力掌握核心命令与参数

想象一下,Linux就像一座无尽的宝藏岛,而你,就是那位勇敢的探险家。但是,面对岛上成千上万的神秘洞穴(也就是那些让人眼花缭乱的命令),即使是经验最丰富的寻宝者,也难免会迷失方向,仿佛是在浩瀚的大海中捞针一样艰难。
我们深知,每一位Linux用户心中都有一张梦寐以求的地图,能够指引他们快速找到所需的宝藏(命令)。因此,本文立志成为你的私人宝藏地图,它不仅会帮你梳理那些最常用、最实用的命令,还会深入挖掘它们的应用场景,让你从此无需大海捞针,轻松成为Linux世界的探险高手!

文件和目录操作

ls:列出目录内容

  • 参数:
    • -a:显示所有文件,包括以.开头的隐藏文件
    • -l:使用长列表格式显示
    • -h:与 -l 一起使用,以人类可读的格式显示文件大小
    • -t:按修改时间排序
    • -R:递归列出所有子目录的内容
    • -S:按文件大小排序
    • -F:显示文件类型的指示符(例如,/ 表示目录)
  • 示例:
    ls -lah  # 显示所有文件,长列表格式,人类可读大小
    

cd:更改当前工作目录

  • 参数:

    • 无参数:如果未指定目录,则切换到当前用户的主目录
    • 相对路径或绝对路径:指定要切换到的目录的路径
    • ~$HOME:切换到当前用户的主目录
    • ..:切换到上一级目录
    • -:切换到上一个工作目录
  • 示例:

    cd /path/to/directory  # 切换到指定目录
    cd -                    # 切换到上一个目录
    

cp:复制文件或目录

  • 参数:
    • -r--recursive:递归复制目录
    • -i:交互式复制,在覆盖时提示
    • -v:详细模式,显示复制进度
    • -p:保留原文件的属性
    • -u:只有源文件比目标文件新,或者目标文件不存在时,才复制
    • --preserve=all:保留所有文件属性
  • 示例:
    cp -r --preserve=all source_dir destination_dir  # 递归复制目录并保留所有属性
    cp -u file1 file2  # 只有当file1比file2新时,才复制
    

mv:移动或重命名文件或目录

  • 参数:
    • -i:交互式移动,在覆盖时提示
    • -v:详细模式,显示移动进度
    • -n:不覆盖已存在的文件
  • 示例:
    mv -in file1 file2  # 在覆盖前提示,不覆盖已存在的文件
    

rm:删除文件或目录

  • 参数:
    • -r--recursive:递归删除目录及其内容
    • -f--force:强制删除,不提示确认
    • -v:详细模式,显示删除进度
  • 示例:
    rm -rf directory  # 强制递归删除目录
    

touch:更新文件时间戳或创建新文件

  • 参数:
    • -t:设置特定的时间戳
    • -m:仅更改修改时间
    • -a:仅更改访问时间
    • -c:不创建新文件
  • 示例:
    touch -t 202401010000 file  # 设置文件时间为2024年1月1日
    touch -am file  # 仅更新文件的访问时间
    

mkdir:创建新目录

  • 参数:
    • -p:创建目录时,如果父目录不存在,也会创建父目录
    • -v:详细模式,显示创建的目录
    • -m--mode:设置目录的权限模式
  • 示例:
    mkdir -vp /path/to/new/directory  # 显示创建的目录及其父目录
    mkdir -m 0755 new_directory  # 创建目录并设置为755权限
    

rename:重命名文件或目录

  • 参数:
    • -v:详细模式,显示重命名前后的文件名
    • -n:模拟执行,仅显示将要执行的操作,不实际重命名
    • -s:去除文件名中的空格
    • -u:仅对源字符串不存在的文件进行重命名
  • 示例:
    rename 's/old/new/' *  # 将当前目录下所有文件中的 "old" 替换为 "new"
    rename -v 's/\.old$/.new/' *  # 显示重命名过程,将文件扩展名从 .old 改为 .new
    rename -n 's/\s+$//' *  # 模拟去除所有文件名末尾的空格
    rename -s ' ' '_' *  # 将文件名中的空格替换为下划线
    rename -u 's/backup/Backup/' *  # 如果文件名中没有 "Backup" 则进行替换
    

tree:以树状图列出目录内容

  • 参数:
    • -a:显示隐藏文件(以.开头的文件或目录)
    • -d:只显示目录,不显示文件
    • -f:在输出中包括文件名
    • -i:忽略那些不存在的文件
    • -l:除了节点之外,还显示符号链接指向的目标
    • -h:以易读的格式显示文件大小(使用K、M等)
    • -L <level>:限制目录树的深度
  • 示例:
    tree  # 列出当前目录下的树状图
    tree -a  # 包括隐藏文件的树状图
    tree -d  # 只显示目录的树状图
    tree -f  # 显示文件名的树状图
    tree -i  # 忽略不存在的文件的树状图
    tree -l  # 显示符号链接目标的树状图
    tree -h  # 以易读格式显示文件大小的树状图
    tree -L 2  # 限制目录树深度为当前目录和下一级目录
    

rmdir:删除空目录

  • 参数:
    • -p:删除目录时,如果父目录为空,也会递归删除
  • 示例:
    rmdir -p /path/to/empty/directory  # 递归删除空目录及其空父目录
    

find:在目录树中查找文件

  • 参数:
    • -name:按文件名查找
    • -type:按文件类型查找
    • -newer:查找比另一个文件更新的文件
    • -user:查找属于某个用户的文件
    • -size:按文件大小查找
    • -exec:对找到的文件执行指定的命令
    • -perm:按文件权限查找
    • -not:排除某些条件
    • -o:或者,用于组合条件
    • -print:显示文件
    • -quit:找到第一个匹配的文件后停止搜索
  • 示例:
    find /path/to/search -name '*.txt' -not -user username  # 查找所有txt文件,但不是属于特定用户的
    find / -size +10M -print -quit  # 查找大于10MB的第一个文件并显示文件
    

locate:查找文件系统中的文件

  • 参数:
    • -b:仅显示完整路径
    • -e:搜索时不区分大小写
    • -r:使用正则表达式搜索
    • -i:忽略文件名的大小写差异
  • 示例:
    locate filename.txt  # 查找名为filename.txt的文件
    locate -b filename.txt  # 仅显示filename.txt的完整路径
    locate -e pattern  # 不区分大小写地搜索包含pattern的文件
    locate -r '^/.*\.txt'  # 使用正则表达式搜索所有txt文件
    locate -i "File*"  # 忽略大小写地搜索以File开头的文件名
    

file:确定文件类型

  • 参数:
    • -i:显示文件的mime类型
    • -b:显示简洁的输出,仅文件名
    • -m <magic file>:使用指定的魔法文件来检查文件类型
    • -v:显示版本信息
  • 示例:
    file example.txt  # 显示example.txt文件的类型
    file -i example.txt  # 显示example.txt文件的mime类型
    file -b example.txt  # 仅显示文件类型,不包含文件名
    file -m /path/to/magic file_to_check  # 使用自定义魔法文件检查文件类型
    file -v  # 显示file命令的版本信息
    

split:拆分文件为多个部分

  • 参数:
    • -b <大小>:指定每个输出文件的大小,单位可以是K、M、G等
    • -l <行数>:指定每个输出文件包含的行数
    • -d:使用数字作为输出文件的后缀
    • -a <长度>:设置输出文件后缀的长度
    • -n <份数>:指定要创建的输出文件的数量
    • --additional-suffix=<后缀>:在输出文件名的末尾添加指定的后缀
  • 示例:
    split -b 10M bigfile.txt part  # 按照10MB大小拆分bigfile.txt,并以part开头命名
    split -l 1000 bigfile.txt part  # 按照每1000行拆分bigfile.txt,并以part开头命名
    split -d -a 2 -l 500 bigfile.txt part  # 按照每500行拆分bigfile.txt,使用数字作为后缀
    

join:合并两个文件的行

  • 参数:
    • -a <option>:指定要补充的文件,1 表示第一个文件,2 表示第二个文件,-a 表示两个文件都会显示未匹配的行
    • -e <string>:为未找到的字段指定替换字符串
    • -o <list>:指定要输出的字段列表
    • -1 <number>:指定第一个文件中用于比较的字段编号
    • -2 <number>:指定第二个文件中用于比较的字段编号
  • 示例:
    join file1.txt file2.txt  # 默认情况下,合并两个文件中第一个字段相同的行
    join -a 1 -e "NA" file1.txt file2.txt  # 显示第一个文件中未匹配的行,用 "NA" 替换
    join -o 1.1,2.2 file1.txt file2.txt  # 只输出两个文件中指定的字段
    join -1 2 -2 1 file1.txt file2.txt  # 使用第一个文件的第二字段和第二个文件的第一字段进行比较
    

ln:创建硬链接

或符号链接

  • 参数:
    • -s:创建符号链接而不是硬链接
  • 示例:
    ln -s /path/to/target /path/to/link  # 创建指向目标的符号链接
    

rsync:同步文件和目录

  • 参数:
    • -a:归档模式,等价于 -rlptgoD
    • -v:详细模式,显示更多的信息
    • -z:压缩数据,以减少数据传输量
    • --dry-run:进行模拟运行,不执行任何改变
    • --exclude:指定排除的模式
    • --include:指定包含的模式
    • --delete:同步时删除目标中的文件,如果它们在源中不存在
  • 示例:
    rsync -av /source/directory user@remote_host:/destination/directory  # 同步本地目录到远程目录
    rsync -avz /source/directory /backup/directory  # 本地同步并压缩数据
    rsync -av --exclude='*.log' /source/directory /destination/directory  # 同步时排除所有日志文件
    rsync -av --delete /source/directory /destination/directory  # 同步并删除目标中的多余文件
    rsync -av --dry-run /source/directory /destination/directory  # 模拟同步过程,不执行任何操作
    

alias:创建命令别名

  • 参数:
    • 无特定参数,通常格式为 alias 新命令='原命令'
  • 示例:
    alias ll='ls -l'  # 创建别名ll为长列表格式的ls命令
    

unalias:删除别名

  • 参数:
    • 别名名称:指定要删除的别名
  • 示例:
    unalias ll  # 删除 'll' 别名
    

文件内容查看

cat:查看或拼接文件内容

  • 参数:
    • file:指定要查看的文件
    • -n:显示行号
    • -b:与 -n 类似,但跳过空行的行号显示
    • -E:在每行末尾显示 $,表示行结束
  • 示例:
    cat file.txt          # 查看文件内容
    cat -n file.txt       # 显示行号
    cat -b file.txt       # 显示行号,跳过空行
    

more:分页显示文件内容

  • 参数:
    • file:指定要查看的文件
    • +N:从第 N 行开始显示
  • 示例:
    more file.txt         # 分页查看文件
    more +10 file.txt     # 从第10行开始显示
    

less:分页显示文件内容,支持前后翻页

  • 参数:
    • -N:显示每行的行号
    • +G:直接跳转到文件末尾
    • file:指定要查看的文件
  • 示例:
    less file.txt         # 分页查看文件,支持前后翻页
    less -N file.txt      # 显示行号
    less +G file.txt      # 直接跳转到文件末尾
    

head:查看文件的开头部分

  • 参数:
    • file:指定要查看的文件
    • -n [number]:显示文件的前 number 行
  • 示例:
    head file.txt          # 查看文件的前10行
    head -n 20 file.txt    # 查看文件的前20行
    

tail:查看文件的尾部部分,常用于查看日志文件

  • 参数:
    • file:指定要查看的文件
    • -n [number]:显示文件的最后 number 行
    • -f:持续监控文件的新增内容
  • 示例:
    tail file.txt          # 查看文件的最后10行
    tail -n 20 file.txt    # 查看文件的最后20行
    tail -f file.txt       # 实时显示文件新增内容
    

grep:搜索文本并打印匹配行

  • 参数:
    • -i:忽略大小写
    • -v:显示不匹配的行
    • -r:递归搜索指定目录
    • -n:显示匹配行的行号
    • pattern:指定搜索的文本模式
    • file:指定要搜索的文件
  • 示例:
    grep -inwr 'pattern' file.txt  # 忽略大小写搜索模式文本,显示匹配行及行号
    grep -r 'pattern' /path/to/dir  # 递归搜索目录中的模式
    

文件权限和所有权

chmod:更改文件或目录的权限

  • 参数:
    • u:更改所有者权限
    • g:更改组权限
    • o:更改其他用户权限
    • a:表示所有用户(所有者、组和其他用户)
    • + -:添加或移除权限
    • r:读权限
    • w:写权限
    • x:执行权限
    • mode:权限设置 通常为三位数字或组合 如 777(读/写/执行)
  • 示例:
    chmod u+x file.txt    # 为所有者添加执行权限
    chmod 755 file.txt    # 设置文件权限为所有者全部权限 组和其他用户读/执行权限
    chmod g-rwx file.txt  # 去除组的读写执行权限
    

chown:更改文件或目录的所有者

  • 参数:
    • user:新的所有者用户名
    • user:group:新的所有者用户名和组名
    • -R:递归更改指定目录下的所有文件的所有者
    • -f:静默模式 不显示错误信息
  • 示例:
    chown user file.txt   # 更改文件的所有者为 user
    chown user:group file.txt  # 更改文件的所有者和组为 user:group
    chown -R user /dir  # 递归更改目录的所有者为 user
    

chgrp:更改文件或目录的组

  • 参数:
    • group:新的组名
    • -R:递归更改指定目录下的所有文件的组
    • -f:静默模式 不显示错误信息
  • 示例:
    chgrp group file.txt  # 更改文件的组为 group
    chgrp -R group /dir   # 递归更改目录及其内容的组为 group
    

sudo:以超级用户权限执行命令

  • 参数:
    • -u, --user=USER:以指定的用户身份执行命令
    • -s, --shell=SHELL:使用指定的shell执行命令
    • -l, --list:列出用户能够通过sudo执行的命令
  • 示例:
    sudo -u root COMMAND
    

su:切换到超级用户或其他用户

  • 参数:
    • -c, --command=COMMAND:执行指定的命令,然后退出
    • -l, --login:模拟完整的登录,包括环境变量的切换
    • -m, -p:保留环境变量,使用当前用户的登录shell
  • 示例:
    su -l
    

系统信息和状态

df:显示磁盘空间使用情况

  • 参数:
    • -h:以人类可读的格式显示
    • -a:显示所有文件系统
    • -H:以易读的格式并以1024字节的单位显示
  • 示例:
    df -h
    df -a
    

du:显示目录或文件的磁盘使用情况

  • 参数:
    • -h:以人类可读的格式显示
    • -s:仅显示总计
    • -c:显示总计并列出详细信息
    • -m:以兆为单位显示
  • 示例:
    df -h
    df -a
    

top:实时显示系统进程信息

  • 参数:
    • 无特定参数,交互式操作
  • 示例:
    top
    

htop:增强版的top命令

  • 参数:
    • 无特定参数,交互式操作,支持颜色和更多功能
  • 示例:
    htop
    

pgrep:按名称查找进程

  • 参数:
    • -f:全名匹配,搜索完整命令行
    • -l:显示进程名称
    • -u:指定用户的进程
    • -g:指定进程组ID的进程
  • 示例:
    pgrep -f "command-name"  # 根据完整命令行查找进程
    pgrep -l "process-name"   # 根据进程名查找并显示进程列表
    pgrep -u username        # 根据用户名称查找进程
    pgrep -g group-id        # 根据进程组ID查找进程
    

free:显示内存使用情况

  • 参数:
    • -m:以兆为单位显示
    • -g:以吉咖为单位显示
    • -h:以人类可读的格式显示
  • 示例:
    free -m
    

uname:显示系统信息

  • 参数:
    • -a:显示所有系统信息
    • -s:显示内核名称
    • -n:显示网络节点名称(主机名)
  • 示例:
    uname -a
    

last:显示系统登录日志

  • 参数:
    • -n <条数>:显示最近的指定条数的登录记录
    • -a:显示所有登录系统的用户
    • -i:显示IP地址
    • -f <文件>:指定要分析的日志文件
    • -t <日期>:显示在指定日期之后的登录记录
    • -s <日期>:显示在指定日期之前的登录记录
  • 示例:
    last  # 显示所有的登录记录
    last -n 10  # 显示最近的10条登录记录
    last -a  # 显示所有登录系统的用户
    last -i  # 显示IP地址
    last -f /var/log/wtmp.1  # 查看指定的日志文件
    last -t 2023-01-01  # 显示在2023年1月1日之后的登录记录
    

磁盘管理

fdisk:磁盘分区表操作

  • 参数:
    • -l:列出所有分区表
    • -u:显示磁盘和分区的启动标志和分区类型
    • -s [磁盘]:显示指定磁盘的分区大小
    • -m:以MB为单位显示分区大小
  • 示例:
    sudo fdisk -l  # 列出所有分区表
    sudo fdisk -u /dev/sda  # 显示磁盘sda的分区信息
    sudo fdisk -s /dev/sda1  # 显示分区sda1的大小
    sudo fdisk -m /dev/sda  # 以MB为单位显示磁盘sda的分区大小
    

mkfs:创建文件系统

  • 参数:
  • -t <type>:指定文件系统类型,如 ext4vfatntfs
  • -v:详细模式,显示创建文件系统的进度
  • -n <label>:设置文件系统的卷标
  • -F:强制执行文件系统创建,即使设备可能已损坏
  • -c:检查设备是否有坏块,并在创建文件系统时避免使用它们
  • 示例:
    sudo mkfs -t ext4 /dev/sdx1  # 在/dev/sdx1分区创建ext4文件系统
    sudo mkfs -t vfat /dev/sdy1  # 在/dev/sdy1分区创建vfat文件系统,适用于FAT32
    sudo mkfs -t ntfs /dev/sdz1  # 在/dev/sdz1分区创建ntfs文件系统,适用于Windows文件系统
    sudo mkfs -v -n "MyDataDrive" /dev/sdx1  # 为ext4文件系统设置卷标并显示详细进度
    sudo mkfs -F -t ext4 /dev/sdx1  # 强制创建ext4文件系统,忽略可能的损坏
    sudo mkfs -c -t ext4 /dev/sdx1  # 在创建文件系统前检查并避免使用坏块
    

mount:挂载文件系统

  • 参数:
    • -o:挂载选项
    • -t <type>:指定文件系统类型
  • 示例:
    sudo mount -t ext4 /dev/sdx1 /mnt/mydrive  # 挂载分区到指定目录
    

umount:卸载文件系统

  • 参数:
    • -f:强制卸载
    • -v:详细模式,显示卸载过程
  • 示例:
    sudo umount /mnt/mydrive  # 卸载挂载的文件系统
    

dd:复制和转换文件

  • 参数:
    • if=<文件>:指定输入文件(默认为标准输入)
    • of=<文件>:指定输出文件(默认为标准输出)
    • bs=<字节数>:设置缓冲区大小
    • count=<块数>:复制块的数量
    • skip=<块数>:跳过输入文件的块数
    • seek=<块数>:在输出文件中跳过块数
  • 示例:
    dd if=/dev/zero of=empty_file bs=1M count=1  # 创建一个1MB大小的空文件
    dd if=/dev/sda of=disk_image.img  # 创建磁盘设备的完整镜像
    dd if=disk_image.img of=/dev/sdb bs=4M  # 将磁盘镜像写入到另一个磁盘设备
    dd if=input_file of=output_file bs=1024 skip=2 count=4  # 从文件中复制4个块,跳过前2个块
    

fsck:文件系统检查和修复

  • 参数:
    • -t <type>:指定文件系统类型,如 ext4xfs
    • -y:对于所有提示自动回答“yes”,用于修复或确认操作
    • -A:检查并修复所有文件系统
    • -R:仅做文件系统的状态报告,不执行修复
  • 示例:
    fsck /dev/sda1  # 检查指定的分区
    fsck -y /dev/sda1  # 检查并自动修复 /dev/sda1 分区的问题
    fsck -t ext4 /dev/sda1  # 指定文件系统类型为ext4,并检查 /dev/sda1 分区
    fsck -A  # 检查并修复所有文件系统
    fsck -R /dev/sda1  # 报告 /dev/sda1 分区的状态,不进行修复
    

网络相关

ip:显示和操作路由、网络设备、接口地址等,是ifconfigroute命令的现代替代品

  • 参数:
    • -a:显示所有网络接口的状态
    • link:显示或操作网络设备
    • addr:显示或操作接口地址
    • route:显示或操作路由表
    • rule:显示或操作路由规则
  • 示例:
    ip -a  # 显示所有网络接口的状态
    ip link show  # 显示所有网络设备
    ip addr show  # 显示所有接口的地址
    ip route show  # 显示路由表
    ip route add default via 192.168.1.1  # 添加默认路由
    ip route del default  # 删除默认路由
    

ping:测试网络连接

  • 参数:
    • -c <count>:发送指定数量的ECHO请求
    • -t <time>:持续发送数据包,直到指定的时间
    • -l <size>:设置数据包的大小
    • -i <TTL>:设置数据包的生存时间(TTL)
    • -w <timeout>:设置等待每个回复的超时时间(毫秒)
  • 示例:
    ping example.com           # 发送默认数量的数据包到example.com
    ping -t example.com        # 持续发送数据包到example.com,直到手动停止
    ping -c 4 example.com      # 发送4个数据包到example.com
    ping -l 100 example.com    # 发送大小为100字节的数据包到example.com
    ping -i 128 example.com    # 设置数据包的生存时间为128
    ping -w 1000 example.com   # 设置等待响应的超时时间为1000毫秒
    

ifconfig:配置或显示系统网络接口

  • 参数:
    • -a:显示所有网络接口,不论其是否激活
    • -s:显示接口的简短信息
    • -up:仅显示活动状态的网络接口
    • -down:仅显示非活动状态的网络接口
    • hw:设置网络设备的类型与硬件地址
    • mtu:设置网络设备的MTU(最大传输单元)
    • netmask:设置网络设备的子网掩码
  • 示例:
    ifconfig -a               # 显示所有网络接口的配置
    ifconfig eth0 up          # 启动eth0网络接口
    ifconfig eth0 down        # 关闭eth0网络接口
    ifconfig eth0 hw ether 00:1A:2B:3C:4D:5E  # 设置eth0的硬件地址
    ifconfig eth0 mtu 1500  # 设置eth0的MTU为1500字节
    ifconfig eth0 netmask 255.255.255.0  # 设置eth0的子网掩码
    

dig:查询DNS信息

  • 参数:

    • @server:指定查询的DNS服务器
    • +short:只显示简短的查询结果
    • +noall:不显示除查询结果外的其他信息
    • +answer:仅显示查询的答案部分
  • 示例:

    dig example.com  # 查询example.com的DNS信息
    dig @8.8.8.8 example.com  # 使用Google的DNS服务器查询example.com
    dig +short example.com  # 仅显示example.com的简短查询结果
    dig +noall +answer example.com  # 仅显示example.com的查询答案部分
    

nmcli:NetworkManager命令行界面

  • 参数:
    • -e:以逗号分隔的输出格式
    • -t:以表格形式输出
    • con:操作网络连接
    • dev:操作网络设备
    • type:显示或设置网络类型
    • ip4:设置IPv4配置
    • state:显示网络连接的状态
  • 示例:
    nmcli -e yes,no list  # 以特定格式列出所有设备和连接
    nmcli con show  # 显示所有网络连接
    nmcli con up id <connection-name>  # 启用指定的网络连接
    nmcli con down id <connection-name>  # 禁用指定的网络连接
    nmcli dev wifi list  # 列出所有可用的Wi-Fi网络
    nmcli con add type wifi con-name <name> ifname <interface> ssid <SSID> password <password>  # 添加新的Wi-Fi连接
    nmcli con modify <connection-name> ipv4.addresses <ip-address>/24  # 修改网络连接的IPv4地址
    nmcli con modify <connection-name> ipv4.gateway <gateway>  # 修改网络连接的默认网关
    nmcli con modify <connection-name> ipv4.dns "<dns1>,<dns2>"  # 设置网络连接的DNS服务器
    

iwconfig:无线网络配置工具

  • 参数:
    • interface:指定无线网络接口名称,如 wlan0
  • 示例:
    iwconfig wlan0  # 显示指定无线接口的配置信息
    

route:管理网络路由表

  • 参数:
    • -n:显示路由表,不进行名称解析
    • -A:指定协议族,如 -A inet 用于IPv4
    • add:添加新的路由规则
    • del:删除现有的路由规则
    • default:设置或显示默认路由
  • 示例:
    route -n                # 显示路由表,不进行名称解析
    route -n add default gw 192.168.1.1  # 添加默认网关
    route -n del default gw 192.168.1.1   # 删除默认网关
    route -n add 10.0.0.0 gw 192.168.1.1  # 为特定网络添加网关
    route -n add 10.0.0.1 dev eth0  # 通过特定设备添加路由
    

traceroute:追踪数据包路由路径

  • 说明:
  • 参数:
    • -w <timeout>:设置超时时间
    • -q <queries>:设置每个网络跳点的查询次数
    • -p <port>:使用指定的端口号发送数据包
    • -I:使用ICMP协议进行路由追踪
  • 示例:
    traceroute example.com  # 追踪到 example.com 的路由路径
    traceroute -w 5 example.com  # 设置超时时间为5秒
    traceroute -q 3 example.com  # 每个网络跳点发送3次查询
    traceroute -p 33434 example.com  # 使用端口33434进行追踪
    traceroute -I example.com  # 使用ICMP协议进行路由追踪
    

netstat:显示网络状态

  • 参数:
    • -a:显示所有活动的连接和侦听端口
    • -t:显示TCP端口
    • -u:显示UDP端口
  • 示例:
    netstat -a    # 显示所有端口的使用情况
    

ss:显示套接字统计

  • 参数:
    • -t:显示TCP套接字
    • -u:显示UDP套接字
    • -a:显示所有套接字,包括监听和非监听套接字
    • -l:仅显示监听的套接字
    • -n:显示数字地址而不是解析主机名
  • 示例:
    ss -t  # 显示所有TCP套接字
    ss -u  # 显示所有UDP套接字
    ss -a  # 显示所有套接字
    ss -l  # 显示所有监听的套接字
    ss -n  # 以数字地址显示套接字
    

ufw:管理iptables防火墙规则,旨在简化防火墙规则的创建和维护

  • 参数:
    • enable:启用防火墙
    • disable:禁用防火墙
    • status:显示当前防火墙状态
    • allow <port>/<ip>:允许特定的端口或IP地址
    • deny <port>/<ip>:拒绝特定的端口或IP地址
    • delete <rule>:删除指定的规则
    • reset:重置所有规则到默认设置
  • 示例:
    sudo ufw enable  # 启用防火墙
    sudo ufw disable  # 禁用防火墙
    sudo ufw status  # 显示防火墙状态
    sudo ufw allow 22  # 允许SSH端口(22)的流量
    sudo ufw allow from 192.168.1.100  # 允许来自特定IP的流量
    sudo ufw delete allow 22  # 删除允许SSH端口的规则
    sudo ufw reset  # 重置所有ufw规则
    

iptables:Linux防火墙命令行工具

  • 参数:
    • -A <链>:向指定的链添加规则
    • -D <链>:从指定的链删除规则
    • -I <链>:在指定链的头部插入规则
    • -L <链>:列出指定链的规则
    • -F:清空所有链的规则
    • -Z:重置所有链的计数器
    • -P <链>:设置指定链的默认策略
    • -s <源IP>:指定数据包的源地址
    • -d <目标IP>:指定数据包的目标地址
    • -p <协议>:指定数据包的协议(如 tcp、udp)
    • --dport <端口>:指定目标端口
  • 示例:
    sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT  # 允许来自特定IP的进入流量
    sudo iptables -A OUTPUT -d 192.168.1.100 -j ACCEPT  # 允许到特定IP的外出流量
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许进入的SSH流量
    sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT  # 删除允许SSH流量的规则
    sudo iptables -L -n -v  # 列出所有规则,以数字形式显示并提供详细信息
    sudo iptables -F  # 清空所有链的规则
    sudo iptables -Z  # 重置所有链的计数器
    

nc:网络工具,用于读写网络连接

  • 参数:
    • -l:监听模式,用于等待传入的连接
    • -p:指定监听端口
    • -v:详细模式,显示详细信息
    • -z:扫描模式,仅扫描端口而不发送数据
    • -w:设置超时时间
  • 示例:
    nc -l -p 1234  # 在端口1234上监听传入的连接
    nc -v example.com 80  # 连接到example.com的80端口,并显示详细信息
    nc -z -v localhost 1-1000  # 扫描本地机器的1到1000端口,并显示详细信息
    nc -w 5 example.com 1234  # 连接到example.com的1234端口,设置超时时间为5秒
    

ssh:安全远程登录到另一台计算机

  • 参数:
    • -i:指定私钥文件
    • -p:指定远程主机的端口
  • 示例:
    ssh user@remote_host   # 使用ssh登录到remote_host
    

telnet:远程登录和通信工具

  • 参数:
    • -i:指定远程登录用户名
    • -a:试图自动登录远程系统
    • -e:设置转义字符
    • -n:记录所有网络活动到文件
  • 示例:
    telnet example.com 23  # 连接到example.com的23号端口
    telnet -l user example.com  # 使用指定用户名user登录example.com
    telnet -e ^C example.com 23  # 设置转义字符为Ctrl+C,并连接到example.com的23号端口
    telnet -a example.com  # 尝试自动登录example.com
    

scp:安全复制文件到远程计算机

  • 参数:
    • -P:指定远程主机的端口
    • -r:递归复制目录
  • 示例:
    scp local_file user@remote_host:/path/to/remote_file  # 复制文件到远程主机
    

sftp:安全文件传输协议

  • 参数:
    • -o:传递选项给ssh,例如 -oPort=port 设置端口号
    • -p:指定远程主机端口
    • -i:指定用于身份验证的私钥文件
    • -b:从批处理文件读取命令
  • 示例:
    sftp user@example.com  # 连接到example.com的user账号
    sftp -P 2222 user@example.com  # 使用端口2222连接到example.com的user账号
    sftp -i /path/to/private_key user@example.com  # 使用指定的私钥文件连接
    sftp -b batchfile user@example.com  # 从批处理文件读取命令并执行
    

wget:非交互式网络下载工具

  • 参数:
    • -r:递归下载
    • -l:递归下载的深度
    • -P:指定下载文件的本地目录
    • -nc:避免覆盖已存在的文件
    • -q :安静模式(不显示输出)
  • 示例:
    wget http://example.com/file.zip  # 从指定URL下载文件
    wget -r http://example.com/dir/  # 递归下载目录内容
    wget -l 2 http://example.com/  # 递归下载,限制在两个层级内
    wget -P /path/to/download http://example.com/file.zip  # 下载文件到指定目录
    wget -nc http://example.com/file.zip  # 如果文件已存在,则不覆盖
    

curl:用于在命令行中传输数据

  • 参数:
    • -O:将下载的文件保存到本地文件系统,使用远程文件名
    • -o:将下载的文件保存到本地文件系统,使用指定的文件名
    • -I:获取HTTP头信息
    • -d:发送POST请求数据
    • -H :设置HTTP头
    • -X :指定HTTP请求方法)
  • 示例:
    curl http://example.com  # 获取http://example.com的内容
    curl -O http://example.com/file.txt  # 下载文件并保存为file.txt
    curl -o localfile.txt http://example.com/file.txt  # 下载文件并保存为localfile.txt
    curl -I http://example.com  # 获取http://example.com的HTTP头信息
    curl -d "name=value" http://example.com/form  # 发送POST请求数据
    curl -H "Content-Type: application/json" http://example.com  # 设置HTTP头为JSON类型
    curl -X DELETE http://example.com/resource  # 发送DELETE请求
    

包管理

apt-get:Debian系的包管理工具

  • 参数:
    • install <package>:安装指定的软件包
    • remove <package>:移除指定的软件包
    • upgrade:升级所有可升级的软件包
    • update:更新软件包列表
  • 示例:
    sudo apt-get install package_name  # 安装软件包
    sudo apt-get remove package_name   # 移除软件包
    

yum:RedHat系的包管理工具

  • 参数:
    • install <package>:安装指定的软件包
    • remove <package>:移除指定的软件包
    • update:更新软件包
    • check-update:检查可更新的软件包
  • 示例:
    sudo yum install package_name  # 安装软件包
    sudo yum remove package_name   # 移除软件包
    

dnf:Fedora的新一代包管理工具

  • 参数:
    • install <package>:安装指定的软件包
    • remove <package>:移除指定的软件包
    • update:更新软件包
    • upgrade:递增地更新软件包
  • 示例:
    sudo dnf install package_name  # 安装软件包
    sudo dnf remove package_name   # 移除软件包
    

rpm:查询、安装、卸载软件包

  • 参数:
    • -i <package.rpm>:安装指定的RPM软件包
    • -e <package>:卸载指定的软件包
    • -q <package>:查询软件包是否已安装
  • 示例:
    sudo rpm -i package.rpm  # 安装RPM软件包
    sudo rpm -e package_name  # 卸载软件包
    

pacman:Arch Linux的软件包管理器

  • 功能:

    • 安装、删除、升级软件包
    • 管理软件仓库
    • 搜索可用的软件包
  • 常用参数:

    • -S--sync:从软件仓库安装或升级软件包
    • -R--remove:卸载软件包
    • -U--upgrade:升级软件包
    • -Syu--sysupgrade:同步软件仓库并升级所有可升级的软件包
    • -Ss--search:搜索软件仓库中的软件包
    • -Q--query:查询已安装的软件包
    • -Qe--query-explicit:列出所有显式安装的软件包
    • -Qm--query-missing:列出系统中缺少的依赖项
    • -Qi--info:显示软件包的详细信息
    • -Ql--list:列出软件包提供的文件
  • 示例:

    sudo pacman -Sy	# 更新软件仓库
    sudo pacman -Syu	 # 升级所有可升级的软件包
    sudo pacman -S package_name	# 安装软件包
    sudo pacman -Rs package_name	# 卸载软件包
    sudo pacman -Ss search_term	# 搜索软件包
    sudo pacman -Q	# 查询已安装的软件包
    sudo pacman -Qi package_name	# 显示软件包的详细信息
    sudo pacman -Sc	# 清理缓存
    

进程管理

ps: 显示当前进程状态

  • 参数:
    • -aux:显示所有运行中的进程信息
    • -ef:以全格式显示所有进程
  • 示例:
    ps -aux  # 显示所有运行中的进程
    

kill:发送信号到特定进程

  • 参数:
    • -SIG:指定信号,SIG可以是信号名或数字
    • PID:进程ID
  • 示例:
    kill -9 PID  # 发送SIGKILL信号到指定进程
    

pkill:按名称杀死进程

  • 参数:
    • -f:通过完整命令名匹配进程
    • SIG:指定要发送的信号
  • 示例:
    pkill -f command_name  # 按命令名称杀死进程
    

killall:按名称杀死进程

  • 参数:
    • -f:通过完整命令名匹配进程
    • SIG:指定要发送的信号
  • 示例:
    killall -f command_name  # 按命令名称杀死进程
    killall process_name # 终止特定名称的进程
    killall -s SIGNAL process_name  # 发送特定信号
    

top: 实时显示进程信息

  • 参数:
    • 无特定参数,交互式操作
  • 示例:
    top  # 实时显示进程和系统状态
    

bg: 将进程放到后台运行

  • 参数:
    • 无特定参数,通常与 jobs 命令结合使用
  • 示例:
    bg  # 将之前暂停的前台进程放到后台继续运行
    

fg: 将后台进程调至前台运行

  • 参数:
    • 无特定参数,通常与 jobs 命令结合使用
  • 示例:
    fg  # 将后台进程调至前台运行
    

jobs:显示当前在后台运行的作业列表

  • 参数:
  • 示例:
    jobs
    

文本处理

echo: 输出一行文本到标准输出

  • 参数:
    • -n:不输出换行符
    • -e:启用转义字符解释
  • 示例:
    echo "Hello, World"  # 输出文本
    echo -n "Hello, "  # 不输出换行符
    echo "World"
    

printf:格式化输出文本

  • 参数:
    • format:指定输出格式
    • arguments:要格式化的参数列表
  • 示例:
    printf "Hello, %s\n" "World"  # 格式化字符串输出
    printf "Base %d, Octal %o, Hex %x\n" 10 8 10  # 不同数制的格式化输出
    

vim:一个高度可配置的文本编辑器

  • 参数:
    • -e:以交互模式启动Vim
    • -t:跳转到文件的标签
    • -c:执行Vim命令
    • -u:使用指定的初始化文件(vimrc)
  • 示例:
    vim file.txt  # 打开file.txt进行编辑
    vim -e file.txt  # 以交互模式打开file.txt
    vim -u NONE file.txt  # 不使用任何初始化文件打开file.txt
    vim + file.txt  # 打开file.txt并定位到最后退出时的位置
    vim -c 'set number' file.txt  # 打开file.txt并设置显示行号
    

visudo:锁定文件安全编辑sudoers文件

  • 参数:
    • -c:检查 sudoers 文件的语法,但不编辑
    • -f:指定 sudoers 文件的路径
    • -s:编辑一个特定的 sudoers 包含文件
  • 示例:
    visudo  # 编辑默认的sudoers文件
    visudo -c  # 检查sudoers文件的语法,不进行编辑
    visudo -f /etc/sudoers  # 指定sudoers文件的路径
    visudo -s /etc/sudoers.d/custom  # 编辑自定义的sudoers包含文件
    

nano:简单易用的文本编辑器

  • 参数:
    • -v:显示版本信息
    • -w:不显示行号
    • -b:以二进制格式打开文件
    • +lineno:从指定的行号开始编辑
  • 示例:
    nano file.txt  # 打开file.txt进行编辑
    nano -v  # 显示nano的版本信息
    nano -w file.txt  # 打开文件且不显示行号
    nano -b file.bin  # 以二进制格式打开file.bin
    nano +5 file.txt  # 从第5行开始编辑file.txt
    

emacs:高度可定制的文本编辑器

  • 参数:
    • -nw:以无窗口(no window) 系统模式启动,不加载图形用户界面
    • -batch:批处理模式,用于非交互式编辑
    • --daemon:启动或使用已有的 Emacs 守护进程
    • +LINE:直接跳转到文件的指定行
  • 示例:
    emacs file.txt  # 编辑名为file.txt的文件
    emacs -nw file.txt  # 在无窗口模式下编辑file.txt
    emacs -batch file.txt  # 以批处理模式编辑file.txt
    emacs --daemon  # 启动Emacs守护进程
    emacs +100 file.txt  # 打开file.txt并跳转到第100行
    

gedit:文本编辑器,用于编辑文件

  • 参数:
    • -s:以独立窗口模式启动
    • -w:以新的窗口模式启动
    • -g:使用现有的gedit窗口
    • -W:禁用日记
  • 示例:
    gedit file.txt  # 打开file.txt文件进行编辑
    gedit -s file.txt  # 以独立窗口模式打开file.txt
    gedit -w file.txt  # 以新的窗口模式打开file.txt
    gedit -g file.txt  # 使用现有的gedit窗口打开file.txt
    

sed:流编辑器,用于处理文本

  • 参数:
    • -n:仅打印经过模式选择的行
    • -e:对每个脚本执行编辑命令
    • 's/old/new/':替换文本中的 “old” 为 “new”
    • -i:直接修改文件内容,而不是输出到标准输出
    • -E:使用扩展正则表达式
    • -r:使用基础正则表达式(这是默认设置)
    • -i.bak:直接修改文件内容,并将原始内容备份到以 .bak 结尾的文件
  • 示例:
    sed -n '5p' file.txt  # 只打印文件的第5行
    sed 's/old/new/g' file.txt  # 替换文件中的所有实例,将 "old" 替换为 "new"
    sed -i 's/old/new/g' file.txt  # 直接在文件中替换所有 "old" 为 "new"
    sed -i.bak 's/old/new/g' file.txt  # 修改文件并创建原始文件的备份
    sed -E 's/(old)/\1new/g' file.txt  # 使用扩展正则表达式替换匹配的 "old" 为 "new"
    sed -r 's/[0-9]+/& old/g' file.txt  # 使用基础正则表达式匹配数字并附加文本 "old"
    

awk:模式扫描和处理语言

  • 参数:
    • -F:设置输入字段分隔符
    • -v:传递变量给awk脚本
    • -f:从文件中读取awk脚本
    • --field-separators:定义字段分隔符
  • 示例:
    awk '{print $1}' file.txt  # 打印文件每一行的第一个字段
    awk 'NR % 2 == 0 {print $0}' file.txt  # 打印偶数行
    awk '$1 == "target" {print $0}' file.txt  # 打印包含"target"的行
    awk -F, '{print $1}' file.csv  # 以逗号为分隔符,打印CSV文件的每一行的第一个字段
    awk -v var="value" '{print var}'  # 打印外部定义的变量
    awk '条件 {动作}' file.txt  # 对文件进行条件判断并执行动作
    awk -f script.awk file.txt  # 执行外部awk脚本文件
    awk '{sum += $1; count++} END {print "Average:", sum/count}' numbers.txt  # 计算平均值
    

组合使用sedawk

  • 示例:
    # 使用awk打印特定字段,然后使用sed进行模式替换
    awk '{print $1}' file.txt | sed 's/old/new/g'
    # 先用sed删除行,再用awk打印第二字段
    sed '/pattern/d' file.txt | awk '{print $2}'
    # 使用awk选择行,然后通过管道用sed进行替换操作
    awk '$1 == "target" {print $0}' file.txt | sed 's/sometext/replacement/g'
    # 先用sed增加文本行,然后用awk处理数据
    echo "new line to add" | sed 'i\new header line' file.txt && awk '{sum+=$1} END {print sum}' file.txt
    # 先用awk计算总和,然后将结果传递给sed进行插入操作
    awk '{sum+=$1} END {print sum}' file.txt | sed -i "/pattern/i\\total sum is: $(cat)" file.txt
    

cut:从文件或标准输入中提取文本

  • 参数:
    • -b:按字节提取
    • -c:按字符提取
    • -d:指定字段分隔符
    • -f:提取指定字段
  • 示例:
    cut -b 1-4 filename  # 提取文件filename中每行的第1到第4个字节
    cut -c 1-4 filename  # 提取文件filename中每行的第1到第4个字符
    cut -d ':' -f 1,3 filename  # 提取文件filename中以':'分隔的第1和第3个字段
    

sort:对文本的行进行排序

  • 参数:
    • -f:忽略大小写差异进行排序
    • -n:按照数值大小进行排序
    • -r:反向排序
    • -k:通过指定的字段(列)进行排序
    • -t :设置字段分隔符,默认为空格
  • 示例:
    sort file.txt  # 对文件中的行进行字典序排序
    sort -f file.txt  # 忽略大小写进行排序
    sort -n file.txt  # 按照数值大小排序
    sort -r file.txt  # 反向字典序排序
    sort -k 2 file.txt  # 按照第二列进行排序
    sort -t : -k 1 file.txt  # 使用":"作为分隔符,按第一列排序
    echo -e "3:apple\n1:banana\n2:orange" | sort -t : -k 2  # 对输入排序
    

diff:比较文件差异

  • 参数:
    • -u:统一格式输出,显示三个文件的公共行以及不同的行
    • -c:上下文格式输出,显示差异周围的行
    • -w:忽略空白字符差异
    • -i:忽略大小写差异
    • -b:忽略空格和制表符的差异
    • -r:递归比较任何子目录中的文件
  • 示例:
     diff file1.txt file2.txt  # 比较两个文件的差异
     diff -u file1.txt file2.txt  # 以统一格式显示差异
     diff -c file1.txt file2.txt  # 以上下文格式显示差异
     diff -r /path/to/dir1 /path/to/dir2  # 递归比较两个目录下的所有文件
    

patch:应用补丁文件到源代码

  • 参数:
    • -p <num>:指定补丁文件中路径前缀的长度,<num> 通常为0或1
    • -i <file>:指定补丁文件的路径
    • -o <file>:指定输出文件的路径,如果未指定,将直接修改原文件
    • -R:反向应用补丁,将补丁视为还原更改
    • --dry-run:模拟应用补丁,不实际修改文件
  • 示例:
    patch -p1 -i patchfile -o originalfile  # 应用补丁,-p1表示路径前缀长度为1
    patch -R -p0 -i reversepatch  # 反向应用补丁,-p0表示路径前缀长度为0
    patch --dry-run -p1 -i testpatch  # 模拟应用补丁,不进行实际修改
    

expand:将制表符转换为空格

  • 参数:
    • -t <num>:指定制表位的宽度,<num> 是制表符的间隔,默认是8个字符
  • 示例:
    expand file.txt  # 将file.txt中的制表符转换为8个空格
    expand -t 4 file.txt  # 设置制表位宽度为4个字符
    

系统管理

reboot:重启系统

  • 参数:
    • -f:强制重启,忽略所有挂起的文件写入操作
    • -w:仅将所有挂起的文件写入磁盘,但不执行重启
  • 示例:
    sudo reboot  # 重启系统
    sudo reboot -f  # 强制重启系统
    sudo reboot -w  # 将所有挂起的文件写入磁盘
    

shutdown:关闭系统,可以指定时间或是否重启

  • 参数:
    • -h now:立即关机
  • -r now:立即重启系统
  • -c:取消预定的关机或重启操作
  • -t <秒数>:设置关机或重启前的等待时间
  • 示例:
     shutdown -h now  # 立即关机
     shutdown -r now  # 立即重启系统
     shutdown -c      # 取消预定的关机或重启操作
     shutdown -t 10   # 设置10秒后关机或重启
    

poweroff:立即关闭系统

  • 参数:
    • -f:强制关闭系统,不进行任何确认
  • 示例:
    poweroff    # 立即关闭系统
    poweroff -f # 强制立即关闭系统
    

systemctl:systemd系统和服务管理器,用于控制服务和系统状态

  • 参数:
    • start <unit>:启动服务
    • stop <unit>:停止服务
    • status <unit>:查看服务状态
    • enable <unit>:设置服务自启动
    • disable <unit>:禁用服务自启动
  • 示例:
    sudo systemctl start service_name  # 启动服务
    sudo systemctl status service_name  # 查看服务状态
    

chkconfig:管理系统服务的启动状态,主要用于较旧的System V init系统

  • 参数:
    • --level <level>:指定运行级别的服务管理
    • list:列出所有服务的启动状态
    • on:设置服务自启动
    • off:禁止服务自启动
  • 示例:
    sudo chkconfig --level 35 service_name on  # 设置服务在运行级别3和5自启动
    sudo chkconfig list  # 列出所有服务的启动状态
    

service:管理系统服务状态,使用System V init系统

  • 参数:
    • start:启动服务
    • stop:停止服务
    • restart:重启服务
    • status:查看服务状态
    • enable:设置服务在启动时自动运行
    • disable:禁止服务在启动时自动运行
  • 示例:
    sudo service apache2 start  # 启动apache2服务
    sudo service apache2 stop   # 停止apache2服务
    sudo service apache2 restart  # 重启apache2服务
    sudo service apache2 status  # 查看apache2服务状态
    sudo service apache2 enable  # 设置apache2服务在启动时自动运行
    sudo service apache2 disable  # 禁止apache2服务在启动时自动运行
    

systemctl:控制systemd系统和服务管理器

  • 参数:
    • start <单元>:启动指定的服务或目标
    • stop <单元>:停止指定的服务或目标
    • restart <单元>:重启指定的服务或目标
    • status <单元>:显示指定服务的状态
    • enable <单元>:在启动时启用服务
    • disable <单元>:禁止服务在启动时自动启动
    • is-enabled <单元>:检查服务是否设置为在启动时自动启动
    • list-unit-files:列出所有已安装的服务单元文件
    • --all:显示所有单元的状态,包括已禁用的
  • 示例:
    systemctl start apache2.service  # 启动apache2服务
    systemctl stop apache2.service   # 停止apache2服务
    systemctl restart apache2.service  # 重启apache2服务
    systemctl status apache2.service  # 查看apache2服务状态
    systemctl enable apache2.service   # 启用apache2服务,使其在启动时自动启动
    systemctl disable apache2.service  # 禁用apache2服务的自启动
    systemctl is-enabled apache2.service  # 检查apache2服务是否设置为自启动
    systemctl list-unit-files  # 列出所有服务单元文件
    systemctl --all  # 显示所有单元的状态
    

iostat:显示CPU和I/O设备的使用情况

  • 参数:
    • -c:显示CPU使用情况
    • -d:显示磁盘使用情况
    • -x:显示扩展的磁盘使用统计
    • -t:显示每个设备的I/O统计数据的时间戳
    • -k:以千字节为单位显示
  • 示例:
    iostat  # 显示CPU和设备的基本使用情况
    iostat -c  # 仅显示CPU使用情况
    iostat -d  # 仅显示磁盘使用情况
    iostat -x  # 显示扩展的磁盘使用统计
    iostat -t  # 显示每个设备的I/O统计数据的时间戳
    iostat -k  # 以千字节为单位显示统计数据
    

vmstat:显示虚拟内存统计信息

  • 参数:

    • -a:显示活动和非活动内存的详细信息
    • -s:以详细的形式显示内存使用情况
    • -n:显示缓冲区与磁盘交换情况
    • -d:显示磁盘操作情况
    • -p:显示分区使用情况
    • -w:以宽字符格式输出
  • 示例:

     vmstat  # 显示虚拟内存的基本统计信息
     vmstat -a  # 显示活动和非活动内存的详细信息
     vmstat -s  # 以详细的形式显示内存使用情况
     vmstat -n  # 显示缓冲区与磁盘交换情况
     vmstat -d  # 显示磁盘操作情况
     vmstat -p  # 显示分区使用情况
     vmstat -w  # 以宽字符格式输出
    

用户和群组管理

useradd:添加新用户,并可以设置主目录和默认shell

  • 参数:
    • -m:创建用户主目录
    • -s:设置默认shell
  • 示例:
    sudo useradd -m -s /bin/bash new_user  # 添加新用户并设置默认shell
    

userdel:删除用户,可选项删除用户主目录

  • 参数:
    • -r:删除用户主目录
  • 示例:
    sudo userdel -r user_name  # 删除用户及其主目录
    

groupadd:添加新用户组

  • 示例:
    sudo groupadd new_group  # 添加新用户组
    

groupdel:删除用户组

  • 示例:
    sudo groupdel group_name  # 删除用户组
    

备份和压缩

tar:打包、压缩或解压缩文件

  • 参数:
    • -c:创建新的归档文件
    • -v:在压缩或解压时显示进度
    • -f:指定归档文件名
    • -z:使用gzip压缩或解压缩
    • -x:解压缩
    • -j:使用bzip2压缩或解压缩
    • -t:列出归档文件的内容
    • -r:将文件追加到现有的归档文件
  • 示例:
    tar -czvf archive.tar.gz directory/  # 创建gzip压缩的tar归档
    tar -xzvf archive.tar.gz  # 解压gzip压缩的tar归档
    tar -cjvf archive.tar.bz2 directory/ # 创建bzip2压缩的tar归档
    tar -xjvf archive.tar.bz2 # 解压bzip2压缩的tar归档
    tar -cvf archive.tar directory/  # 创建tar归档文件而不压缩
    tar -tvf archive.tar  # 列出tar归档文件的内容
    tar -rvf archive.tar newfile.tx  # 将文件添加到现有tar归档文件
    

gzip:压缩或解压文件

  • 参数:
    • -c:将压缩数据输出到标准输出,不修改原始文件
    • -d:解压缩文件
    • -k:解压缩后保留原始文件
    • -v:详细模式,显示压缩或解压过程中的信息
    • -9:使用最大压缩等级,尝试获得最佳压缩效果
    • -r `:递归地压缩或解压文件夹中的所有文件
  • 示例:
    gzip file.txt  # 压缩 file.txt 文件,生成 file.txt.gz
    gzip -c file.txt > file.txt.gz  # 将 file.txt 压缩并输出到 file.txt.gz
    gzip -d file.txt.gz  # 解压缩 file.txt.gz 到原始的 file.txt
    gzip -k file.txt.gz  # 解压缩 file.txt.gz 并保留压缩文件
    gzip -v file.txt  # 压缩 file.txt 并显示压缩过程的详细信息
    gzip -9 file.txt  # 使用最大压缩等级压缩 file.txt
    gzip -r folder/  # 递归压缩 folder/ 下的所有文件
    

zip:创建或解压ZIP压缩文件

  • 参数:
    • -r:递归地包含目录内的所有文件和子目录
    • -j:仅加入文件,不包含任何目录结构(即扁平化压缩)
    • -m:压缩后保留文件的时间戳不变
    • -q:安静模式,不输出任何信息
    • -u:更新模式,只压缩那些比压缩文件新的文件
    • -x:排除某些文件或模式
    • -0:不压缩,只打包文件
    • -9:使用最高级别的压缩
  • 示例:
    zip -r archive.zip directory/  # 压缩整个目录
    zip -jr flat-archive.zip directory/*	# 扁平化压缩目录中的文件
    zip -u archive.zip newfile.txt  # 更新现有的ZIP文件
    zip -r archive.zip directory/ -x "*/temp/*"	 # 排除特定文件或模式进行压缩
    zip -0 quick-archive.zip file1 file2  # 不压缩,只打包文件
    unzip archive.zip  # 解压ZIP文件
    unzip archive.zip -d destination_directory/  # 解压到指定目录
    unzip -l archive.zip  # 查看ZIP文件内容
    

unzip:解压ZIP文件

  • 参数:
    • -l:列出ZIP文件中的内容,但不解压
    • -n:如果输出文件存在,则不会覆盖,即使使用了 -o 也会被忽略
    • -o:无提示覆盖输出文件
    • -d <directory>:指定解压后的文件存放目录
    • -q:静默模式,不显示解压过程信息
    • -p:打印文件内容到标准输出,而不是解压
    • -t:测试ZIP文件是否损坏
  • 示例:
    unzip archive.zip  # 解压ZIP文件
    unzip -l archive.zip  # 列出ZIP文件中的内容
    unzip archive.zip -d destination_directory/  # 解压到指定目录
    unzip -t archive.zip  # 测试ZIP文件完整性
    unzip -q archive.zip  # 静默模式解压
    

xz:压缩和解压文件

  • 参数:
    • -z:创建压缩文件
    • -e:对压缩文件进行编码
    • -d:解压缩文件
    • -k:保留压缩文件的原始文件名
    • -c:输出到标准输出(用于管道)
    • -9:使用最高压缩等级
  • 示例:
    xz file.txt  # 压缩file.txt文件
    xz -9 file.txt  # 使用最高压缩等级压缩file.txt
    xz -c file.txt > file.txt.xz  # 将压缩数据输出到标准输出(可用于管道)
    xz -d file.txt.xz  # 解压缩file.txt.xz到原始文件
    xz -k file.txt.xz  # 解压缩但保留压缩文件
    

unrar:解压RAR压缩文件

  • 参数:
    • -e:提取文件而不创建目录结构
    • -x:排除特定的文件或目录
    • -p:设置或移除压缩文件的密码
    • -l:列出压缩文件的内容
    • -t:检查压缩文件的完整性
    • -d:指定解压后的文件存放目录
  • 示例:
    unrar x archive.rar  # 解压RAR文件
    unrar x archive.rar destination_directory/  # 解压RAR文件
    unrar l archive.rar  # 列出RAR文件内容
    unrar t archive.rar  # 测试RAR文件完整性
    unrar x -x "temp/*" archive.rar  # 解压RAR文件,排除某些文件
    unrar p -p"my_password" archive.rar  # 设置RAR文件密码
    

其他

gcc:GNU C编译器

  • 参数:
    • -o <file>:指定输出的可执行文件名
    • -Wall:打开几乎所有的警告消息
    • -g:生成调试信息
    • -I <dir>:添加头文件搜索路径
    • -L <dir>:添加库文件搜索路径
    • -l <lib>:链接时搜索指定的库
  • 示例:
    gcc program.c -o program  # 编译 C 程序并生成可执行文件
    gcc -Wall -g program.c -o program  # 开启所有警告并生成调试信息
    gcc -I /path/to/include program.c -o program  # 添加头文件搜索路径
    gcc -L /path/to/lib -l mylib program.c -o program  # 链接指定的库文件
    

g++:GNU C++编译器

  • 参数:
    • -o output_file:指定输出的可执行文件名
    • -Wall:开启所有警告信息
    • -Werror:将所有警告视为错误
    • -std=c++11:指定C++标准版本
    • -g:生成调试信息
    • -O2:优化代码,提高执行效率
    • -c:仅编译,不链接
    • -I include_path:添加包含文件的路径
    • -L lib_path:添加库文件的路径
    • -l library:链接指定的库
  • 示例:
    g++ main.cpp -o main   #编译C++源代码文件
    g++ main.cpp -o main -Wall	#编译并开启所有警告信息
    g++ main.cpp -o main -g	  #编译并生成调试信息
    g++ main.cpp -o main -O2   #编译并优化代码
    g++ main.cpp -c -o main.o  #仅编译,不进行链接
    g++ main.cpp -o main -L/lib/path -lmylib  #编译并链接指定的库
    

git:分布式版本控制系统

  • 参数:
    • -init:初始化一个新的Git仓库
    • clone:克隆一个仓库到本地
    • add:将文件添加到暂存区准备提交
    • git commit: 提交暂存区的更改到仓库
    • git status: 查看当前仓库的状态
    • git branch: 列出所有分支
    • git checkout: 切换到指定的分支
    • git push: 推送本地分支到远程仓库
    • git pull: 从远程仓库拉取并合并到本地分支
    • git log: 查看提交历史
    • git tag: 创建一个新标签
    • git diff: 显示两次提交之间的差异
    • git fetch: 下载远程仓库的变化,但不自动合并
  • 示例:
     git init
     git clone https://github.com/user/repo.git
     git commit -m "Add new feature"
     git checkout development
     git push origin master指定的库
     git diff HEAD HEAD~1	# 比较当前分支的最新提交(HEAD)与前一个提交(HEAD~1)之间的差异指定的库
    

make:自动化构建工具,根据Makefile文件自动构建目标

  • 参数:

  • -f FILE:指定要使用的 Makefile 文件

    • -j N:并行构建,同时运行 N 个命令
    • -k:即使有错误也继续构建
    • -n:不执行任何命令,仅显示将要执行的操作
    • -p:打印 Makefile 的变量和函数定义
    • -q:快速模式,仅检查 Makefile 是否需要更新,不执行构建
    • -s:静默模式,仅显示执行的命令
    • -B:强制重新构建目标,即使它是最新的
    • -t:更新 Makefile 的时间戳,使其看起来比所有依赖项都要新
  • 示例:

    make	# 构建 Makefile 中的默认目标
    make target	  # 构建特定目标
    make clean	# 清理构建产物
    make clean && make	# 重新构建所有目标
    make -j 4	 # 并行构建,同时运行 4 个命令
    make -k		# 即使遇到错误也继续构建
    make -n		# 显示将要执行的操作,但不实际执行
    make -t		# 更新 Makefile 时间戳
    

dmesg:查看系统启动时的内核消息

  • 参数:
    • -T:以秒为单位显示时间戳
    • -c :清除内核日志缓冲区
    • -n level:设置消息级别,只显示等于或高于该级别的消息
    • -t:显示时间戳
    • -s:只显示消息的最后一行
    dmesg	# 显示内核
    

export:设置或导出环境变量

  • 参数:
    • VARNAME=value:设置环境变量VARNAME的值为value
    • -n:取消之前导出的环境变量
  • 示例:
    export VARNAME="value"  # 设置环境变量VARNAME的值为value
    export VARNAME          # 导出当前shell的环境变量VARNAME
    unset VARNAME           # 删除环境变量VARNAME
    export -n VARNAME       # 取消导出环境变量VARNAME,使其在子shell中不可用
    

xargs:构建并执行命令行

  • 说明:
  • 参数:
    • -n <num>:指定每次执行命令时使用的参数数量
    • -I <string>:将 <string> 替换为输入的项
  • 示例:
    echo "one two three" | xargs  # 将输入作为参数执行
    echo "file1 file2 file3" | xargs -n 2 rm  # 每次删除两个文件
    find / -name "*.txt" | xargs -I {} rm {}  # 删除所有找到的.txt文件
    

clear:清除终端屏幕

  • 参数:
    • 无参数
  • 示例:
    clear  # 清除终端屏幕
    

exit:退出shell

  • 参数:
    • <status>:可选的退出状态码,用于指示脚本或程序的执行结果
  • 示例:
    exit  # 退出当前shell,返回默认状态码0
    exit 1  # 退出当前shell,返回状态码1,通常用于表示出错
    

nohup:运行命令或进程,忽略挂断信号

  • 参数:
    • -a:在输出文件中包含退出状态
    • -b:在输出文件中包含终止信号
    • -c:不忽略挂断信号,与 -b 选项一起使用
  • 示例:
    nohup command > output.log 2>&1 &  # 运行命令并忽略挂断信号,输出保存到 output.log
    nohup -a command > output.log 2>&1 &  # 运行命令,包含退出状态到输出文件
    nohup -b command > output.log 2>&1 &  # 运行命令,包含终止信号到输出文件
    nohup -c command > output.log 2>&1 &  # 运行命令,不忽略挂断信号
    

history:显示用户命令历史

  • 参数:
    • -c:清除历史记录
    • -a:将当前shell的命令追加到历史文件
  • 示例:
    history  # 显示命令历史
    

env:显示和设置环境变量

  • 参数:
    • -u:删除指定的环境变量
    • -i:忽略环境变量,从头开始设置一个环境
  • 示例:
    env  # 显示当前所有环境变量及其值
    env | grep PATH  # 显示包含PATH的环境变量
    env -u VARIABLE_NAME  # 删除指定的环境变量
    env -i command  # 忽略环境变量,从头开始执行command
    

crontab:定时任务管理

  • 参数:
    • -l:列出当前用户的cron任务
    • -e:编辑当前用户的cron任务列表
    • -r:删除当前用户的cron任务列表中的所有任务
  • 示例:
    crontab -l  # 列出当前用户的cron任务
    crontab -e  # 编辑当前用户的cron任务
    crontab -r  # 删除当前用户的所有cron任务
    

cal:显示日历

  • 参数:
    • -y:显示当前年份的日历
    • -B :显示给定月份或年份之前的日历
    • -A:显示给定月份或年份之后的日历
  • 示例:
    cal  # 显示当前月份的日历
    cal 03  # 显示3月份的日历
    cal 2023  # 显示2023年的日历
    cal -y  # 显示当前年份每个月的日历
    cal -B 1  # 显示上个月的日历
    cal -A 1  # 显示下个月的日历
    

date:显示或设置系统日期和时间

  • 参数:
    • +FORMAT:指定输出格式
    • -s "DATESTRING":设置系统日期和时间
    • --set="DATESTRING":同 -s,设置系统日期和时间
    • --utc:以UTC时间显示或设置时间
    • --localtime:以本地时间显示或设置时间
    • --hwclock:与硬件时钟交互,用于同步
  • 示例:
    date   # 显示当前日期和时间(默认格式)
    date "+%Y-%m-%d %H:%M:%S"   # 显示当前日期和时间(自定义格式)
    date -s "2023-04-01 12:00:00    # 设置系统日期和时间
    date --set="2023-04-01 12:00:00" --utc    # 设置系统日期和时间(UTC)
    date --localtime    # 显示系统日期和时间(本地时间)
    date +%s -s "$(date +%s)" > /dev/rtc0    # 同步系统时钟到硬件时钟
    hwclock --systohc    # 读取硬件时钟并设置系统时钟
    

w:显示当前登录用户及其活动

  • 参数:
    • -u:仅显示用户信息,不显示正在执行的命令
    • -h:不打印头部信息
    • -s:仅显示用户名称、终端和正在执行的命令
  • 示例:
    w  # 显示当前所有用户的活动信息
    w username  # 显示特定用户的活动信息
    w -u  # 仅显示用户活动,不显示正在执行的命令
    w -h  # 不打印头部信息
    w -s  # 仅显示简化的用户活动信息
    

uptime:显示系统运行时间和当前负载

  • 参数:
    • 无特定参数
  • 示例:
    uptime
    

hostname:显示或设置系统的主机名

  • 参数:
    • -a:显示所有别名
    • -f:显示完整的主机名
    • -i:显示主机的网络地址
    • -d:显示DNS域名
  • 示例:
    hostname  # 显示当前系统的简写主机名
    hostname -f  # 显示当前系统的完整主机名
    hostname -i  # 显示主机的网络地址
    hostname -d  # 显示系统的DNS域名
    hostname newhostname  # 将系统的主机名更改为newhostname
    

which:查找并显示命令的路径

  • 参数:
    • 无特定参数
  • 示例:
    which ls  # 查找ls命令的路径
    

whatis:显示命令的简短描述

  • 参数:
    • 无特定参数
  • 示例:
    whatis ls  # 显示ls命令的简短描述
    

whereis:查找和显示指定命令的二进制、源代码和手册页文件的位置

  • 参数:
    • -b:只查找二进制文件
    • -m:只查找手册页文件
    • -s:只查找源文件
    • -f:在查找时,不显示文件的路径前缀
  • 示例:
    whereis java  # 查找java命令相关的文件
    whereis -b java  # 只查找java的二进制文件
    whereis -m ls  # 查找ls命令的手册页文件
    whereis -s gcc  # 查找gcc的源代码文件
    whereis -f vim  # 查找vim的文件,不显示路径前缀
    

whoami:显示当前用户的用户名

  • 参数:
    • 无参数:默认显示当前用户的用户名
  • 示例:
    whoami  # 显示当前用户的用户名
    

man:显示命令的手册页

  • 参数:
    • -f:显示命令的简短描述,不显示完整手册页
    • -k:在手册页数据库中搜索关键词,列出所有匹配的手册页
    • -w:显示man手册页的何处可以找到
    • -a:显示所有可用的手册页,包括不同部分的手册页
    • -p:指定手册页显示格式,如-p ad显示所有的手册页
    • -M:指定搜索手册页时的目录路径
  • 示例:
    man ls  # 显示ls命令的手册页
    man -f ls  # 显示ls命令的简短描述
    man -k search_term  # 在手册页中搜索关键词search_term
    man -w ls  # 显示ls手册页的位置
    man -a ls  # 显示ls命令的所有手册页
    man -p options ls  # 以指定的选项显示ls的手册页
    man -M /usr/share/man/man1 ls  # 在指定目录下查找ls的手册页
    

info:访问程序的在线帮助信息,比man更加详细

  • 参数:
    • -f <file>:指定要查看的info页面文件
    • -n:不自动启动info程序,而是使用默认的pager(如less
    • -o <file>:将输出保存到文件
    • --apropos <keyword>:搜索关键词,列出所有匹配的info页面
  • 示例:
    info bash  # 访问bash的在线帮助信息
    info -f /usr/share/info/bash.info.gz  # 直接查看指定的info文件
    info -n tar  # 以默认pager查看tar的在线帮助信息
    info -o output.txt grep  # 将grep的在线帮助信息保存到文件
    info --apropos regex  # 搜索与正则表达式相关的在线帮助信息
    
    关注我的微信公众号,获取更多精彩内容!
    在这里插入图片描述

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值