一、初识Linux
Linux创始人:林纳斯 托瓦兹
Linux诞生于1991年
Linux系统的组成:Linux系统内核 和 系统级应用程序 两部分组成
Linux系统发行版:内无法被用户直接使用,需要配合应用程序才能被用户使用
扩展:
WSL:Windows Subsystem for Linux,是用于Windows系统之上的Linux子系统
可以在Windows系统中获取Linux系统环境,并完全直连计算机硬件,无需通过虚拟机虚拟硬件
二、Linux基础命令
在Linux系统中,路径之间的层级关系,使用:/ 来表示
在Windows系统中,路径之间的层级关系,使用: \ 来表示
Linux命令基础格式
语法:command [ -options ] [ parameter ]
- command:命令本身
- -options:[ 可选,非必选 ]命令的一些选项,可以通过选项控制命令的行为细节
- parameter:[ 可选,非必填 ]命令的参数,多数用于命令的指向目标
ls命令
列出目录下的内容
语法:ls [ -a -l -h ] [ Linux路径 ]
- -a:列出全部文件(包含隐藏的文件/文件夹)
- -l:以列表(竖向排列)的形式展示内容,并展示更多信息
- -h:需要和-l选项搭配使用,以易阅读的形式列出文件大小,如K、M、G
cd命令
切换工作目录
语法:cd [ Linux路径 ]
pwd命令
查看当前工作目录
语法:pwd
特殊路径符:
- . :表示当前目录
- .. :表示上一级目录
- ~ :表示HOME目录
mkdir命令
创建新的目录
语法:mkdir [ -p ] Linux路径
- -p:可以一次性创建多个层级的目录
touch命令
创建文件
语法:touch Linux路径
cat命令
查看文件内容
语法:cat Linux路径
more命令
查看文件内容
语法:more Linux路径
- cat是直接将内容全部显示出来
- more支持翻页,如果文件内容过多,可以一页页的展示
在查看过程中,通过空格翻页,通过q退出查看
cp命令
复制文件文件夹
语法:cp [ -r ] 参数1 参数2
- -r:可选,用于复制文件夹使用,表示递归
- 参数1:Linux路径,表示被复制的文件或文件夹
- 参数2:Linux路径,表示要复制去的地方
mv命令
移动文件或文件夹
语法:mv 参数1 参数2
- 参数1:Linux路径,表示被移动的文件或文件夹
- 参数2:Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
rm命令
删除文件、文件夹
语法:rm [ -r -f ] 参数1 参数2 ... 参数N
- -r:同cp命令一样,-r选项用于删除文件夹
- -f:表示强制删除,不会弹出提示确认信息
- 参数:表示要删除的文件或文件夹路径,按照空格隔开
rm命令支持通配符*,用来做模糊匹配
- 符号*表示通配符,即匹配任意内容(包含空),示例:
- test*:表示匹配任何以test开头的内容
- *test:表示匹配任何以test结尾的内容
- *test*:表示匹配任何包含test的内容
which命令
查看所使用的一系列命令的程序文件存放位置
语法:which 要查找的命令
find命令
按文件名查找文件
语法:find 起始路径 -name "被查找文件名"
被查找文件名,支持使用通配符*来做模糊查询
find命令
按文件大小查找文件
语法:find 起始路径 -size +|-n [kMG]
- +、-:表示大于和小于
- n:表示大小数字
- kMG:表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
grep命令
从文件中通过关键字过滤文件行
语法:grep [-n] 关键字 文件路径
- -n:表示在结果中显示匹配的行的行号
- 关键字:表示过滤的关键字,带有空格或其他特殊符号,建议使用" ",将关键字包围起来
- 文件路径:表示要过滤内容的文件路径,可作为内容输入端口
wc命令
统计文件的行数、单词数量等
语法:wc [ -c -m -l -w ] 文件路径
- -c:统计bytes数量
- -m:统计字符数量
- -l:统计行数
- -w:统计单词数量
- 文件路径:被通缉的文件,可作为内容输入端口
| 管道符
将管道符左边命令的结果,作为右边命令的输入
示例:cat test.txt | grep java
作用:在test.txt文件中过滤java字符
echo命令
在命令行内出入指定内容
语法:echo 输出的内容
输出内容有空格或其他特殊符号,建议使用" ",将关键字包围起来
` 反引号
被 ` 包围的内容,会被作为命令执行,而非普通字符
示例:echo `pwd
> 和 >>重定向符
>:将左侧命令的结果,覆盖写入到符号右侧指定的文件中
>>:将左侧命令的结果,追加写入到符号右侧指定的文件中
示例:
echo "Hello Linux" > test.txt 覆盖
echo "Hello Linux" >> test.txt 追加
tail命令:查看文件尾部内容,跟踪文件的最新更改
语法:tail [ -f -num ] Linux路径
- Linux路径:表示被跟踪的文件路径
- -f:表示持续跟踪
- -num:表示查看尾部多少行,不填默认10行
示例:
tail -5 test.txt
tail -f test.txt
vi \ vim编辑器
对文本进行编辑
vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性
命令模式:
vi 文件路径
vim 文件路径
![]()
输入模式
底线命令模式:
Gedit文本编辑器
启动Gedit有两种方式,一种是在系统搜索中直接搜索Gedit打开;
还有一种是直接通过Shell命令gedit打开。
三、Linux权限管控
su和exit命令
su命令切换账户
语法:su [ - ] [ 用户名 ]
- -符号:表示在切换用户后加载环境变量,建议带上
- 用户名:表示要切换的用户,用户名可以省略,省略时表示切换到root
- 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:CTRL + d
sudo命令
使用sudo命令,为普通的命令授权,临时以root身份执行
语法:sudo 其他命令
- 在其他命令之前,带上sudo,即可为这一条命令临时赋予root授权
- 但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
为普通用户配置sudo认证
- 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
- 在文件的最后添加:cary ALL=(ALL) NOPASSWD:ALL cary为用户名
- 最后通过wq保存
- 切换回普通用户
- 执行的命令,均以root运行
用户组管理
以下命令需root用户执行
创建用户组
groupadd 用户组名
删除用户组
groupdel 用户组名
用户管理
创建用户
useradd [ -g -d ] 用户名
- -g:指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要需要已经存在
- -d:指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
删除用户
userdel [ -r ] 用户名
- -r:删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
查看用户所属组
id [ 用户名 ]
- 用户名:被查看的用户,如果不提供则查看自身
修改用户所属组
usermod -aG 用户组 用户名
- 将指定用户加入指定用户组
getent命令
查看当前系统中有哪些用户
语法:getent passwd
共有7分信息,分别是:
用户名:密码(X):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
查看当前系统中有哪些用户组
语法:getent group
包含3份信息
组名称:组认证(显示为X):组ID
rwx权限
r表示读权限
w表示写权限
x表示执行权限
针对文件、文件夹的不同,rwx的含义有细微差别
- r,针对文件可以查看文件内容
- 针对文件夹,可以查看文件夹内容,如ls命令
- w,针对文件表示可修改此文件
- 针对文件夹,可以在文件夹内:创建、删除、改名等操作
- x,针对文件表示可以将文件作为程序执行
- 针对文件夹,表示可以更改工作目录到此文件夹,即cd进入
chmod命令
修改文件、文件夹的权限信息
注意,只有文件、文件夹的所属用户或root用户可以修改
语法:chmod [-R] 权限 文件或文件夹
- -R:对文件夹内的全部内容应用同样的操作
示例:chmod u=rwx,g=rx,o=x hello.txt 将文件权限修改为:rwxr-x--x
快捷写法:chmod 751 hello.txt
r记为4 w记为2 x记为1
chown命令
修改文件文件夹的所属用户和用户组
普通用户无法修改所属为其他用户或组,所有此命令只适用于root用户执行
语法:chown [-R] [用户][:][用户组] 文件或文件夹
- -R:同chmod,对文件夹内全部内容应用相同规则
- 用户:修改所属用户
- 用户组:修改所属用户组
- ::分隔用户和用户组
示例:
chown root hello.txt 将hello.txt所属用户修改为root
chown :root hello.txt 将hello.txt所属用户组修改为root
chown root:cary hello.txt 将用户修改为root,用户组修改为cary
chown -R root test 将文件夹test的所属用户修改为root并对文件夹内全部内容应用相同规则
四、Linux实用操作
ctrl + c 强制停止
- Linux程序运行,想强行停止
- 命令输入错误,可以使用ctrl + c,退出当前输入,重新输入
ctrl + d 退出或登出
- 可以通过快捷键ctrl + d,退出账户的登录
- 或者退出某些特定程序的专属页面(不能用于退出vi/vim)
历史命令搜索
history命令
查看历史输入过的命令
!命令
可以通过 !命令前缀,自动执行上一次匹配前缀的命令
ctrl + r
通过快捷键ctrl + r,输入内容去匹配历史命令
光标移动快捷键
- ctrl + a,跳到命令开头
- ctrl + e,跳到命令结尾
- ctrl + 键盘左键,向左跳一个单词
- ctrl + 键盘右键,向右跳一个单词
清屏
- 通过快捷键ctrl + l,可以清空终端内容
- 通过命令clear得到同样效果
软件安装
yum命令
yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题
语法:yum [-y] [install | remove | search] 软件名称
- -y:自动确认,无需手动确认安装或卸载过程
- install:安装
- remove:卸载
- search:搜索
yum命令需要root权限,可以使用su切换到root,或使用sudo提权
yum命令需要联网
apt命令 -扩展
语法:apt [-y] [install | remove | search] 软件名称
用法和yum一致,同样需要root权限
apt install wget 安装wget
apt remove wget 移除wget
apt search wget 搜索wget
systemctl命令
语法:systemctl start | stop | status | enable | disable 服务名
- start 启动
- stop 关闭
- status 查看状态
- enable 打开开机自启
- disable 关闭开机自启
系统内置的服务较多,比如:
- NetworkManager,主网络服务
- network,副网络服务
- firewalld,防火墙服务
- sshd,ssh服务
除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制
部分软件安装后没有自动集成到systemctl中,我们可以手动添加
软链接
ln命令创建软连接
语法:ln -s 参数1 参数2
- -s:创建软链接
- 参数1:被链接的文件或文件夹
- 参数2:要链接去的目的地
示例:ln -s /etc/yum.conf ~/yum.conf
date命令
语法:date [-d] [+格式化字符串]
- -d:按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
示例:
date +%Y-%m-%d 2023-08-01
date "+%Y-%m-%d %H:%M:%S" 2023-08-01 17:14:12
由于中间带有空格,所以使用双引号包围格式化字符串,作为整体
data命令进行日期加减
修改Linux时区
Linux系统默认时区非中国的东八区
使用root权限,执行如下命令,修改时区为东八区
rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接到 localtime文件即可
ntp程序
我们可以通过ntp程序自动校准系统时间
安装ntp:yum -y install ntp
启动并设置开启自启:
- systemctl start ntpd
- systemctl enable ntpd
当ntpd启动后会定期的帮助我们联网校准系统的时间
- 也可以手动校准(需要root权限):ntpdate -u ntp.aliyun.com
通过阿里云提供的服务网址配合ntpdate(安装ntp后附带这个命令)命令自动校准
IP地址
ifconfig命令:查看本机的ip地址
- 127.0.0.1,这个ip地址用于指代本机
- 0.0.0.0,特殊ip地址
- 可以用于指代本机
- 可以在端口绑定中来确定绑定关系
- 在一些ip地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问
hostname命令:查看主机名
hostnamectl set-hostname 主机名 修改主机名(需要root权限)
网络请求和下载
ping命令
语法:ping [-c num] ip或主机名
wget命令
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法:wget [-b] url
- -b:后台下载,会将日志写入到当前工作目录的wget-log文件
- url:下载链接
curl命令
curl可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-O] url
- -O:用于下载文件,当url是下载链接时,可以使用此选项保存文件
- url:要发起请求的网络地址
端口
Linux系统是一个超大号小区,可以支持65535个端口,着6万多个端口分为3类进行使用;
- 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,非特殊需求,不要占用这个范围的端口
- 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务
- 动态端口:49152~65535,通常不会固定绑定程序,二十当程序对外进行网络连接时,用于临时使用
查看端口占用
可以使用nmap命令,安装nmap:yum -y install nmap
语法:nmap 被查看的IP地址
可以使用netstat命令,查看指定端口的占用情况
语法:netstat -anp | grep 端口号
安装netstat:yum -y install net-tools
进程
查看进程
ps命令
语法:ps [-e -f ]
- -e:显示全部的进程
- -f:以完全格式化的形式展示信息
一般固定用法就是:ps -ef 列出全部进程的全部信息
查看指定进程
ps -ef | grep tail 可以准确的找到tail命令的信息
关闭进程
语法:kill [-9] 进程ID
- -9:表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是是否关闭看进程自身的处理机制
主机状态监控
查看系统资源占用
top命令:查看CPU、内存使用情况,类似Windows的任务管理器
默认每5秒刷新一次
语法:直接输入top即可,按q或者ctrl + c 退出
top命令内容详解
top命令选项
top交互式选项
当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制
磁盘信息监控
df命令
语法:df [-h]
- -h:以更加人性化的单位显示
iostat命令
查看CPU、磁盘的相关信息
语法:iostat [-x] [num1] [num2]
- -x:显示更多信息
- num1:数字,刷新间隔
- num2:数字,刷新几次
网络状态监控
sar命令
查看网络的相关统计
语法:sar -n DEV num1 num2
- -n:查看网络,DEV表示查看网络接口
- num1:刷新间隔(不填就查看一次结束)
- num2:查看次数(不填无限次数)
环境变量
文件的上传和下载
rz、sz命令
安装:yum -y install lrzsz
rz命令 进行上传
语法:直接输入rz即可
sz命令 进行下载
语法:sz要下载的文件
压缩和解压
tar命令
语法:tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
- -c:创建压缩文件,用于压缩模式
- -v:显示压缩、解压过程,用于查看进度
- -x:解压模式
- -f:要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
- -z:gzip模式,不使用-z就是普通的tarball格式
- -C:选择解压的目的地,用于解压模式
tar命令压缩
tar的常用组合为:
- tar -cvf test.tar 1.txt 2.txt 3.txt 将1.txt 2.txt 3.txt压缩到test.tar文件内
- tar -zcvf test.tar.gz 1.txt 2.txt 3.txt 将1.txt 2.txt 3.txt压缩到test.tar.gz文件内,使用gzip模式
注意:
- -z选项如果使用的话,一把处于选项位第一个
- -f选项,必须在选项位最后一个
tar命令解压
常用的tar解压组合有:
- tar -xvf test.tar 解压test.tar,将文件解压至当前目录
- tar -xvf test.tar -C /home/cary 解压test.tar,将文件解压至指定目录(/home/cary)
- tar -zxvf test.tar.gz -C /home/cary 以Gzip模式解压test.tar.gz,将文件解压至当前目录(/home/cary)
注意:
- -f选项,必须在选项组合体的最后一位
- -z选项,建议在开头位置
- -C现象单独使用,和解压所需的其他参数分开
zip命令压缩文件
语法:zip [-r] 参数1 参数2 ... 参数N
- -r:被压缩的包含文件夹的时候,需要使用-r选项
unzip命令解压文件
语法:unzip [-d] 参数
- -d:指定要解压去的位置,同tar的-C选项
- 参数:被解压的zip压缩包文件