在服务器运维、嵌入式开发、云计算等多个技术领域,Linux 操作系统都占据着不可或缺的重要地位。它凭借开源、稳定、高效的特性,成为技术从业者必须掌握的技能之一。本文将从 Linux 的发展背景、核心特性出发,详细梳理常用基础指令、权限管理等关键知识,帮助新手快速入门 Linux。
一、Linux 起源与核心特性
1. 发展历程
Linux 的诞生与 UNIX 系统有着深厚的渊源。1968 年,Multics 操作系统的研发为后续系统奠定了多任务、多用户的基础理念。1969-1970 年,贝尔实验室的 Ken Tompson 和 Dennis Ritchie 基于 Multics 的核心思想开发出 UNIX 系统,随后经过多年发展,衍生出 BSD、System V 等多个分支。
1991 年,赫尔辛基大学的研究生 Linus Benedict Torvalds 发布了类似 UNIX 的操作系统内核,命名为 Linux。该系统受 Minix 启发,最初仅作为高级爱好者的实验项目,经过全球开发者的共同完善,1994 年正式发布 1.0 版本,逐步成长为如今影响深远的操作系统。
2. 核心特性
- 开源自由:遵循 GNU GPL 协议,任何人可自由使用、修改和分发源代码,这也是 Linux 快速发展的核心动力。
- 多用户多任务:支持同时多个用户登录,且能并行执行多个任务,适合服务器场景。
- 良好的可移植性:可运行于 x86、ARM 等多种硬件架构,广泛应用于服务器、嵌入式设备、移动终端等。
- 稳定高效:在高负载场景下仍能保持稳定运行,资源占用率低,是服务器操作系统的首选。
3. 主要发行版本
Linux 的发行版本众多,适配不同使用场景:
- Ubuntu:基于 Debian 衍生,界面友好、生态丰富,适合桌面用户和新手。
- CentOS:源自红帽企业级 Linux(RHEL)的开源版本,稳定可靠,常用于服务器领域。
- Red Hat Enterprise Linux(RHEL):商业发行版,提供专业技术支持,广泛应用于企业级场景。
- Kali Linux:专注于渗透测试和安全审计,预装大量安全工具,是安全从业者的常用系统。
- Fedora:红帽的测试平台,包含最新技术特性,适合追求前沿功能的用户。
二、Linux 基础操作:从连接到目录导航
1. 远程连接 Linux
在实际工作中,Linux 服务器通常通过远程终端管理,常用工具为 XShell:
- 下载安装 XShell(家庭 / 学校版免费),官网地址:https://www.netsarang.com/products/xsh_overview.html
- 查看 Linux 主机 IP:执行
ifconfig指令获取 IP 地址 - 远程登录:在 XShell 中输入
ssh [IP地址],按提示输入用户名和密码即可连接 - 复制粘贴技巧:复制
Ctrl+Insert,粘贴Shift+Insert(Ctrl+C/Ctrl+V不生效)
2. 目录结构与路径
Linux 的文件系统采用树状结构,核心目录功能如下:
/bin:存放系统基础可执行命令(如ls、pwd)/etc:系统配置文件目录(如网络配置、用户配置)/home:普通用户的家目录,每个用户对应独立子目录/root:超级用户(root)的家目录/var:存放经常变化的文件(如日志、缓存)/mnt:外部设备挂载目录(如 U 盘、光驱)
路径分为两种类型:
- 绝对路径 :从根目录
/开始,如/home/whb/test,定位唯一且不受当前目录影响 - 相对路径 :相对于当前工作目录,如
../temp(上级目录下的 temp 文件夹),使用更便捷
3. 目录导航核心指令
| 指令 | 功能 | 常用示例 |
|---|---|---|
pwd |
显示当前工作目录 | pwd → 输出/home/whb/test |
cd |
切换工作目录 | cd /home/whb(绝对路径切换)、cd ..(返回上级目录)、cd ~(进入家目录)、cd -(返回上一次目录) |
ls |
列出目录内容 | ls -a(显示隐藏文件)、ls -l(详细信息)、ls -al(组合选项,显示所有文件详细信息) |
三、文件与目录操作指令
1. 文件操作
- 创建文件 :
touch 文件名,示例:touch newFile.txt(创建空文件),touch -a 文件名(仅修改访问时间),touch -m 文件名(仅修改修改时间) - 查看文件内容 :
cat 文件名:一次性显示全部内容,示例:cat temp.txt,cat -n 文件名(显示行号)more 文件名:分页显示,more -10 文件名(指定显示 10 行),按q退出less 文件名:支持前后翻页,less -N 文件名(显示行号),/字符串(向下搜索),?字符串(向上搜索)head/tail 文件名:head -5 文件名(显示前 5 行),tail -3 文件名(显示后 3 行),tail -f 文件名(实时监控文件更新,适合查看日志)
- 复制文件 :
cp [选项] 源文件 目标文件,示例:cp myfile.txt backup.txt(复制文件),cp -i 源文件 目标文件(覆盖前询问),cp *.txt dir(复制所有 txt 文件到 dir 目录) - 移动 / 重命名文件 :
mv [选项] 源文件 目标文件,示例:mv myfile.txt yourfile.txt(重命名),mv myfile.txt ../dir(移动文件到上级目录的 dir 文件夹) - 删除文件 :
rm [选项] 文件名,示例:rm file.txt(删除文件),rm -i 文件名(删除前询问),rm -f 文件名(强制删除只读文件)
2. 目录操作
- 创建目录 :
mkdir 目录名,示例:mkdir mydir(创建空目录),mkdir -p path1/path2/path3(递归创建多级目录) - 删除目录 :
rmdir 目录名:仅删除空目录,rmdir -p path1/path2(递归删除空目录)rm -r 目录名:删除目录及所有内容,rm -rf 目录名(强制递归删除,慎用!)
四、权限管理:Linux 安全核心
1. 权限基础概念
Linux 通过权限控制文件 / 目录的访问,涉及三个维度:
- 访问者分类 :
u(User):文件所有者g(Group):所有者所属组的用户o(Others):其他用户
- 文件类型 :
d:目录,-:普通文件,l:软链接,b:块设备(如硬盘),c:字符设备(如屏幕)
- 基本权限 (对应八进制数值):
r(读,4):文件可读取内容,目录可查看列表w(写,2):文件可修改内容,目录可创建 / 删除文件x(执行,1):文件可运行,目录可进入(cd)-:无对应权限
权限表示示例:drwxrwxr-x,拆解为:
- 第一位
d:目录类型 - 第 2-4 位
rwx:所有者权限(读 + 写 + 执行) - 第 5-7 位
rwx:所属组权限(读 + 写 + 执行) - 第 8-10 位
r-x:其他用户权限(读 + 执行)
2. 权限修改指令
-
chmod :修改文件 / 目录权限,两种用法:
- 符号格式:
chmod [用户][±=][权限] 文件名,示例:chmod u+w file.txt(给所有者添加写权限),chmod o-x dir(给其他用户取消执行权限),chmod a=r file.txt(给所有用户赋予读权限) - 八进制格式:
chmod 数值 文件名,示例:chmod 664 file.txt(所有者 / 组:读 + 写,其他:读),chmod 755 dir(所有者:读 + 写 + 执行,组 / 其他:读 + 执行)
- 递归修改目录权限:
chmod -R 755 dir(修改 dir 及子目录所有文件权限)
- 符号格式:
-
chown :修改文件所有者,示例:
chown user1 file.txt(将 file.txt 所有者改为 user1),chown -R user1 dir(递归修改目录所有者) -
chgrp :修改文件所属组,示例:
chgrp users file.txt(将文件所属组改为 users)
3. 粘滞位(特殊权限)
默认情况下,具有目录写权限的用户可删除目录内任意文件,这存在安全隐患。粘滞位可解决该问题:
- 设置粘滞位:
chmod +t 目录名,示例:chmod +t /home - 效果:设置后,目录下的文件仅能被 3 类用户删除:超级管理员、目录所有者、文件所有者
- 验证:设置后目录权限显示为
drwxrwxrwt(末尾t表示粘滞位)
五、实用工具与扩展指令
1. 压缩与解压
- zip/unzip :
- 压缩:
zip -r test.zip test/(递归压缩 test 目录) - 解压:
unzip test.zip -d /tmp(解压到 /tmp 目录)
- 压缩:
- tar (重要):支持多种压缩格式,核心参数:
-c:创建压缩包,-x:解压,-z:gzip 压缩,-j:bzip2 压缩,-v:显示过程,-f:指定文件名- 示例:
- 打包压缩:
tar -zcvf etc.tar.gz /etc(gzip 格式压缩 /etc 目录) - 解压:
tar -zxvf etc.tar.gz -C /usr/local/src(解压到指定目录) - 查看压缩包内容:
tar -ztvf etc.tar.gz
- 打包压缩:
2. 搜索与查找
- find :在文件树中查找文件,示例:
find ~ -name "test.c"(在用户家目录查找 test.c 文件) - grep :在文件中搜索字符串,示例:
grep "abcd" temp.txt(查找包含 abcd 的行),grep -i "abcd" temp.txt(忽略大小写),grep -n "abcd" temp.txt(显示行号),grep -v "abcd" temp.txt(反向查找,显示不包含 abcd 的行) - which/whereis :查找命令位置,
which ls(显示 ls 命令路径),whereis ls(显示命令及手册位置)
3. 系统信息与时间
date:查看 / 设置系统时间,示例:date +%Y-%m-%d(显示年月日),date +%H:%M:%S(显示时分秒),date -s "2024-05-20 14:30:00"(设置时间,需 root 权限)cal:查看日历,cal(当前月日历),cal 2024(2024 年全年日历),cal -3(显示前一月、当前月、后一月)uname -a:查看系统详细信息(内核版本、硬件架构等)top:实时监控系统进程资源占用,top -d 1 -n 5(1 秒刷新一次,共刷新 5 次),按q退出
4. 帮助指令
man 命令:查看命令手册,示例:man ls(查看 ls 命令用法),man 2 fork(查看系统调用 fork 的手册)- 手册章节说明:1(普通命令)、2(系统调用)、3(库函数)、5(文件格式)、8(系统管理命令)
六、Linux 权限与 shell 运行原理
1. 用户切换
Linux 分为超级用户(root,提示符#)和普通用户(提示符$):
- 切换用户:
su [用户名],示例:su root(普通用户切换到 root,需输入 root 密码),su whb(root 切换到普通用户 whb,无需密码)
2. shell 运行原理
Linux 内核(kernel)是操作系统核心,用户无法直接操作,需通过 shell(命令行解释器)作为中间层:
- 用户输入命令(如
ls) - shell 解析命令并传递给内核
- 内核执行命令并返回结果
- shell 将结果展示给用户
常用 shell 为 bash(Bourne Again Shell),类似 "媒婆" 角色,连接用户与内核。