📘 Linux 操作系统基础
一、操作系统概念
-
作用:屏蔽底层硬件差异,为上层应用提供统一的运行环境和接口。
-
Linux 组成:
-
内核(Kernel)
-
Shell(命令行解释器)
-
库函数(系统调用接口)
-
🖥️ 常用 Shell 命令总结
1. 基本文件与目录操作
| 命令 | 说明 | 示例 |
|---|---|---|
ls |
列出目录内容 | ls -l |
cd |
切换目录 | cd /home |
mkdir |
创建目录 | mkdir test |
rmdir |
删除空目录 | rmdir test |
touch |
创建空文件 | touch file.txt |
rm |
删除文件或目录 | rm -rf dir/ |
pwd |
显示当前目录 | pwd |
cp |
复制文件或目录 | cp source dest |
mv |
移动或重命名文件 | mv old new |
2. 文件查看与搜索
| 命令 | 说明 | 示例 |
|---|---|---|
cat |
查看文件内容 | cat file.txt |
head/tail |
查看文件开头/结尾 | head -n 5 file.txt |
grep |
搜索文本 | grep "error" log.txt |
find |
查找文件 | find /home -name "*.txt" |
3. 管道与重定向
bash
# 管道示例
ps -ef | grep bash
# 输出重定向
ls > list.txt
ls >> list.txt # 追加
# 错误重定向
command 2> error.log
4. 权限管理
bash
# 修改权限
chmod 755 script.sh
chmod +x script.sh
# 修改所属组
chgrp groupname file
# 修改所有者
chown username file
5. 压缩与解压
bash
# tar.bz2
tar -jcvf archive.tar.bz2 dir/
tar -jxvf archive.tar.bz2
# tar.gz
tar -zcvf archive.tar.gz dir/
tar -zxvf archive.tar.gz
6. 系统与网络命令
| 命令 | 说明 | 示例 |
|---|---|---|
ps |
查看进程 | ps -ef |
top |
动态查看进程 | top |
ifconfig |
查看网络配置 | ifconfig |
ping |
测试网络连通性 | ping 8.8.8.8 |
sudo |
提权执行命令 | sudo apt update |
date |
显示日期时间 | date |
whoami |
当前用户 | whoami |
📦 软件包管理
1. dpkg(Debian 系)
bash
sudo dpkg -i package.deb
sudo dpkg -l | grep package
sudo dpkg -P package
2. apt-get(高级包管理)
bash
sudo apt update
sudo apt install package
sudo apt remove package --purge
🐚 Shell 编程基础
1. 脚本开发流程
bash
# 1. 创建脚本
vim hello.sh
# 2. 添加内容
#!/bin/bash
echo "Hello World"
# 3. 赋予执行权限
chmod +x hello.sh
# 4. 执行
./hello.sh
2. 变量
bash
# 环境变量
echo $HOME
echo $PATH
# 位置变量
echo $0 # 脚本名
echo $1 # 第一个参数
# 自定义变量
name="Linux"
echo $name
3. 分支结构
bash
# if 语句
if [ $1 -eq 10 ]; then
echo "参数是10"
elif [ $1 -lt 10 ]; then
echo "参数小于10"
else
echo "参数大于10"
fi
# case 语句
case $1 in
start)
echo "启动服务"
;;
stop)
echo "停止服务"
;;
*)
echo "用法: $0 {start|stop}"
;;
esac
4. 循环结构
bash
# for 循环
for i in {1..5}; do
echo "数字: $i"
done
# while 循环
count=1
while [ $count -le 5 ]; do
echo "计数: $count"
((count++))
done
5. 数组
bash
arr=("a" "b" "c")
echo ${arr[1]} # 输出 b
echo ${arr[@]} # 输出所有元素
🔗 补充说明
1. 解释型 vs 编译型语言
-
解释型:如 Shell、Python,边解释边执行,适合系统管理。
-
编译型:如 C、C++、Java,先编译后执行,适合高性能计算。
2. Shell 脚本中的引号
-
双引号:变量替换
-
单引号:原样输出
-
反引号:执行命令
bash
name="World"
echo "Hello $name" # Hello World
echo 'Hello $name' # Hello $name
echo `date` # 输出当前时间
✅ 总结建议
-
多练习基础命令,理解每个命令的常用选项。
-
掌握 Shell 编程基础,能编写自动化脚本。
-
理解权限、进程、网络配置,这是系统管理的核心。
-
善用管道、重定向、查找工具,提高工作效率。