Linux 笔记

Posted on Jul 11, 2025

阅读 | ,阅读约 3 分钟

Linux权限

Linux的权限系统堪称数字魔法

  • 读®=4 / 写(w)=2 / 执行(x)=1
  • 用户权限=所有者+所属组+其他人

比如chmod 764 filename表示:

  • 所有者:7=4+2+1(读写执行)
  • 所属组:6=4+2(读写)
  • 其他人:4(只读)

Ubuntu编程基础

安装 GCC 编译器

一、更新软件源列表

要保证使用的是最新的软件包信息,可在终端执行以下命令

sudo apt update
二、安装 GCC 及相关工具

借助build-essential软件包组,能够便捷地安装 GCC、G++ 编译器以及 Make 等开发工具。在终端输入:

sudo apt install build-essential

一、什么是 build-essential?

build-essential 是 Ubuntu 和其他基于 Debian 的 Linux 发行版中的一个元包,它包含了编译软件所必需的工具和库。这个包主要面向开发人员,尤其是那些需要从源代码编译软件的开发者。

二、build-essential 包含哪些工具和库?

build-essential 包含以下工具和库:

GNU 调试器(gdb):用于调试程序。 GNU 编译器集合(gcc, g++):用于编译 C 和 C++ 程序。 make:用于自动化编译过程。 libc6-dev:GNU C 库,包含处理和编译 C 和 C++ 脚本所需的头文件和开发库。 dpkg-dev:用于解压、构建甚至上传 DEB 源包。

或者直接单独安装

sudo apt install gcc
三、验证安装结果

安装完成后,可通过查看 GCC 版本来确认是否安装成功,在终端运行:

gcc --version

安装库函数文档

man-pages 是 Linux 系统中提供命令手册(manual pages)的基础软件包。这些手册页为系统命令、库函数、系统调用等提供了详细的文档说明。在 Ubuntu 系统中,man-pages 包是使用 man 命令查看帮助文档的核心依赖。

主要功能
  1. 命令文档:包含所有基础 Linux 命令的使用说明(如 ls, cp, grep 等)。
  2. 系统调用:记录内核提供的系统调用接口(如 open, read, write 等)。
  3. 库函数:解释 C 库和其他系统库的函数用法(如 printf, malloc 等)。
  4. 配置文件:说明系统配置文件的格式和参数(如 /etc/passwd, /etc/fstab 等)。
man 手册级别分类
级别编号内容类型示例
1用户命令(User Commands):可在 shell 中直接执行的命令(二进制程序或脚本)ls(1)cd(1)grep(1)
2系统调用(System Calls):内核提供的函数(供程序调用,用户一般不直接使用)open(2)read(2)fork(2)
3库函数(Library Functions):C 标准库或其他库中的函数printf(3)malloc(3)fopen(3)
4特殊文件(Special Files):主要是 /dev 目录下的设备文件null(4)tty(4)loop(4)
5文件格式 / 配置文件(File Formats):文件的结构或配置文件语法passwd(5)/etc/passwd 格式)、crontab(5)
6游戏(Games):系统预装的小游戏相关文档fortune(6)sl(6)
7杂项(Miscellaneous):其他无法归类的内容,如协议、宏、惯例等regex(7)(正则表达式语法)、man(7)
8系统管理命令(System Administration):通常需要 root 权限的命令ifconfig(8)reboot(8)useradd(8)
如何使用级别编号?

如果同一名称在多个级别中存在文档(例如 printf 既是 C 库函数(级别 3),也是 shell 命令(级别 1)),可以通过指定级别编号来精确查看:

# 查看级别 1 的 printf(shell 命令)
man 1 printf

# 查看级别 3 的 printf(C 库函数)
man 3 printf

如果不指定级别,man 会按默认优先级(通常从级别 1 开始)显示第一个找到的文档。

扩展:查看所有级别的文档

若想知道某个名称在哪些级别中有文档,可使用 -f 选项(等价于 whatis 命令):

# 查看 printf 存在的所有级别
man -f printf
# 输出示例:
# printf (1)  - format and print data
# printf (3)  - formatted output conversion
安装方法

在 Ubuntu/Debian 系统中,可以通过以下命令安装:

