玩转 Linux 操作系统
Linux 发展简史
- 1969:Ken Thompson 在 PDP-7 上开发 Unix
- 1973:Dennis Ritchie 用 C 语言重写 Unix
- 1991:Linus Torvalds 在 Minix 基础上开发 Linux 内核
主流发行版:Ubuntu、CentOS、RedHat、Debian、Fedora
基础命令
系统信息
uname -a # 查看系统信息
hostname # 主机名
cat /etc/os-release # 系统版本
w / who / last # 登录用户
ps # 查看进程
文件操作
ls -la # 列出文件(长格式,含隐藏)
cd / path / .. # 切换目录
pwd # 当前目录
mkdir -p a/b/c # 创建目录(含父目录)
touch file.txt # 创建文件
cp src dst # 复制
mv src dst # 移动/重命名
rm -rf path # 强制删除目录
# 查看文件
cat file.txt # 全部内容
head -n 10 file.txt # 前10行
tail -n 10 file.txt # 后10行
less file.txt # 分页查看
查找
find / -name "*.py" # 按文件名查找
find . -type f -size +1M # 按大小查找
grep -rn "keyword" ./ # 搜索文件内容
which python # 查找命令位置
压缩归档
tar -cvf archive.tar ./dir # 归档
tar -xvf archive.tar # 解归档
tar -czvf archive.tar.gz ./ # gzip压缩归档
tar -xzvf archive.tar.gz # 解压
gzip/gunzip file # 压缩/解压
管道和重定向
cmd1 | cmd2 # cmd1的输出作为cmd2的输入
cmd > file.txt # 输出重定向(覆盖)
cmd >> file.txt # 追加重定向
cmd 2> error.log # 错误重定向
cmd &> all.log # 输出和错误都重定向
cmd < file.txt # 输入重定向
用户管理
useradd username # 创建用户
userdel username # 删除用户
passwd username # 设置密码
su - username # 切换用户
sudo cmd # 以root执行
visudo # 编辑sudoers文件
文件权限
# 权限:r(读4) w(写2) x(执行1)
# 对象:u(用户) g(组) o(其他) a(全部)
chmod 755 file # 数字方式设置权限
chmod u+x file # 字符方式添加执行权限
chown user:group file # 改变所有者
chgrp group file # 改变所属组
磁盘管理
df -h # 磁盘使用情况
fdisk -l # 分区表
mount /dev/sdb1 /mnt # 挂载
umount /mnt # 卸载
Vim 编辑器
三种模式
- 命令模式:启动后的默认模式,
i进入编辑,:进入末行 - 编辑模式:
Esc返回命令模式 - 末行模式:保存/退出/查找/替换
常用操作
| 命令 | 作用 |
|---|---|
i |
进入编辑模式 |
dd |
删除当前行 |
yy |
复制当前行 |
p |
粘贴 |
u |
撤销 |
Ctrl+r |
重做 |
/keyword |
搜索 |
:wq |
保存退出 |
:q! |
强制退出 |
gg |
到文件首 |
G |
到文件尾 |
:行号 |
跳转到指定行 |
:%s/old/new/g |
全局替换 |
:set nu |
显示行号 |
:%!sort |
排序 |
窗口操作
:sp file # 水平分屏
:vs file # 垂直分屏
Ctrl+w w # 切换窗口
软件安装
yum(CentOS/RHEL)
yum search nginx # 搜索
yum install nginx # 安装
yum remove nginx # 卸载
yum update # 更新
yum list installed # 已安装列表
rpm
rpm -ivh package.rpm # 安装
rpm -e package # 卸载
rpm -qa | grep name # 查询
源码编译安装
./configure --prefix=/usr/local/app
make && make install
服务管理
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl restart nginx # 重启
systemctl enable nginx # 开机自启
systemctl status nginx # 状态
网络相关
ifconfig / ip addr # IP地址
netstat -tlnp # 监听端口
ss -tlnp # 替代netstat
ping host # 连通性
curl url # HTTP请求
wget url # 下载
ssh user@host # 远程连接
scp file user@host:/path # 远程拷贝
环境变量
echo $PATH # 查看PATH
export PATH=$PATH:/new/path # 添加(临时)
# 永久:写入 ~/.bash_profile 或 /etc/profile
source ~/.bash_profile # 生效
常用文本处理
sed -i 's/old/new/g' file # 替换
awk '{print $2}' file # 取第2列
sort file | uniq # 排序去重
wc -l file # 统计行数
cut -d: -f1 /etc/passwd # 剪切字段
tr 'a-z' 'A-Z' < file # 字符转换
总结
- 文件系统:
/etc配置、/home用户、/root管理员、/usr应用 - 权限:chmod 数字或字符、
chown改所有者 - Vim:三种模式切换,常用命令(dd/yy/p/u/:/wq)
- 安装软件:yum/rpm 或源码编译
- 服务:
systemctl start/stop/enable - 网络:
ifconfig/ss/curl/ssh/scp