Linux 常用命令集合 - 菜鸟教程

2025-12-24 09:52:51 · 作者: AI Assistant · 浏览: 17

本文将带你深入探索 Linux 常用命令 的世界,涵盖 文件管理文本处理进程管理 等核心功能。通过掌握这些命令,你能够更高效地进行系统管理与开发工作,提升在 Linux 环境下的生产力。

Linux 常用命令集合 - 菜鸟教程

Linux 系统以其强大的命令行工具而闻名,这些命令不仅是系统管理的核心,也是开发人员日常工作的得力助手。掌握 常用命令 是每一个 Linux 用户的必修课。本文将详细介绍一些 关键命令,帮助你在 Linux 编程系统运维 中游刃有余。

文件管理命令

在 Linux 中,文件管理是日常操作的基础。以下是一些经常使用的命令,它们可以帮助你高效地处理文件和目录。

ls:列出文件和目录

ls 命令用于列出当前目录中的文件和子目录。它是最基础的命令之一,广泛用于查看目录内容。

ls
ls -l
ls -a
  • ls:显示当前目录的文件和子目录列表。
  • ls -l:以长格式显示,包含文件权限、所有者、大小、时间戳等详细信息。
  • ls -a:显示所有文件,包括隐藏文件。

cd:切换目录

cd 命令用于在文件系统中切换目录。它是进行文件管理时不可或缺的工具。

cd 目录名
cd ..
cd ~
  • cd 目录名:进入指定目录。
  • cd ..:进入上一级目录。
  • cd ~:进入当前用户的主目录。

mkdir:创建目录

mkdir 命令用于创建新的目录。它可以创建单个目录或多个嵌套目录。

mkdir 目录名
mkdir -p 路径/到/目录
  • mkdir 目录名:创建一个单一的目录。
  • mkdir -p 路径/到/目录:创建多级目录,如果父目录不存在,会自动创建。

rm:删除文件或目录

rm 命令用于删除文件或目录。它可以删除单个文件或多个文件,甚至可以递归删除目录。

rm 文件名
rm -r 目录名
  • rm 文件名:删除一个或多个文件。
  • rm -r 目录名:递归删除目录及其内容。

cp:复制文件或目录

cp 命令用于复制文件或目录。可以复制到同一目录或另一个目录中。

cp 源文件 目标文件
cp -r 源目录 目标目录
  • cp 源文件 目标文件:复制单个文件到目标文件。
  • cp -r 源目录 目标目录:复制整个目录树。

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

mv 命令用于移动文件或目录,也可以用于重命名文件或目录。

mv 源文件 目标文件
mv 原文件名 新文件名
  • 移动文件时,指定源文件和目标文件。
  • 重命名文件时,只需提供原文件名和新文件名。

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

touch 命令用于创建空文件或更新已有文件的时间戳。

touch 文件名
  • 如果文件不存在,touch 会创建一个空文件。
  • 如果文件已经存在,touch 会更新其时间戳。

文本处理命令

在 Linux 中,文本处理是开发与系统管理的重要任务。以下是一些用于文本处理的常用命令。

cat:查看文件内容

cat 命令用于查看、连接和创建文件。它是最常用的文本查看和编辑命令之一。

cat 文件名
cat > 文件名
cat << EOF > 文件名
内容
EOF
  • cat 文件名:显示文件内容。
  • cat > 文件名:创建新文件并输入内容。
  • cat << EOF > 文件名:创建新文件并输入多行内容。

grep:搜索文本内容

grep 命令用于在文件中搜索特定的文本内容。它是文本处理的核心工具之一。

grep "搜索字符串" 文件名
grep -i "搜索字符串" 文件名
grep -r "搜索字符串" 目录
  • grep "搜索字符串" 文件名:在指定文件中搜索字符串。
  • grep -i "搜索字符串" 文件名:忽略大小写进行搜索。
  • grep -r "搜索字符串" 目录:递归搜索目录中的所有文件。

sed:流编辑器

sed 命令是一个强大的流编辑器,用于对文本进行替换、删除、插入等操作。

