一、为什么先学命令行
Linux 应用开发离不开命令行。无论是编译、部署、查看日志、定位进程、分析网络,最终都会回到终端。命令行不是为了炫技,而是为了让你能直接控制系统。
入门 Linux 开发,建议先熟悉这些能力:
- 能在目录中快速移动和查找文件。
- 能查看文件内容和日志。
- 能理解权限、用户、进程和环境变量。
- 能把常用命令组合成脚本。
- 能读懂构建脚本、启动脚本和部署脚本。
二、目录和文件操作
常用命令:
1 | pwd |
说明:
pwd:显示当前目录。ls -la:查看所有文件和权限。cd:切换目录。mkdir:创建目录。cp:复制文件。mv:移动或重命名。rm:删除文件。
删除命令要特别小心:
1 | rm -rf build |
rm -rf 会递归删除目录,不会进入回收站。开发中通常只用它删除构建目录、临时目录,不要在不确定路径时执行。
三、查看文件内容
查看小文件:
1 | cat app.conf |
分页查看:
1 | less app.log |
查看文件开头和结尾:
1 | head -n 20 app.log |
实时查看日志:
1 | tail -f app.log |
开发后台服务时,tail -f 非常常用。程序启动失败、配置错误、连接失败,通常都能先从日志里找到线索。
四、搜索文件和文本
查找文件:
1 | find . -name "*.c" |
搜索文本:
1 | grep -rn "main" . |
如果安装了 ripgrep,建议用 rg:
1 | rg "socket" |
rg 通常比 grep -r 更快,也会默认忽略 .git、构建目录等无关内容。
五、管道和重定向
管道把一个命令的输出交给另一个命令:
1 | ps aux | grep my_app |
重定向输出到文件:
1 | ./app > app.log |
追加输出:
1 | ./app >> app.log |
常见含义:
>:覆盖写入标准输出。>>:追加写入标准输出。2>:重定向标准错误。2>&1:把标准错误合并到标准输出。
六、环境变量
环境变量用于向程序传递运行环境。
查看变量:
1 | echo $PATH |
临时设置:
1 | APP_ENV=dev ./app |
当前终端长期有效:
1 | export APP_ENV=dev |
常见变量:
PATH:命令搜索路径。HOME:用户目录。LD_LIBRARY_PATH:动态库搜索路径。PKG_CONFIG_PATH:pkg-config查找.pc文件的路径。
动态库找不到时,常见临时处理方式:
1 | LD_LIBRARY_PATH=./lib ./app |
七、Shell 脚本入门
创建 run.sh:
1 |
|
加执行权限:
1 | chmod +x run.sh |
运行:
1 | ./run.sh |
set -euo pipefail 的作用:
-e:命令失败时退出。-u:使用未定义变量时报错。pipefail:管道中任意命令失败都算失败。
开发脚本建议默认加上这行,避免错误被吞掉。
八、脚本参数
示例:
1 |
|
使用:
1 | ./dev.sh build |
这种脚本很适合统一项目命令,避免每个人记不同的构建方式。
九、入门检查清单
掌握以下内容后,再继续学习 C/C++ 构建、系统调用和网络编程会顺很多:
- 能用
cd、ls、find、rg找文件。 - 能用
cat、less、tail -f看日志。 - 能理解
>、>>、2>&1。 - 能设置和读取环境变量。
- 能写简单 Shell 脚本。
- 能用
ps、kill管理进程。 - 能看懂项目里的
build.sh、run.sh、deploy.sh。
Linux 开发的第一步不是写复杂程序,而是能在系统里高效移动、观察和控制。
- 本文链接: https://blog.hansong.icu/2026/06/21/Linux_Dev_Shell_Basics/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。