banner
NEWS LETTER

Linux 开发基础:命令行、Shell 与环境变量

Scroll down

一、为什么先学命令行

Linux 应用开发离不开命令行。无论是编译、部署、查看日志、定位进程、分析网络,最终都会回到终端。命令行不是为了炫技,而是为了让你能直接控制系统。

入门 Linux 开发,建议先熟悉这些能力:

  • 能在目录中快速移动和查找文件。
  • 能查看文件内容和日志。
  • 能理解权限、用户、进程和环境变量。
  • 能把常用命令组合成脚本。
  • 能读懂构建脚本、启动脚本和部署脚本。

二、目录和文件操作

常用命令:

1
2
3
4
5
6
7
pwd
ls -la
cd /path/to/project
mkdir build
cp a.txt b.txt
mv old.txt new.txt
rm file.txt

说明:

  • pwd:显示当前目录。
  • ls -la:查看所有文件和权限。
  • cd:切换目录。
  • mkdir:创建目录。
  • cp:复制文件。
  • mv:移动或重命名。
  • rm:删除文件。

删除命令要特别小心:

1
rm -rf build

rm -rf 会递归删除目录,不会进入回收站。开发中通常只用它删除构建目录、临时目录,不要在不确定路径时执行。

三、查看文件内容

查看小文件:

1
cat app.conf

分页查看:

1
less app.log

查看文件开头和结尾:

1
2
head -n 20 app.log
tail -n 50 app.log

实时查看日志:

1
tail -f app.log

开发后台服务时,tail -f 非常常用。程序启动失败、配置错误、连接失败,通常都能先从日志里找到线索。

四、搜索文件和文本

查找文件:

1
2
find . -name "*.c"
find . -name "CMakeLists.txt"

搜索文本:

1
2
grep -rn "main" .
grep -rn "error" ./logs

如果安装了 ripgrep,建议用 rg

1
2
rg "socket"
rg "TODO" src

rg 通常比 grep -r 更快,也会默认忽略 .git、构建目录等无关内容。

五、管道和重定向

管道把一个命令的输出交给另一个命令:

1
ps aux | grep my_app

重定向输出到文件:

1
2
3
./app > app.log
./app 2> error.log
./app > app.log 2>&1

追加输出:

1
./app >> app.log

常见含义:

  • >:覆盖写入标准输出。
  • >>:追加写入标准输出。
  • 2>:重定向标准错误。
  • 2>&1:把标准错误合并到标准输出。

六、环境变量

环境变量用于向程序传递运行环境。

查看变量:

1
2
echo $PATH
echo $HOME

临时设置:

1
APP_ENV=dev ./app

当前终端长期有效:

1
2
export APP_ENV=dev
./app

常见变量:

  • PATH:命令搜索路径。
  • HOME:用户目录。
  • LD_LIBRARY_PATH:动态库搜索路径。
  • PKG_CONFIG_PATHpkg-config 查找 .pc 文件的路径。

动态库找不到时,常见临时处理方式:

1
LD_LIBRARY_PATH=./lib ./app

七、Shell 脚本入门

创建 run.sh

1
2
3
4
5
6
7
#!/usr/bin/env bash
set -euo pipefail

APP_ENV=${APP_ENV:-dev}

echo "APP_ENV=$APP_ENV"
./build/app --config "./config/$APP_ENV.conf"

加执行权限:

1
chmod +x run.sh

运行:

1
2
./run.sh
APP_ENV=prod ./run.sh

set -euo pipefail 的作用:

  • -e:命令失败时退出。
  • -u:使用未定义变量时报错。
  • pipefail:管道中任意命令失败都算失败。

开发脚本建议默认加上这行,避免错误被吞掉。

八、脚本参数

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env bash
set -euo pipefail

cmd=${1:-help}

case "$cmd" in
build)
cmake -S . -B build
cmake --build build
;;
clean)
rm -rf build
;;
run)
./build/app
;;
*)
echo "usage: $0 {build|clean|run}"
exit 1
;;
esac

使用:

1
2
3
./dev.sh build
./dev.sh run
./dev.sh clean

这种脚本很适合统一项目命令,避免每个人记不同的构建方式。

九、入门检查清单

掌握以下内容后,再继续学习 C/C++ 构建、系统调用和网络编程会顺很多:

  • 能用 cdlsfindrg 找文件。
  • 能用 catlesstail -f 看日志。
  • 能理解 >>>2>&1
  • 能设置和读取环境变量。
  • 能写简单 Shell 脚本。
  • 能用 pskill 管理进程。
  • 能看懂项目里的 build.shrun.shdeploy.sh

Linux 开发的第一步不是写复杂程序,而是能在系统里高效移动、观察和控制。

其他文章
目录导航 置顶
  1. 1. 一、为什么先学命令行
  2. 2. 二、目录和文件操作
  3. 3. 三、查看文件内容
  4. 4. 四、搜索文件和文本
  5. 5. 五、管道和重定向
  6. 6. 六、环境变量
  7. 7. 七、Shell 脚本入门
  8. 8. 八、脚本参数
  9. 9. 九、入门检查清单
请输入关键词进行搜索