文章目录
-
- 一、Linux入门
- 二、Linux文件与目录结构
- 三、Linux核心命令
- 四、文件操作相关命令
- 五、查看文件内容
- 六、输出重定向
- [七、vi/vim 编辑器](#七、vi/vim 编辑器)
- 八、用户管理命令
-
- [8.1 root 用户](#8.1 root 用户)
-
- [1. root 用户特点](#1. root 用户特点)
- [2. 切换root用户](#2. 切换root用户)
- [3. 使用sudo替代root用户操作](#3. 使用sudo替代root用户操作)
- [8.2 useradd 添加新用户](#8.2 useradd 添加新用户)
- [8.3 passwd 设置用户密码](#8.3 passwd 设置用户密码)
- [8.4 id 查看用户是否存在](#8.4 id 查看用户是否存在)
- [8.5 查看创建了哪些用户](#8.5 查看创建了哪些用户)
- [8.6 删除用户](#8.6 删除用户)
- [8.7 设置普通用户具有root 权限](#8.7 设置普通用户具有root 权限)
- [8.8 修改用户](#8.8 修改用户)
- 九、用户组管理命令
-
- [9.1 groupadd 新增组](#9.1 groupadd 新增组)
- [9.2 groupdel 删除组](#9.2 groupdel 删除组)
- [9.3 groupmod 修改组名](#9.3 groupmod 修改组名)
- [9.4 usermod 修改用户组](#9.4 usermod 修改用户组)
- [9.5 查看创建了哪些组](#9.5 查看创建了哪些组)
- 十、文件权限类
-
- [10.1 文件属性](#10.1 文件属性)
-
- [1. 字符解释](#1. 字符解释)
- [2. rwx作用文件和目录的不同解释](#2. rwx作用文件和目录的不同解释)
- [3. 实例操作](#3. 实例操作)
- [10.2 chmod](#10.2 chmod)
-
- [1. 字母方式](#1. 字母方式)
- [2. 数字方式](#2. 数字方式)
- [10.3 chown](#10.3 chown)
- [10.4 chgrp](#10.4 chgrp)
- 十一、收索查找类
-
- [11.1 find查找文件或者目录](#11.1 find查找文件或者目录)
- [11.2 grep与管道符过滤查找](#11.2 grep与管道符过滤查找)
- 十二、压缩解压文件
- 十三、磁盘类
-
- [13.1 df 查看磁盘空间](#13.1 df 查看磁盘空间)
- [13.2 du 查看文件/目录大小](#13.2 du 查看文件/目录大小)
- 十四、网络类
-
- [14.1 ifconfig](#14.1 ifconfig)
- [14.2 ping](#14.2 ping)
- [14.3 主机名](#14.3 主机名)
- 十五、进程类
-
- [15.1 ps 查看进程](#15.1 ps 查看进程)
- [15.2 kill 终止进程](#15.2 kill 终止进程)
- [15.3 free 查看内容](#15.3 free 查看内容)
- [15.4 top系统监控](#15.4 top系统监控)
- [15.5 netstat 查看网络端口](#15.5 netstat 查看网络端口)
一、Linux入门
1.1、概述
Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于UNIX和POSIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持3 2位和6 4位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有:Ubuntu 、RedHat 、CentOS、Debain、Fedora、SuSE、OpenSUSE。
1.2、Linux和Windows区别
| 对比维度 | Windows | Linux |
|---|---|---|
| 免费与收费 | 收费且很贵 | 免费或少许可费用 |
| 软件与支持 | 数量和质量有优势,不过大部分为收费软件;由微软官方提供支持和服务 | 开源自由软件,用户可以修改定制和再发布;因基本免费缺乏资金支持,部分软件质量和体验欠缺;由全球的 Linux 开发者和自由软件社区提供支持 |
| 安全性 | 需频繁打补丁安装系统安全更新,仍易中病毒木马 | 并非没有安全问题,但比 Windows 更稳定安全,不易产生垃圾文件,适合长期运行 |
| 使用习惯 | 普通用户基本在纯图形界面下操作,依靠鼠标和键盘完成一切操作,上手容易、入门简单 | 兼具图形界面和完整命令行操作,可仅用键盘完成一切操作;新手入门较困难,需要学习和指导,熟练后效率极高 |
| 可定制性 | 封闭系统,可定制性很差 | 开源系统,可定制化非常强 |
| 应用场景 | 桌面操作系统的主流选择 | 支撑百度、谷歌、淘宝等应用和服务的后台服务器主机;世界上大部分软件和服务都运行在 Linux 之上 |
二、Linux文件与目录结构
2.1、Linux文件
在 Linux系统设计思想 中,遵循万物皆文件(Everything is a file)核心机制,系统将硬件设备、进程、网络套接字、目录、普通文本、驱动接口、内存资源等所有软硬件资源,统一抽象为文件形式进行管理。
2.2、Linux目录结构
常见目录:
tex
/
├── home # 用户目录
├── root # root管理员目录
├── dev # 设备
├── etc # 配置文件
├── var # 日志
├── usr # 软件安装目录
├── tmp # 临时文件
├── opt # 第三方软件
三、Linux核心命令
pwd
查看当前路径
bash
pwd
ls
bash
ls
- -a:全部的文件,连同隐藏档(开头为 . 的文件)一起列出来
- -l:长数据串列出,包含文件的属性与权限等等数据
- -R:递归列出目录下所有子目录及文件
详细查看:
bash
ls -l
显示隐藏文件:
bash
ls -la
cd
切换目录
bash
cd 目录名
返回上一级:
bash
cd ..
直接回家目录:
bash
cd ~
四、文件操作相关命令
mkdir
创建目录
bash
mkdir text
递归创建:
- -p:创建多层目录(目标目录以及父目录)
bash
mkdir -p app/api/v1
touch
bash
touch main.py
一次创建多个:
bash
touch app.py config.py
rm
- r:递归删除目录以及其中所有内容
- -f:强制执行删除操作,而不提示用于进行提示确认
- -v:显示指令的详细执行过程
删除文件
bash
rm test.txt
删除目录:
bash
rm -r test
强制删除(递归的强制删除):
bash
rm -rf test
cp
复制
bash
# cp 源文件 目标文件
cp a.txt b.txt
复制目录:
bash
cp -r app backup
mv
移动 / 重命名
重命名:
bash
# mv old-name new-name
mv a.txt b.txt
移动:
bash
# mv 源文件 目标路径
mv main.py app/
五、查看文件内容
cat
- -n:显示所有的行号,包括空行
查看文件
bash
cat -n main.py
less
可分页,但不显示进度,从头开始
bash
less app.log
退出:
bash
q
more
可分页,显示进度,从头开始
sql
more app.log
tail
- -n:指定要看的行数,不写默认10行
- -F:实时追踪改文档的所有更新
查看最后几行(-n不填默认10行,一般用于看日志)
bash
tail -n 要看的行数 app.log
# 修改改文件实时显示
tail -F 文件名
六、输出重定向
列表的内容覆盖写入文件
bash
ls -a > 文件
列表的内容追加到文件的末尾
bash
ls -a >> 文件
可以通过echo来进行输出重定向
bash
echo "内容" > 文件
七、vi/vim 编辑器

八、用户管理命令
8.1 root 用户
root 用户是具有最高权限的超级用户
1. root 用户特点
root 用户拥有系统的所有权限,可以对系统进行任何操作,包括修改系统关键配置文件、安装和卸载系统级软件、管理用户账户等。但由于其权限过大,不当操作可能会导致系统出现严重问题,甚至无法正常运行。
2. 切换root用户
bash
# 切换用户,只能获得用户的执行权限,不能获得环境变量
su 用户名称
# 切换到用户并获得该用户的环境变量及执行权限
su - 用户名称
# 退出root 用户
exit
3. 使用sudo替代root用户操作
虽然可以使用root用户登录并操作,但更推荐使用sudo命令。sudo 允许普通用户在需 要时以 root 权限执行特定的命令,而不需要一直以 root 用户身份登录。
在需要执行的命令前加上 sudo,例如要安装软件包:
bash
sudo apt install package_name
系统会提示你输入当前普通用户的密码,输入正确后命令将以 root 权限执行。
8.2 useradd 添加新用户
bash
# 添加新用户
useradd 用户名
# 添加新用户到某个组
useradd -g 组名 用户名
可以在useradd后面加-m指定是否创建用户目录
8.3 passwd 设置用户密码
bash
# 设置用户密码
passwd 用户名
8.4 id 查看用户是否存在
bash
# 查看用户是否存在
id 用户名
8.5 查看创建了哪些用户
bash
cat /etc/passwd
8.6 删除用户
bash
# 删除用户但保存用户主目录
userdel 用户名
# 用户和用户主目录,都删除
userdel -r 用户名
8.7 设置普通用户具有root 权限
1.添加testu用户,并对其设置密码
bash
useradd testu
passwd testu
2.修改配置文件
bash
vi /etc/sudoers
修改 /etc/sudoers 文件,在root下面添加一行,如下所示:
bash
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
testu ALL=(ALL) ALL
或者配置成采用sudo命令时,不需要输入密码
bash
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
testu ALL=(ALL) NOPASSWD:ALL
修改完毕,通过:wq!退出编辑,然后可以用 testu 帐号登录,用命令 sudo ,即可获得 root 权限进行操作。不需要多次输入密码。
8.8 修改用户
- -l:改变用户名
- -d:指定新的家目录路径
- -m:自动把旧家目录文件移动到新目录里
bash
# 基本语法
usermod -l 新用户名 老用户名
usermod -d /home/新目录名 -m 新用户名
九、用户组管理命令
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同。
如 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对**/etc/group** 文件的更新。
9.1 groupadd 新增组
bash
groupadd 组名
9.2 groupdel 删除组
bash
groupdel 组名
9.3 groupmod 修改组名
- -n:指定工作组的新组名
bash
groupmod -n 新组名 老组名
9.4 usermod 修改用户组
- -g:指定用户需要加入的用户组
bash
# 指定用户需要加入的用户组
usermod -g 组名 用户名
9.5 查看创建了哪些组
bash
cat /etc/group
十、文件权限类
10.1 文件属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在 Linux 中我们可以使用 ll 或者 ls -l 命令来显示一个文件的属性以及文件所属的用户和组。

1. 字符解释
从左到右的10个字符表示
如果没有权限,就会出现 "-" ;从左至右用0-9这些数字来表示:
- 0:表示类型,在Linux中的第一个字符,代表这个文件是目录(d)、文件(-)、链接文件(l)等等。
- 第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User
- 第4-6位确定属组(所有者的同组用户)拥有该文件的权限。---Group
- 第7-9位确定其他用户拥有该文件的权限。---Other
2. rwx作用文件和目录的不同解释
| 权限 | 文件 | 目录 |
|---|---|---|
| r(读) | 可以读取、查看文件内容(如 cat) |
可以用 ls 查看目录里的文件名列表 |
| w(写) | 可以修改、写入文件内容(如 vim 保存) |
可以在目录内创建、删除、重命名文件 / 子目录 |
| x(执行) | 可以把文件当作程序 / 脚本运行(如 ./shturl) |
可以用 cd 进入该目录,访问里面的文件 |
注意
- 删除文件,看的是目录权限,不是文件权限
- 目录要正常用,r和x必须同时存在
3. 实例操作

10.2 chmod
改变权限
1. 字母方式
tex
u 所有者
g 所属组
o 其他人
a 所有人
+ 加权限
- 减权限
= 直接设权限
r 读
w 写
x 执行
例子:
bash
chmod u+x 文件 # 给所有者加执行权限
chmod g-w 文件 # 给组去掉写权限
chmod u+x,o+x 文件 # 所有者+其他人都加执行
2. 数字方式
tex
r=4 w=2 x=1
rwx=7 rw-=6 r-x=5 --x=1
10.3 chown
修改所有者和所属组
tex
chown 用户名 文件
chown 用户名:组名 文件
chown -R 用户名:组名 目录 # 递归修改
例子:
bash
chown root shturl.c
chown root:root shturl.c
chown -R zxf:zxf test/
10.4 chgrp
只修改所属组
bash
chgrp 组名 文件
例子:
bash
chgrp zxf shturl.c
十一、收索查找类
11.1 find查找文件或者目录
功能:从指定目录递归遍历,查找满足条件的文件/目录
- -name:按文件名查找(需要加引号)
- -user:按文件所有者查找
- -size:按文件大小查找
- 'c':字节,'k':KB,'M':MB,'G':GB
- '+n':大于,'-n':小于,'n':等于
案例:
bash
find ./ -name "*.txt" # 查找当前目录下所有txt文件
find ./ -user "zxf" # 查找所有者是zxf的文件
find ./ -size "+200c" # 查找大于200字节的文件
11.2 grep与管道符过滤查找
-
管道符 | :将前一个命令结果传给后一个命令处理
-
grep:文本搜索匹配工具
-
-n:显示行号
案例:
bash
# 查看系统中所有和 MySQL 相关的进程(看看 MySQL 有没有在运行)
ps -ef | grep -n mysqld
十二、压缩解压文件
tar 打包
- -c:创建打包文件
- -v:显示详细信息
- -f:指定压缩后的文件名
- -z:打包并压缩
- -x:解包 .tar文件
- -C:解压到指定目录
bash
# 压缩多个文件
tar -zcvf tt.tar.gz tt.txt tt2.txt
tar -zcvf tt.tar.gz ./*
# 压缩目录
tar -zcvf test.tar.gz test/
# 解压到当前目录
tar -zxvf test.tar.gz
# 解压到指定目录
tar -zxvf test.tar.gz -C ./work
十三、磁盘类
13.1 df 查看磁盘空间
bash
df -h
人性化显示磁盘整体使用情况
13.2 du 查看文件/目录大小
bash
du -a 目录/文件
显示文件/目录占用的磁盘空间
十四、网络类
14.1 ifconfig
bash
ifconfig
查看网络接口与IP地址
14.2 ping
bash
ping 目标主机
测试网络联通性
14.3 主机名
bash
# 查看主机名
hostname
# 修改主机名
vi /etc/hostname
十五、进程类
15.1 ps 查看进程
bash
# 查看所有进程(cpu/内存占用)
ps -aux
# 查看进程父子关系
ps -ef
# 常用
ps -ef | grep 程序名
15.2 kill 终止进程
bash
# 强制杀死进程
kill -9 进程号
15.3 free 查看内容
bash
# 以MB为单位显示内存使用
free -m
15.4 top系统监控
bash
# 快捷键:P(CPU 排序)、M(内存排序)、q(退出)
top
15.5 netstat 查看网络端口
bash
# 查看端口占用
netstat -nlp | grep 端口号
# 查看进程网络信息
netstat -anp | grep 进程号