Linux 常用命令大全:从入门到精通 - 51CTO博客

2025-12-23 18:49:59 · 作者: AI Assistant · 浏览: 62

本文旨在为在校大学生和初级开发者提供一份详尽的Linux命令指南,涵盖文件管理、文本处理、进程管理等核心领域,结合实际案例讲解命令的使用场景与最佳实践,助力读者在Linux系统中高效工作与开发。

Linux命令:系统管理与开发的基石

Linux命令是操作系统中不可或缺的工具,它们是开发者、系统管理员和运维工程师的利器。掌握Linux命令不仅可以提升工作效率,还能加深对操作系统底层机制的理解。本文将系统梳理常用命令,包括文件管理、文本处理、进程管理等模块,并结合Shell脚本与系统编程的相关知识,帮助读者构建扎实的Linux技能基础。

文件管理命令:掌控数据的基石

文件管理是Linux操作中最为基础的部分,几乎所有操作都围绕文件和目录展开。以下是几个高频使用的文件管理命令:

ls:列出目录内容

ls是查看目录内容的核心命令。它支持多种参数,如-l用于详细列表,-a显示隐藏文件,-h以人类可读的格式显示文件大小等。例如:

ls -l

此命令会列出当前目录下的文件及子目录的详细信息,包括权限、所有者、大小、修改日期等。

cd:切换目录

cd用于切换当前工作目录。例如:

cd /home/user

此命令将工作目录切换到/home/user。在开发和运维工作中,熟练使用cd命令可以大幅提升效率。

mkdir:创建目录

mkdir用于创建新目录。例如:

mkdir new_folder

创建一个名为new_folder的目录。如果需要创建多级目录,可以使用-p参数:

mkdir -p path/to/new_folder

该命令将自动创建路径中不存在的目录。

rm:删除文件或目录

rm用于删除文件或目录。例如:

rm file.txt

删除名为file.txt的文件。若要删除目录,需使用-r参数(递归删除):

rm -r folder_name

此命令会删除folder_name及其内容。

cp:复制文件或目录

cp用于复制文件或目录。例如:

cp source.txt destination.txt

source.txt复制到destination.txt。若要复制目录,需使用-r参数:

cp -r source_dir destination_dir

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

mv用于移动文件或目录,或重命名文件。例如:

mv old_name.txt new_name.txt

将文件old_name.txt重命名为new_name.txt。若要移动文件到另一个目录,可以这样操作:

mv file.txt /home/user/

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

touch用于创建一个空文件或更新文件的时间戳。例如:

touch new_file.txt

此命令创建一个名为new_file.txt的空文件,常用于测试或标记文件。

find:查找文件或目录

find是用于在指定目录中查找文件或目录的强大工具。例如:

find /home/user -name "log.txt"

该命令会查找/home/user目录下所有名为log.txt的文件。

文本处理命令:高效处理数据的利器

文本处理是Linux系统中使用频率极高的任务,许多命令专门用于处理文本数据。以下是一些常见且实用的文本处理命令:

grep:搜索文本内容

grep用于在文件中搜索特定的字符串。例如:

grep "error" log.txt

该命令会在log.txt中查找所有包含error的行。

sort:排序文本内容

sort用于对文本内容进行排序。例如:

sort file.txt

此命令会对file.txt中的内容按字母顺序排序。可以使用-n参数对数字进行排序:

sort -n numbers.txt

uniq:去除重复行

uniq用于去除文本中重复的行。例如:

uniq file.txt

该命令会输出file.txt中不重复的行。通常与sort结合使用:

sort file.txt | uniq

cut:提取文本中的特定部分

cut用于提取文本中的特定部分,如字段、字符或字节。例如:

cut -d',' -f1 file.csv

此命令会从file.csv中提取以逗号为分隔符的第一列。

sed:流编辑器

sed是一个流编辑器,可以用来进行文本替换、删除、插入等操作。例如:

sed 's/old/new/' file.txt

file.txt中所有old替换为new

awk:文本处理工具

awk是一个用于处理文本的强大工具,可以按字段进行计算和格式化。例如:

awk '{print $1}' file.txt

该命令会输出file.txt中每行的第一个字段。

tr:转换或删除字符

tr用于转换或删除字符。例如:

tr 'a-z' 'A-Z' < file.txt

file.txt中的所有小写字母转换为大写字母。

进程管理命令:掌控系统资源的工具

Linux系统中,进程管理是不可或缺的一部分。以下是一些常用且重要的进程管理命令:

ps:显示当前进程状态

ps用于显示当前运行的进程状态。例如:

ps aux

该命令会列出所有用户的进程信息,包括进程ID、用户、CPU和内存使用情况等。

top:实时查看进程资源使用情况

top用于实时查看系统的进程资源使用情况,包括CPU、内存等。例如:

top

该命令会启动一个交互式界面,显示系统中运行的进程及其资源占用情况。

kill:终止进程

kill用于终止进程。例如:

kill 1234

终止进程ID为1234的进程。如果进程无法正常终止,可以使用-9参数强制终止:

kill -9 1234

nice:调整进程优先级