sed 's/old/new/' 文件名
sed -i 's/old/new/' 文件名
  • sed 's/old/new/' 文件名:替换文件中所有出现的 "old" 为 "new"。
  • sed -i 's/old/new/' 文件名:在原文件中进行替换。

awk:文本分析工具

awk 是一个用于文本分析的强大工具,适用于处理结构化数据。

awk '{print $1}' 文件名
  • 使用 awk 可以按字段打印内容,适用于日志分析、数据提取等场景。

sort:排序文本内容

sort 命令用于对文本内容进行排序,可以按字母、数字或自定义规则排序。

sort 文件名
sort -n 文件名
sort -r 文件名
  • sort 文件名:按字母顺序排序。
  • sort -n 文件名:按数字顺序排序。
  • sort -r 文件名:按逆序排序。

uniq:去重文本内容

uniq 命令用于去重文本内容,通常与 sort 命令搭配使用。

sort 文件名 | uniq
  • 先使用 sort 排序,再使用 uniq 去重。

进程管理命令

进程管理是 Linux 系统中不可或缺的一部分,了解如何管理进程可以显著提升工作效率。

ps:查看进程状态

ps 命令用于查看当前运行的进程状态,它提供了关于进程的详细信息。

ps
ps -ef
ps -aux
  • ps:显示当前运行的进程。
  • ps -ef:列出所有进程,包含 PID、用户、CPU 使用率、内存使用率等信息。
  • ps -aux:以更详细的格式显示进程信息,包括进程的优先级。

top:实时查看进程信息

top 命令提供了一个实时的进程信息视图,能够实时监控系统资源的使用情况。

top
  • top:启动实时进程监控界面,按 CPU 使用率和内存使用率排序。

kill:终止进程

kill 命令用于终止指定的进程。它通过发送信号来实现这一功能。

kill PID
kill -9 PID
  • kill PID:发送默认的信号(通常是 SIGTERM)终止进程。
  • kill -9 PID:发送 SIGKILL 信号强制终止进程。

pgrep:根据名称查找进程

pgrep 命令可以根据进程的名称查找其 PID,简化了进程管理过程。

pgrep 进程名
  • 查找所有与指定进程名匹配的进程 ID。

pkill:根据名称终止进程

pkill 命令可以根据进程的名称终止进程,与 pgrep 配合使用非常方便。

pkill 进程名
  • 终止所有与指定进程名匹配的进程。

系统信息命令

了解系统信息对于系统管理和开发调试非常重要。以下是一些常用的系统信息命令。

uname:显示系统信息

uname 命令用于显示系统信息,包括处理器架构、内核版本等。

uname -m
uname -r
  • uname -m:显示机器的处理器架构。
  • uname -r:显示当前使用的内核版本。

dmidecode:显示硬件信息

dmidecode 命令用于显示硬件系统部件的信息,包括内存、主板、CPU 等。

dmidecode -q
  • -q 参数用于显示简要信息,避免过多的输出内容。

free:查看内存使用情况

free 命令用于查看系统的内存使用情况,包括物理内存和虚拟内存。

free
  • 显示内存使用情况,包括总内存、已用内存、空闲内存等。

df:查看磁盘空间使用

df 命令用于查看磁盘空间的使用情况,尤其适用于管理磁盘配额和磁盘容量。

df -h
df -i
  • -h:以人类可读的格式显示磁盘使用情况。
  • -i:显示 inode 信息,有助于识别磁盘空间不足的原因。

tophtop:实时监控系统资源

tophtop 都是用于实时监控系统资源的命令,但 htop 提供了更友好的交互界面。

top
htop
  • top:显示实时的进程信息和系统资源使用情况。
  • htop:提供更直观的界面,支持鼠标操作和更多功能。

Shell 脚本基础

Shell 脚本是 Linux 系统中实现自动化运维和任务处理的重要工具。掌握 Shell 脚本可以大幅提升工作效率。

#!/bin/bash:指定脚本解释器

在 Shell 脚本的开头,通常会使用 #!/bin/bash 来指定脚本的解释器为 Bash。

