前言

这是我根据我的日常使用和学习过程中对命令行的常见使用基于 命令行的艺术 进行了整理

我将强化作者所说的,本文致力于做到覆盖面广(涉及所有重要的内容),具体(给出具体的最常用的例子),以及 可能并没有那么简洁,因为我不打算写的过于粗糙))))))

该文章不仅是命令行的常用命令,而且涉及到常用的技巧

文章大部分内容是为 Linux 系统编写的,主要关注于交互式 Bash,包括基础命令、日常使用技巧、文件及数据处理、系统调试等方面,这些技巧在 Linux 系统的交互式 Bash 环境中均可使用,但也涵盖了部分 OS X 系统和 Windows 系统的相关内容

遇到问题时,记得多用 man--help 查看文档

只要我活着并且使用命令行并且不忘了),我就会尝试更新这篇文章


基础

lsls -l

  • 作用:列出目录内容。

  • 常用选项

    • -l:显示详细信息(权限、所有者、大小、修改时间)。
    • -a:显示隐藏文件。
    • -h:以易读格式显示文件大小(如 1K、2M)。
  • 示例:

    1
    ls -lah  # 列出所有文件(含隐藏文件),显示详细信息并以易读格式展示大小

grep

  • 作用:文本搜索工具,支持正则表达式。

  • 常用选项

    • -i:忽略大小写。
    • -v:反向匹配(显示不包含关键字的行)。
    • -r:递归搜索目录中的文件。
  • 示例:

    1
    grep -ri "error" /var/log  # 在 /var/log 目录中递归搜索包含 "error" 的行(忽略大小写)

man

  • 作用:查看命令的手册页。

  • 示例

    1
    man ls  # 查看 ls 命令的详细用法

日常使用

Ctrl+R

  • 作用:反向搜索命令历史记录,输入关键字可快速定位并执行历史命令。
  • 示例: 按 Ctrl+R,输入 ssh,可快速找到最近执行的 SSH 命令。

history

  • 作用:显示命令历史记录。

  • 常用技巧

    • !n:执行历史记录中第 n 条命令。
    • !!:重复上一条命令。
    • !$:引用上一条命令的最后一个参数。
  • 示例

    1
    !100  # 执行历史记录中第 100 条命令

alias

  • 作用:创建命令别名,简化复杂操作。

  • 示例:

    1
    alias ll='ls -alh'  # 输入 ll 即可执行 ls -alh

文件及数据处理

find

  • 作用:查找文件或目录。

  • 常用选项

    • -name:按名称匹配。
    • -type:按类型过滤(如 f 表示文件,d 表示目录)。
  • 示例

    1
    find ~ -name "*.txt" -type f  # 在主目录查找所有 .txt 文件

awk

  • 作用:处理文本数据,按列提取或计算。

  • 示例

    1
    awk '{sum += $1} END {print sum}' data.txt  # 计算第一列的总和

sed

  • 作用:流编辑器,用于文本替换或删除。

  • 示例

    1
    sed 's/foo/bar/g' file.txt  # 将文件中所有 "foo" 替换为 "bar"

系统调试

top / htop

  • 作用:实时监控系统进程和资源占用。

  • 区别htop 更直观,支持鼠标操作和颜色高亮。

  • 示例

    1
    htop  # 查看 CPU、内存使用情况,并支持排序和进程管理

netstat / ss

  • 作用:查看网络连接和端口状态。

  • 常用选项

    • -t:显示 TCP 连接。
    • -l:仅显示监听中的端口。
  • 示例:

    1
    netstat -tuln  # 列出所有 TCP/UDP 监听端口

dmesg

  • 作用:查看内核日志,常用于排查硬件或驱动问题。

  • 示例

    1
    dmesg | grep "error"  # 筛选内核日志中的错误信息

单行脚本

统计文件行数

1
wc -l file.txt  # 直接统计

快速备份文件

1
cp file.txt{,.bak}  # 生成 file.txt.bak

批量重命名文件

1
for f in *.log; do mv "$f" "${f%.log}.txt"; done  # 将所有 .log 后缀改为 .txt

冷门但是有用

nc (Netcat)

  • 作用:网络调试工具,支持 TCP/UDP 数据传输。
  • 示例
    1
    nc -zv example.com 80  # 检查 example.com 的 80 端口是否开放

dd

  • 作用:复制文件或设备,常用于创建镜像或测试 I/O。
  • 示例
    1
    dd if=/dev/zero of=testfile bs=1M count=100  # 生成一个 100MB 的空文件

仅限 OS X

brew

  • 作用:包管理器,用于安装 Unix 工具。

  • 示例

    1
    brew install wget  # 安装 wget

pbcopy / pbpaste

  • 作用:与剪贴板交互。

  • 示例

    1
    cat file.txt | pbcopy  # 将文件内容复制到剪贴板

仅限 Windows

Cygwin

  • 作用:在 Windows 中提供类 Unix 环境。

  • 示例: 安装后可直接使用 grepssh 等命令。

wmic

  • 作用:执行系统管理任务,如查看进程信息。

  • 示例

    1
    wmic process list brief  # 列出正在运行的进程