nice用于调整进程的优先级。例如:

nice -n 10 ./my_program

该命令会将my_program的优先级降低10个等级,使其在资源分配上更加“谦让”。

nohup:后台运行进程

nohup用于在终端关闭后继续运行进程。例如:

nohup my_program &

该命令会将my_program在后台运行,并且即使终端关闭,进程也不会停止。

bgfg:后台与前台进程切换

bg用于将进程置于后台运行,fg用于将进程切换到前台。例如:

./my_program &
bg

my_program在后台运行,然后使用bg命令将其置于后台。

fg

将后台运行的进程切换到前台。

Shell脚本:自动化运维的核心

Shell脚本是Linux系统中实现自动化运维的关键工具。以下是一些编写高效Shell脚本的最佳实践:

命令组合与管道

Shell脚本中常用的命令组合与管道可以大大提高效率。例如:

ps aux | grep "my_program" | awk '{print $1}'

该命令会查找所有包含my_program的进程,并输出其用户信息。

条件判断与循环

在Shell脚本中,条件判断和循环常用于逻辑控制。例如:

if [ -f "file.txt" ]; then
    echo "File exists"
else
    echo "File not found"
fi

该脚本会检查file.txt是否存在,并输出相应的信息。

函数定义

定义函数可以提高脚本的可读性和可维护性。例如:

my_function() {
    echo "This is a function"
}
my_function

该函数会在调用时输出This is a function

错误处理

在编写Shell脚本时,错误处理是必不可少的。例如:

if ! command -v my_program > /dev/null 2>&1; then
    echo "Command not found"
    exit 1
fi

该脚本会检查my_program是否存在,若不存在则输出错误信息并退出。

系统编程:进程、线程与信号处理

在Linux系统编程中,进程和线程是构建复杂应用的基础。以下是一些关键概念与技术

进程创建与管理

进程是操作系统中执行程序的基本单位。使用fork()函数可以创建新进程。例如:

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

int main() {
    pid_t pid = fork();
    if (pid == 0) {
        printf("Child process\n");
    } else {
        printf("Parent process\n");
    }
    return 0;
}

此程序会创建一个子进程,并分别输出Child processParent process

线程管理

线程是进程中的执行单元,线程之间共享进程的内存空间。使用pthread_create()函数可以创建新线程。例如:

#include <pthread.h>
#include <stdio.h>

void* thread_function(void* arg) {
    printf("Thread is running\n");
    return NULL;
}

int main() {
    pthread_t thread;
    pthread_create(&thread, NULL, thread_function, NULL);
    pthread_join(thread, NULL);
    return 0;
}

此程序创建一个线程并等待其完成。

信号处理

信号是Linux中用于进程间通信的一种机制。使用signal()函数可以注册信号处理函数。例如:

#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信号(通常是Ctrl+C)时调用handle_signal函数。

I/O模型

I/O模型是系统编程中重要的概念,包括阻塞I/O、非阻塞I/O、I/O多路复用、异步I/O等。理解这些模型有助于优化程序性能。例如,使用select()函数实现I/O多路复用:

#include <sys/select.h>
#include <unistd.h>

int main() {
    fd_set readfds;
    FD_ZERO(&readfds);
    FD_SET(0, &readfds);
    int max_fd = 0;
    int activity;
    while (1) {
        activity = select(1, &readfds, NULL, NULL, NULL);
        if (activity < 0) {
            perror("select error");
            break;
        }
        if (activity > 0) {
            char buffer[1024];
            int bytes_read = read(0, buffer, sizeof(buffer));
            if (bytes_read > 0) {
                printf("Read: %s\n", buffer);
            }
        }
    }
    return 0;
}

该程序使用select()函数监听标准输入,一旦有数据输入则读取并输出。

运维工具:提升效率的关键

在Linux的运维工作中,Docker、监控工具和日志分析是提升效率的重要工具。以下是一些关键工具与使用场景

Docker:容器化部署的利器

Docker是一个用于容器化的平台,可以打包应用及其依赖,确保在不同环境中的一致性。例如:

docker run -d -p 80:80 nginx

该命令会运行一个Nginx容器,并将容器的80端口映射到主机的80端口。

监控工具:确保系统稳定运行

监控工具如tophtopvmstatiostat等可以帮助我们实时监控系统的资源使用情况。例如:

top

该命令会实时显示系统的进程信息和资源使用情况。

日志分析:排查问题的重要手段

日志分析是运维工作中不可或缺的一部分。使用grepawk等工具可以快速分析日志。例如:

grep "error" /var/log/syslog

该命令会查找/var/log/syslog中所有包含error的日志条目。

结语:Linux命令与系统编程的结合

Linux命令与系统编程是相辅相成的。掌握常用命令可以帮助我们高效地进行系统管理和开发,而系统编程则让我们能够深入理解操作系统的工作原理。通过结合这两者,我们可以构建更为强大和稳定的系统。

关键字列表:Linux命令, 文件管理, 文本处理, 进程管理, Shell脚本, 系统编程, Docker, 监控工具, 日志分析, 信号处理, I/O模型