#!/bin/bash
echo "Hello, World!"
  • 这是一个简单的 Shell 脚本,输出 "Hello, World!"。

echo:输出文本

echo 命令用于在终端输出文本,是 Shell 脚本中最常用的命令之一。

echo "Message"
  • 输出指定的文本内容。

if:条件判断

if 语句用于实现条件判断,是 Shell 脚本中必不可少的部分。

if [ 条件 ]; then
    命令
else
    命令
fi
  • 判断条件是否为真,执行相应的命令。

for:循环结构

for 循环用于执行一系列命令,适用于迭代处理文件、目录或变量。

for i in 1 2 3; do
    echo $i
done
  • 循环处理变量 i,依次输出 1、2、3。

while:循环结构

while 循环用于持续执行命令,直到指定条件不再满足为止。

while [ 条件 ]; do
    命令
done
  • 循环执行命令,直到条件为假。

case:多条件判断

case 语句用于实现多条件分支判断,适用于处理用户输入或选择场景。

case $variable in
    "value1")
        命令
        ;;
    "value2")
        命令
        ;;
esac
  • 根据变量的值选择执行相应的命令。

function:定义函数

function 关键字用于在 Shell 脚本中定义函数,提高代码的重用性和可维护性。

function greet() {
    echo "Hello, $1!"
}
  • 定义一个名为 greet 的函数,接受一个参数并输出问候语。

trap:处理信号

trap 命令用于捕获和处理进程的信号,确保脚本在异常情况下能够正确退出。

trap 'echo "Caught signal"' SIGINT
  • 当用户按下 Ctrl+C 时,会输出 "Caught signal"。

source:执行脚本中的命令

source 命令用于在当前 shell 中执行指定的脚本,适用于在脚本中调用其他脚本。

source script.sh
  • 执行 script.sh 中的命令,适用于脚本之间的依赖关系。

Linux 系统编程

Linux 系统编程涉及进程、线程、信号和 I/O 模型等核心概念,是开发高性能系统应用的基础。

进程与线程

进程是程序的一次执行,而线程则是进程中的执行单元。在 Linux 中,进程和线程的管理是系统编程的重要内容。

  • 进程:每个进程都有独立的地址空间和资源。
  • 线程:线程共享同一进程的地址空间,但有自己的执行状态。

信号处理

