资讯动态

Linux 编程基本命令入门指南

发布时间:2026/9/27 21:35:41 来源:尧图企业网站定制
1. 引言Linux 是程序员日常开发中不可或缺的操作系统而 Ubuntu 作为最流行的 Linux 发行版之一凭借其易用性和强大的社区支持成为许多开发者入门 Linux 的首选。掌握 Linux 编程基本命令不仅能够提升日常开发效率更是理解系统运行机制、进行服务部署和脚本编写的基础。本文将从文件操作、权限管理、进程管理、网络工具和文本处理等维度系统梳理 Ubuntu 环境下最常用的编程相关命令。2. 文件与目录操作文件与目录操作是 Linux 使用中最基础也最频繁的命令几乎所有的开发工作都离不开对文件系统的管理。2.1 目录导航在终端中移动和查看目录是第一步常用命令如下pwd显示当前所在的工作目录路径。ls列出当前目录下的文件和子目录常用参数-l显示详细信息-a显示隐藏文件。cd切换目录例如cd /home/user/project进入指定目录cd ..返回上一级。pwd ls -la cd /home/user/project2.2 文件创建与编辑创建和编辑文件是编程中的高频操作Ubuntu 下常用的方式如下touch创建空文件或更新文件时间戳。mkdir创建目录-p参数可递归创建多级目录。nano / vim终端文本编辑器用于直接编辑文件内容。touch main.c mkdir -p src/include nano main.c2.2.1 vim 命令详解vim 是 Linux 下最强大的终端文本编辑器之一几乎所有主流 Linux 发行版都预装了 vim 或其精简版 vi。虽然上手有一定学习曲线但一旦掌握其操作模式编辑效率会远超普通编辑器。vim 的核心设计理念是「模式编辑」即在不同模式下完成不同的操作。2.2.1.1 三种基本模式vim 主要包含三种模式理解这三种模式是使用 vim 的前提普通模式Normalvim 启动后默认进入的模式用于移动光标、删除、复制、粘贴等操作。按Esc可从其他模式返回普通模式。插入模式Insert用于输入和编辑文本内容。在普通模式下按i进入按Esc退出。命令行模式Command-line用于保存、退出、搜索、替换等操作。在普通模式下按:进入输入命令后按回车执行。# 打开文件若文件不存在则新建 vim main.c # 打开文件并跳转到第 20 行 vim 20 main.c2.2.1.2 光标移动在普通模式下除了方向键vim 还提供了更高效的按键移动方式让手指无需离开键盘主区域h / j / k / l分别向左、下、上、右移动一个字符。w / b按单词向前 / 向后跳转。0 / $跳到行首 / 行尾。gg / G跳到文件第一行 / 最后一行。Ctrl f / Ctrl b向下 / 向上翻页。# 在普通模式下输入数字 命令可重复执行 # 例如 5j 表示向下移动 5 行3w 表示向后跳 3 个单词 5j 3w2.2.1.3 文本编辑操作vim 的编辑操作遵循「动词 对象」的组合逻辑例如d删除w单词表示删除一个单词i / a在光标前 / 后进入插入模式。o / O在光标下方 / 上方新建一行并进入插入模式。x删除光标所在字符。dd删除光标所在整行。dw删除光标到单词末尾的内容。yy复制光标所在整行。p在光标下方粘贴剪贴板内容。u撤销上一步操作Ctrl r重做。# 普通模式下的常用编辑命令 dd # 删除当前行 yy # 复制当前行 p # 粘贴 u # 撤销 Ctrl r # 重做2.2.1.4 搜索与替换vim 支持强大的搜索和替换功能在普通模式下即可快速定位和批量修改文本/pattern向下搜索指定模式按n跳转到下一个匹配N跳转到上一个匹配。?pattern向上搜索指定模式。:s/old/new/g替换当前行所有匹配的 old 为 new。:%s/old/new/g替换整个文件中所有匹配的 old 为 new。:%s/old/new/gc替换前逐个询问确认。# 搜索 TODO 关键字 /TODO # 将整个文件中的 foo 替换为 bar :%s/foo/bar/g # 替换前逐个确认 :%s/foo/bar/gc2.2.1.5 保存与退出vim 的保存和退出操作都在命令行模式下完成常用命令如下:w保存文件。:q退出 vim若有未保存修改会提示错误。:wq保存并退出。:q!强制退出不保存修改。:set number显示行号:set nonumber取消行号。:w # 保存 :q # 退出 :wq # 保存并退出 :q! # 强制退出不保存 :set number # 显示行号vim 的功能远不止于此它还支持多窗口、宏录制、插件扩展等高级特性。对于初学者建议先熟练掌握上述基本操作再逐步探索更高级的功能。日常编辑代码时vim 配合ctags、cscope等工具还能实现代码跳转和符号检索是 Linux 下高效编程的利器。2.3 文件复制、移动与删除对文件进行复制、移动和删除时需要特别注意路径和权限cp复制文件或目录-r参数递归复制目录。mv移动文件或重命名。rm删除文件-r递归删除目录-f强制删除。cp main.c main_backup.c mv main.c src/main.c rm -rf build/3. 文件内容查看与搜索阅读源码、查看日志和搜索关键字是编程中极为常见的需求掌握高效的内容查看命令能显著提升工作效率。3.1 内容查看cat一次性输出整个文件内容适合小文件。less / more分页查看大文件less支持上下翻页和搜索。head / tail查看文件开头或末尾若干行tail -f常用于实时跟踪日志。cat config.json less app.log tail -f /var/log/syslog3.2 内容搜索在代码库中快速定位关键字主要依赖 grep 命令grep -rn TODO src/ grep -i error app.log | head -20其中-r表示递归搜索目录-n显示行号-i忽略大小写。4. 权限管理Linux 的多用户机制决定了权限管理的重要性。在开发和部署过程中经常需要调整文件或目录的读写执行权限。4.1 查看权限使用ls -l可以查看文件的权限信息输出中的第一列如-rw-r--r--即表示文件类型和权限位。该字符串共 10 个字符含义如下第 1 位文件类型-表示普通文件d表示目录l表示符号链接。第 2-4 位所有者user的读、写、执行权限。第 5-7 位所属组group的读、写、执行权限。第 8-10 位其他用户others的读、写、执行权限。例如-rw-r--r--表示普通文件所有者可读写组用户和其他用户只可读。4.2 修改权限chmod 命令用于修改文件或目录的权限支持符号模式和数字模式两种写法。4.2.1 符号模式符号模式通过u所有者、g组、o其他、a全部指定对象配合添加、-移除、设置操作符和r、w、x权限位进行修改# 给所有者添加执行权限 chmod ux script.sh # 移除组用户和其他用户的写权限 chmod go-w file.txt # 给所有用户设置读写执行权限 chmod arwx app.sh # 同时设置多个权限所有者可读写执行组用户可读执行 chmod urwx,grx file.txt4.2.2 数字模式数字模式使用八进制数表示权限其中r4、w2、x1将三类用户的权限值相加即可。例如755表示所有者可读写执行7421组用户和其他用户可读可执行541。# 所有者可读写执行组用户和其他用户可读可执行 chmod 755 deploy.sh # 所有者可读写组用户和其他用户只可读 chmod 644 config.txt # 递归修改目录及其内部所有文件的权限 chmod -R 755 project/4.2.3 修改所有者和所属组chown 用于修改文件的所有者和所属组chgrp 用于单独修改所属组# 修改文件所有者为 user所属组为 group chown user:group file.txt # 只修改所有者 chown user file.txt # 只修改所属组 chgrp group file.txt # 递归修改目录及其内部所有文件 chown -R user:group project/数字模式中r4、w2、x1755表示所有者可读写执行组用户和其他用户可读可执行。修改权限通常需要文件所有者或 root 权限使用sudo可提升权限执行。5. 用户管理Linux 是多用户操作系统用户和用户组的管理是系统安全与权限控制的基础。在开发和部署过程中经常需要创建用户、设置密码、分配用户组以及切换身份。5.1 用户与用户组查看查看当前系统用户和用户组信息常用命令如下whoami显示当前登录用户的用户名。id显示当前用户的 UID用户 ID、GID组 ID以及所属的用户组。who / w查看当前登录到系统的用户及其活动信息。groups查看指定用户所属的用户组。whoami id who groups user15.2 创建与删除用户创建和删除用户需要使用 root 权限通常配合sudo执行useradd创建新用户-m参数同时创建用户主目录-s指定登录 Shell。passwd设置或修改用户密码。userdel删除用户-r参数同时删除用户主目录和邮件目录。# 创建用户 user1并创建主目录、指定 bash 作为登录 Shell sudo useradd -m -s /bin/bash user1 # 为 user1 设置密码 sudo passwd user1 # 删除用户 user1 及其主目录 sudo userdel -r user15.3 用户组管理用户组用于将多个用户归为一类便于统一分配权限。常用命令如下groupadd创建新的用户组。usermod修改用户属性-aG参数将用户追加到指定用户组。gpasswd管理用户组成员-a添加成员-d移除成员。groupdel删除用户组。# 创建用户组 developers sudo groupadd developers # 将 user1 追加到 developers 组 sudo usermod -aG developers user1 # 将 user2 添加到 developers 组 sudo gpasswd -a user2 developers # 从 developers 组移除 user2 sudo gpasswd -d user2 developers # 删除用户组 developers sudo groupdel developers5.4 切换用户与提权在日常操作中经常需要在不同用户之间切换或以管理员身份执行命令su切换用户su - user1切换到 user1 并加载其环境变量。sudo以其他用户默认 root身份执行单条命令sudo -i切换到 root 交互式 Shell。# 切换到 user1 用户 su - user1 # 以 root 权限执行命令 sudo apt update # 切换到 root 交互式 Shell sudo -i用户管理是权限管理的前置环节合理规划用户和用户组能够为后续的文件权限控制和安全策略落地打下良好基础。6. 进程管理程序运行后即成为进程开发调试和线上运维都离不开对进程的查看与控制。6.1 查看进程ps查看当前终端相关的进程快照ps aux查看系统全部进程。top / htop动态实时查看系统进程和资源占用。pgrep按名称查找进程 PID。ps aux | grep python pgrep -f app.jar top6.2 终止进程kill 命令通过信号控制进程默认发送 SIGTERM 终止信号kill 1234 kill -9 1234 pkill -f node server.js其中-9表示强制终止适用于进程无响应的情况。7. 网络相关命令网络调试是编程中绕不开的环节无论是本地服务联调还是线上接口排查都需要借助网络命令定位问题。7.1 连通性与端口ping测试主机连通性。curl发送 HTTP 请求测试接口非常方便。netstat / ss查看端口监听和网络连接状态。ping -c 4 baidu.com curl -X POST http://localhost:8080/api/login -d {user:admin} ss -tlnp | grep 80807.2 远程连接与文件传输ssh 用于远程登录服务器scp 用于跨机器拷贝文件ssh user192.168.1.100 scp main.c user192.168.1.100:/home/user/8. 文本处理三剑客grep、sed、awk 被称为 Linux 文本处理三剑客是编写 Shell 脚本和处理日志数据的核心工具。三者各有所长grep 擅长按模式过滤文本行sed 擅长对文本流进行编辑转换awk 则擅长按列对结构化文本做分析统计。掌握这三个工具能极大提升日常开发与运维中的文本处理效率。8.1 grep 文本搜索grep 用于在文件或标准输入中按正则表达式匹配并输出符合条件的行是日志排查和代码检索最常用的命令。基本用法grep pattern file在文件中查找匹配行。常用参数-i忽略大小写-n显示行号-r递归搜索目录-v反向匹配输出不包含模式的行-c统计匹配行数。扩展正则使用-E启用扩展正则支持|、、?等元字符。# 递归搜索 src/ 目录下所有包含 TODO 的文件并显示行号 grep -rn TODO src/ # 在 app.log 中忽略大小写搜索 error只取前 20 行 grep -i error app.log | head -20 # 使用扩展正则匹配 ERROR 或 FATAL 级别的日志 grep -E ERROR|FATAL system.log # 反向匹配过滤掉以 # 开头的注释行 grep -v ^# config.conf其中-r表示递归搜索目录-n显示行号-i忽略大小写-E使用扩展正则-v反向匹配。8.2 sed 流编辑sed 是一个流编辑器它逐行读取文本按脚本指令对每一行进行替换、删除、插入等操作适合批量修改文件或处理管道数据流。替换s/old/new/g将每行中的 old 替换为 new末尾g表示全局替换不加则只替换每行第一个匹配。删除Nd删除第 N 行/pattern/d删除匹配模式的行。打印-n配合p只输出指定行例如sed -n 10,20p打印第 10 到 20 行。原地修改-i直接修改文件修改前建议先备份如sed -i.bak s/old/new/g file。# 将 config.txt 中所有 old 替换为 new 并直接写回文件 sed -i s/old/new/g config.txt # 只打印 app.log 的第 10 到 20 行 sed -n 10,20p app.log # 删除 config.conf 中所有以 # 开头的注释行 sed /^#/d config.conf # 将 server.conf 中的 127.0.0.1 替换为 0.0.0.0修改前自动备份为 .bak sed -i.bak s/127.0.0.1/0.0.0.0/g server.confsed 的替换语法中s表示替换操作g表示全局替换^#匹配以 # 开头的注释行d表示删除。8.3 awk 文本分析awk 是一种强大的文本分析语言它把输入按行和列字段拆分适合处理日志、表格等结构化文本支持条件判断、循环和内置函数。字段访问默认按空白符分列$1、$2表示第 1、2 列$0表示整行。指定分隔符-F指定字段分隔符例如-F:按冒号分列。条件过滤awk /pattern/ {action}只对匹配模式的行执行动作。内置变量NR当前行号NF当前行字段数FS字段分隔符。# 打印 access.log 中每行的第 1 列和第 4 列如 IP 和时间 awk {print $1, $4} access.log # 以冒号为分隔符打印 /etc/passwd 中每行的第 1 列用户名 awk -F: {print $1} /etc/passwd # 只处理第 3 列大于 100 的行打印第 1 列和第 3 列 awk $3 100 {print $1, $3} data.txt # 累加第 2 列的值所有行处理完后输出总和 awk {sum $2} END {print 总和:, sum} sales.txt其中-F:指定冒号作为分隔符$3 100表示只处理第 3 列大于 100 的行END块在所有行处理完后执行常用于汇总统计。8.4 三剑客组合实战实际工作中三个工具经常配合管道使用形成强大的文本处理流水线。例如统计日志中某个接口的请求次数、提取特定字段并排序去重等。# 统计 access.log 中各 IP 的访问次数并排序 # 提取第 1 列(IP) → 排序 → 去重计数 → 按次数降序排列 awk {print $1} access.log | sort | uniq -c | sort -rn # 提取 ERROR 级别日志中的时间戳和消息 # 先用 grep 过滤出 ERROR 行再用 awk 提取前两列(时间)和最后一列(消息) grep ERROR app.log | awk {print $1, $2, $NF} # 用 sed 清洗数据后交给 awk 统计 # 先用 sed 去掉方括号再提取第 2 列并排序去重计数 sed s/[//g; s/]//g data.log | awk {print $2} | sort | uniq -c通过管道将 grep 的过滤、sed 的编辑和 awk 的分析串联起来可以在一行命令中完成从原始日志到统计结果的完整处理链路这也是 Shell 脚本高效处理文本的核心思路。9. 压缩与解压在软件分发、日志归档和备份场景中压缩命令使用频率很高。tar -czvf project.tar.gz project/ tar -xzvf project.tar.gz unzip release.zip其中-c创建归档-x解压-z使用 gzip 压缩-v显示过程-f指定文件名。10. 系统信息与软件管理了解系统资源和安装软件是开发环境搭建的基础能力。10.1 系统信息uname -a df -h free -h分别用于查看内核版本、磁盘使用情况和内存占用。10.2 软件包管理Ubuntu 使用 apt 包管理器安装、更新和卸载软件sudo apt update sudo apt install build-essential sudo apt remove vim11. 总结本文围绕 Ubuntu 环境下编程常用的 Linux 命令进行了系统梳理涵盖文件操作、权限管理、进程控制、网络调试、文本处理和软件管理等核心场景。这些命令是日常开发、脚本编写和线上问题排查的基础工具。建议读者在真实终端中多加练习逐步形成肌肉记忆同时结合man命令查阅每个工具的详细文档不断深化对 Linux 系统的理解。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