Linux(一) : 基础指令
一、Linux系统概述与核心概念
1. Linux发展史与开源文化
- Unix的遗产:
- 1969年由Ken Thompson和Dennis Ritchie开发,奠定了多用户、多任务的基础。
- BSD与System V的分支竞争推动了标准化进程。
- Linux的诞生:
- 1991年Linus Torvalds发布Linux内核,结合GNU工具链形成完整操作系统。
- 开源协议GPL保障了代码自由共享与修改,催生了Debian、Red Hat等发行版。
- 现代应用:
- 服务器(75%市场份额)、Android移动端、云计算(如AWS、阿里云)的核心基石。
2. Linux目录结构解析
-
核心目录功能:
目录 用途描述 /bin
存放基础命令(如 ls
,cp
)/etc
系统配置文件(如网络配置、服务启动脚本) /home
普通用户的家目录 /var
动态数据(日志、数据库文件) /dev
设备文件(如硬盘、USB设备) /usr
用户程序与文档(类似Windows的Program Files) -
路径类型:
- 绝对路径:从根目录
/
开始(如/home/user/docs/file.txt
)。 - 相对路径:基于当前目录(如
../images/photo.jpg
)。
- 绝对路径:从根目录
二、基础文件操作指令详解
1. 文件浏览与管理
ls
:列出目录内容
- 选项详解:
-l
:长格式显示(权限、所有者、大小、修改时间)。$ ls -l -rw-r--r-- 1 user group 4096 Jan 1 10:00 file.txt # 权限 | 链接数 | 所有者 | 组 | 大小 | 修改时间 | 文件名
-a
:显示隐藏文件(以.
开头的文件)。-h
:人性化显示文件大小(如KB、MB)。
- 文件类型标识:
d
:目录-
:普通文件l
:符号链接
cd
:切换目录
- 快捷操作:
cd ~
:返回家目录。cd -
:返回上一次所在目录。
- 示例:
$ cd /var/log # 进入系统日志目录 $ cd ../.. # 向上返回两级目录
mkdir
/rmdir
:创建与删除目录
- 递归创建:
$ mkdir -p project/{src,doc,bin} # 同时创建多级目录
- 删除空目录:
$ rmdir empty_dir # 仅删除空目录
2. 文件操作进阶
cp
:复制文件/目录
- 选项解析:
-r
:递归复制目录(含子目录和文件)。-i
:覆盖前询问确认。
- 示例:
$ cp -ri source_dir/ backup/ # 交互式复制并保留目录结构
mv
:移动或重命名文件
- 重命名文件:
$ mv old_name.txt new_name.txt
- 移动文件到目录:
$ mv *.log /var/log/archive/ # 移动所有日志文件到归档目录
rm
:删除文件/目录
- 强制删除:
$ rm -rf temp/ # 递归强制删除目录(慎用!)
- 安全提示:
- 使用
-i
选项避免误删:$ rm -i important_file.txt
- 使用
3. 文件内容查看与搜索
cat
/tac
:正向/反向查看文件
- 合并文件:
$ cat file1.txt file2.txt > combined.txt
- 显示行号:
$ cat -n server.log
more
/less
:分页查看大文件
more
基础操作:- 空格键:向下翻页。
- Enter键:向下滚动一行。
q
:退出。
less
高级功能:/keyword
:向下搜索关键词。?keyword
:向上搜索关键词。Shift+G
:跳转到文件末尾。
head
/tail
:查看文件头尾
- 实时监控日志:
$ tail -f /var/log/nginx/access.log # 实时追踪访问日志
- 提取中间内容:
$ head -n 100 file.log | tail -n 20 # 显示第81-100行
grep
:文本搜索工具
- 多文件搜索:
$ grep "error" *.log # 在所有日志文件中搜索“error”
- 正则表达式:
$ grep "^[0-9]" data.txt # 搜索以数字开头的行
三、权限管理与高级操作
1. 文件权限基础
- 权限三元组:
- 所有者(u)、所属组(g)、其他人(o)。
r
(读)、w
(写)、x
(执行)。
- 数字表示法:
r=4
,w=2
,x=1
,如755
表示rwxr-xr-x
。
chmod
:修改权限
- 符号模式:
$ chmod u+x script.sh # 给所有者添加执行权限 $ chmod o-w sensitive.txt # 移除其他人的写权限
- 数字模式:
$ chmod 644 config.conf # 设置权限为rw-r--r--
chown
/chgrp
:修改所有者与组
- 递归修改:
$ sudo chown -R user:group /opt/app # 修改目录及其内容的所有者
2. 粘滞位与特殊权限
- 粘滞位(Sticky Bit):
- 用途:防止用户删除他人文件(常见于
/tmp
)。 - 设置方法:
$ chmod +t /shared_dir
- 权限标识:目录权限末尾的
t
(如drwxrwxrwt
)。
- 用途:防止用户删除他人文件(常见于
四、系统管理工具与实用技巧
1. 进程管理
ps
:查看进程状态
- 常用选项:
$ ps aux # 显示所有进程的详细信息(CPU、内存占用)
kill
:终止进程
- 示例:
$ kill -9 1234 # 强制终止PID为1234的进程
2. 压缩与解压
tar
:归档与压缩
- 常见用法:
$ tar -czvf backup.tar.gz /data # 打包并压缩(gzip) $ tar -xzvf backup.tar.gz -C /restore # 解压到指定目录
- 支持格式:
.tar.gz
(-z
)、.tar.bz2
(-j
)、.tar.xz
(-J
)。
zip
/unzip
:跨平台压缩
- 压缩目录:
$ zip -r project.zip project/
- 解压到指定路径:
$ unzip data.zip -d /target/dir
3. 网络与远程管理
ssh
:安全远程登录
- 密钥登录配置:
$ ssh-keygen -t rsa # 生成密钥对 $ ssh-copy-id user@remote_host # 上传公钥
scp
:安全文件传输
- 示例:
$ scp file.txt user@remote:/path/ # 上传文件到远程主机 $ scp -r dir/ user@remote:/backup/ # 递归传输目录
五、Shell进阶与脚本编程
1. 管道与重定向
- 管道符
|
:$ cat access.log | grep "404" | wc -l # 统计404错误次数
- 重定向:
>
:覆盖输出到文件。>>
:追加输出到文件。2>
:重定向错误信息。
2. 简单Shell脚本
- 示例脚本:
#!/bin/bash # 备份脚本 tar -czf backup_$(date +%Y%m%d).tar.gz /data echo "Backup completed at $(date)" >> /var/log/backup.log
- 执行脚本:
$ chmod +x backup.sh $ ./backup.sh
六、常见问题与解决方案
1. 权限不足问题
sudo
提权:$ sudo apt update # 以root权限更新软件包
- 修复文件权限:
$ sudo chmod -R 755 /webroot # 递归设置目录权限
2. 误删文件恢复
- 使用
extundelete
工具:$ extundelete /dev/sda1 --restore-file /home/user/important.txt
3. 磁盘空间管理
- 查看磁盘使用:
$ df -h # 显示各分区使用情况 $ du -sh * # 统计当前目录下各文件/目录大小