信号是 Linux 进程间通信的一种方式,用于通知进程发生某些事件。

  • 常用信号
  • SIGINT:中断信号(Ctrl+C
  • SIGTERM:终止信号
  • SIGKILL:强制终止信号
  • SIGUSR1SIGUSR2:自定义信号

  • 信号处理示例

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void handle_signal(int sig) {
    printf("Received signal %d\n", sig);
}

int main() {
    signal(SIGINT, handle_signal);
    while (1) {
        sleep(1);
    }
    return 0;
}
  • 该程序会捕获 SIGINT 信号,并输出相应的信息。

I/O 模型

I/O 模型是系统编程中处理输入输出的重要概念,涉及同步、异步、阻塞和非阻塞等机制。

  • 同步 I/O:进程等待 I/O 操作完成。
  • 异步 I/O:进程不等待 I/O 操作完成,而是继续执行其他任务。
  • 阻塞 I/O:I/O 操作会阻塞进程,直到数据准备好。
  • 非阻塞 I/O:I/O 操作不会阻塞进程,但在数据未准备好时会返回错误。

系统调用

系统调用是操作系统提供给应用程序的接口,用于执行底层操作。

  • 常用系统调用
  • fork():创建新进程。
  • exec():执行新程序。
  • wait():等待子进程终止。
  • read()write():读写文件。

信号处理示例

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void handle_signal(int sig) {
    printf("Caught signal %d\n", sig);
    exit(0);
}

int main() {
    signal(SIGINT, handle_signal);
    while (1) {
        sleep(1);
    }
    return 0;
}
  • 该程序会捕获 SIGINT 信号,并输出相应的信息,然后退出。

运维工具

运维工具是 Linux 系统管理的重要组成部分,能够帮助你更高效地维护和监控系统。

Docker

Docker 是一个容器化平台,用于打包、部署和运行应用程序。它提供了轻量级的虚拟化环境,能够快速构建和部署应用。

  • 常用 Docker 命令
  • docker run:运行容器。
  • docker ps:列出正在运行的容器。
  • docker images:列出所有 Docker 镜像。
  • docker build:构建 Docker 镜像。
  • docker stop:停止容器。

  • Docker 的优势

  • 轻量级:容器比传统虚拟机更轻量。
  • 快速部署:Docker 镜像可以快速部署。
  • 环境一致性:确保环境一致,避免“在我机器上能跑”的问题。

监控工具

监控工具是系统管理的重要组成部分,能够帮助你实时监控系统资源和应用程序状态。

  • 常用监控工具
  • top:实时查看进程信息。
  • htop:提供更友好的界面,支持鼠标操作。
  • iostat:查看磁盘 I/O 统计信息。
  • vmstat:查看系统虚拟内存状态。

  • 监控工具的使用

  • tophtop 可用于监控 CPU 和内存使用情况。
  • iostatvmstat 可用于分析系统性能和瓶颈。

日志分析工具

日志分析工具是开发和运维中不可或缺的一部分,能够帮助你快速定位问题和分析系统行为。

  • 常用日志分析工具
  • grep:搜索日志内容。
  • awk:对日志内容进行分析。
  • sed:对日志内容进行替换和格式化。

  • 日志分析示例

grep "error" /var/log/messages
awk '{print $1}' /var/log/messages
  • 这些命令可以用于分析日志中的错误信息和时间戳。

实战技巧与最佳实践

在使用 Linux 命令和工具时,掌握一些实战技巧和最佳实践能够显著提升工作效率。

使用管道和重定向

管道(|)和重定向(>>>)是 Shell 脚本中常用的工具,能够将一个命令的输出作为另一个命令的输入。

  • 管道示例
grep "error" /var/log/messages | awk '{print $1}'
  • 重定向示例
echo "Hello" > output.txt
echo "World" >> output.txt
  • >:覆盖写入文件。
  • >>:追加写入文件。

使用脚本实现自动化

通过编写 Shell 脚本,可以实现任务的自动化,减少重复劳动。

  • 脚本示例
#!/bin/bash
echo "Starting backup..."
tar -czf /backup/$(date +%Y-%m-%d).tar.gz /data
echo "Backup completed."
  • 该脚本会创建一个以日期命名的压缩备份文件。

使用 Linux 命令进行调试

使用 Linux 命令进行调试是开发和运维中的一项重要技能。

  • 调试技巧
  • 使用 strace 跟踪系统调用。
  • 使用 gdb 调试程序。
  • 使用 ltrace 跟踪库调用。

  • 调试命令示例

strace -f -o log.txt ./my_program
gdb ./my_program
  • strace 可用于跟踪程序的系统调用。
  • gdb 是一个强大的调试工具,支持多种调试功能。

使用日志分析进行故障排查

日志分析是故障排查的重要手段,能够帮助你快速定位问题。

  • 日志分析技巧
  • 使用 grep 快速查找日志中的关键词。
  • 使用 awk 对日志内容进行格式化和分析。
  • 使用 sed 对日志内容进行替换和修改。

  • 日志分析命令示例

grep "error" /var/log/messages
awk '{print $1}' /var/log/messages
  • 这些命令可以用于分析日志中的错误信息和时间戳。

总结

掌握 Linux 常用命令 是每一个开发者和系统管理员的必修课。通过熟悉文件管理、文本处理、进程管理、系统信息、Shell 脚本和运维工具,你可以更高效地进行系统管理和开发工作。此外,了解 系统编程 的核心概念,如进程、线程、信号和 I/O 模型,能够帮助你编写高性能的系统应用。最后,掌握一些 实战技巧最佳实践,能够显著提升你的工作效率和代码质量。

关键字列表: Linux, 常用命令, 文件管理, 文本处理, 进程管理, Shell脚本, 系统编程, 信号处理, I/O模型, Docker