Linux 笔记
阅读 | 共452字,阅读约
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命令查看帮助文档的核心依赖。
主要功能
- 命令文档:包含所有基础 Linux 命令的使用说明(如
ls,cp,grep等)。 - 系统调用:记录内核提供的系统调用接口(如
open,read,write等)。 - 库函数:解释 C 库和其他系统库的函数用法(如
printf,malloc等)。 - 配置文件:说明系统配置文件的格式和参数(如
/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:开发相关的手册页(如系统调用、库函数等)。
扩展支持(可选)
中文手册:安装中文翻译包:
sudo apt install manpages-zh使用时通过
-M选项指定语言:man -M /usr/share/man/zh_CN ls # 查看 ls 命令的中文手册特定领域手册:例如:
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 # 如果有中文手册,将显示中文内容
问题排查
确保中文手册已安装:
sudo apt install manpages-zh检查语言环境设置:
locale # 查看当前语言设置 # 如果没有zh_CN.UTF-8,可添加: sudo locale-gen zh_CN.UTF-8手动指定语言测试:
MANPATH="/usr/share/man/zh_CN" man ls # 临时指定中文路径 LANG=zh_CN.UTF-8 man ls # 临时指定中文环境
注意事项
中英文混合显示:如果中文手册翻译不完整,部分内容会显示英文(这是正常现象)。
系统默认语言:如果系统默认语言非中文,可能需要同时设置
LC_ALL或LANG变量。多语言切换
若需要灵活切换中英文,可以编写一个 shell 函数:
# 在~/.bashrc中添加 function cman() { MANPATH="/usr/share/man/zh_CN" man "$@" }之后使用
cman ls查看中文手册,
man ls查看英文手册。
配置完成后,每次打开终端使用man命令都会优先显示中文手册(如果存在)。
在使用 nano 编辑器编辑文件(比如 ~/.bashrc)后,可按以下步骤退出:
- 保存文件:按下
Ctrl + O(即按住Ctrl键的同时按O键),之后按Enter键确认文件名。 - 退出编辑器:按下
Ctrl + X就能退出nano。
要是你不想保存对文件所做的修改,在按下 Ctrl + X 后,当询问是否要保存修改时,输入 N(代表 “否”),接着按 Enter 键即可。
操作示意图
nano 编辑器界面
...[文件内容]...
^G 帮助 ^O 写入 ^W 搜索 ^K 剪切 ^T 拼写检查
^X 退出 ^R 读取 ^\ 替换 ^U 粘贴 ^J 段落格式
^O意思是Ctrl + O(用于保存)。^X表示Ctrl + X(用于退出)。