sudo apt update
sudo apt install man-db manpages manpages-dev
  • man-db:手册页的数据库和搜索工具(man 命令的核心实现)。
  • manpages:英文基础手册页。
  • manpages-dev:开发相关的手册页(如系统调用、库函数等)。
扩展支持(可选)
  1. 中文手册:安装中文翻译包:

    sudo apt install manpages-zh
    

    使用时通过 -M 选项指定语言:

    man -M /usr/share/man/zh_CN ls  # 查看 ls 命令的中文手册
    
  2. 特定领域手册:例如:

    sudo apt install manpages-posix  # POSIX 标准相关手册
    sudo apt install linux-doc       # Linux 内核文档
    
使用示例

查看 gcc 命令的手册:

man gcc

q 退出,/keyword 搜索关键词,n 下一个匹配项。

注意事项
  • 手册更新:系统更新时 man-pages 会同步更新,但旧版本系统可能存在文档滞后。
  • 第三方命令:如 docker, git 等工具的手册需单独安装对应软件包。
  • 在线补充:若本地手册不完善,可通过 info 命令或在线文档(如 tutorialspoint)补充。

项目地址:https://github.com/man-pages-zh/manpages-zh

汉化

要让 Ubuntu 系统每次使用man命令时都自动显示中文手册(前提是已安装manpages-zh包),可以通过修改环境变量配置来实现。以下是具体的设置方法:

方法一:修改用户级配置文件(推荐)

编辑当前用户的 bash 配置文件:

nano ~/.bashrc

在文件末尾添加以下内容:

# 设置man命令优先显示中文手册
export MANPATH="/usr/share/man/zh_CN:$MANPATH"
export LC_ALL=zh_CN.UTF-8  # 临时强制使用中文环境(可选,根据系统设置)

保存文件后,使配置生效:

source ~/.bashrc
方法二:修改系统级配置(所有用户生效)

创建一个新的环境变量配置文件:

sudo nano /etc/profile.d/manpath.sh

添加以下内容:

export MANPATH="/usr/share/man/zh_CN:$MANPATH"

保存后,使配置生效:

source /etc/profile
验证配置

执行以下命令查看手册路径是否包含中文路径:

echo $MANPATH
# 输出示例:/usr/share/man/zh_CN:/usr/local/man:/usr/share/man

测试中文手册是否正常显示:

man ls  # 如果有中文手册,将显示中文内容
问题排查
  1. 确保中文手册已安装

    sudo apt install manpages-zh
    
  2. 检查语言环境设置

    locale  # 查看当前语言设置
    # 如果没有zh_CN.UTF-8,可添加:
    sudo locale-gen zh_CN.UTF-8
    
  3. 手动指定语言测试

    MANPATH="/usr/share/man/zh_CN" man ls  # 临时指定中文路径
    LANG=zh_CN.UTF-8 man ls  # 临时指定中文环境
    
注意事项
  • 中英文混合显示:如果中文手册翻译不完整,部分内容会显示英文(这是正常现象)。

  • 系统默认语言:如果系统默认语言非中文,可能需要同时设置LC_ALLLANG变量。

  • 多语言切换

    若需要灵活切换中英文,可以编写一个 shell 函数:

     	# 在~/.bashrc中添加
       	function cman() {
          	MANPATH="/usr/share/man/zh_CN" man "$@"
    	}
    

    之后使用

        cman ls
    

    查看中文手册,

         man ls
    

    查看英文手册。

​ 配置完成后,每次打开终端使用man命令都会优先显示中文手册(如果存在)。

在使用 nano 编辑器编辑文件(比如 ~/.bashrc)后,可按以下步骤退出:

  1. 保存文件:按下 Ctrl + O(即按住 Ctrl 键的同时按 O 键),之后按 Enter 键确认文件名。
  2. 退出编辑器:按下 Ctrl + X 就能退出 nano

要是你不想保存对文件所做的修改,在按下 Ctrl + X 后,当询问是否要保存修改时,输入 N(代表 “否”),接着按 Enter 键即可。

操作示意图

nano 编辑器界面
...[文件内容]...

^G 帮助       ^O 写入       ^W 搜索       ^K 剪切       ^T 拼写检查
^X 退出       ^R 读取       ^\ 替换       ^U 粘贴       ^J 段落格式
  • ^O 意思是 Ctrl + O(用于保存)。
  • ^X 表示 Ctrl + X(用于退出)。