一、初始Linux
1.1、硬件和软件
计算机由硬件和软件组成
-
硬件:计算机系统中由电子,机械和光电元件组成的各种物理装置的总称
-
软件:是用户和计算机硬件之间的接口和桥梁,用户通过软件与计算机交流,而操作系统就是软件的一类
1.2、Linux内核
通过:The Linux Kernel Archives下载Linux内核
Linux系统的组成:
-
Linux系统内核:提供系统最核心的操作,调度CPU,调度内存等
-
系统级应用程序:可以理解为出厂自带的程序
1.3、虚拟机安装
VMware虚拟机下载地址:Windows VM | Workstation Pro | VMware
win+r输入ncpa.cpl打开网络适配器
下载CentOS操作系统镜像:CentOs官网下载,CentOS国内镜像下载_centos镜像下载官网-CSDN博客
1)虚拟机中最小化安装centos系统后网关默认是关闭的,无法上网ip addr可以看到网络信息:
-
lo:表示本机回环地址
-
Ens33:可以看到网卡信息,没有IP地址,是因为没有启动网卡
-
网卡配置信息地址:/etc/sysconfig/network-scrips/ifcfg-ens33
-
设置网络配置信息中的ONBOOT将其值设置为yes---下次启动系统会启动网卡
-
重启网络服务:systemctl restart network
2)配置静态IP地址:/etc/sysconfig/network-scrips/ifcfg-ens33中添加以下信息
-
IPADDR = 你要设置的静态IP地址
-
NETMASK = 设置子网掩码
-
GATEWAY = 网关地址(一般IP地址最后为.1就是网关,虚拟机中安装查看虚拟机)
-
DNS1 = 8.8.8.8(dns服务器可以配置多个)
注意:BOOTPROTO = dhcp这种分配IP的方式配置静态IP不会生效,要改为static分配方式,保存重启网络服务
1.4、远程连接
Linux系统自带ssh远程连接软件,Windows系统要自行下载
1)图形化和命令行
图形化:使用操作系统提供的图形化页面,已获得图形化反馈的形式去使用操作系统
命令行:使用操作系统提供的各类命令,已获得字符反馈的形式使用操作系统
2)FinalShell---使用第三方软件解决不方便问题
我们使用VMware可以得到LInux虚拟机,但在VMware中操作Linux的命令页面不太方便,主要是:
-
内容的复制,粘贴跨域VMware不方便
-
文件的上传,下载跨越VMware不方便
-
也就是和Linux的各种交互不方便
FinalShell下载地址:http://www.hostbuf.com/downloads/finalshell_install.exe
3)或启动ssh服务
-
检查ssh服务是否安装
ssh
-
ssh服务的安装
sudo apt-get install openssh-service
-
启动ssh服的服务
sudo service ssh start
-
确认服务是否在运行
ps -ef | grep ssh
-
连接
ssh '用户名'@'ip地址'
二、Linux基础命令
2.1、Linux的目录结构
Linux的目录结构是一个树形结构,Linux没有盘符的概念,只要一个根目录(/)所有文件都在它下面
Linux路径的描述方式:
-
在Linux系统中,路径之间的层级关系,使用:/ 来表示
-
在windows系统中,路径之间的层级关系使用:\ 来表示
主要的文件目录:
-
bin:该目录中存放二进制文件,文件都可以被运行
-
dev:该文件主要存放外接设备
-
etc:该目录主要存放一些配置文件
-
proc:该目录中存放的是Linux运行时的进程
-
sbin:存放可执行的二进制文件,存放的问价只要超级管理员才可以执行
-
tmp:存放临时文件
-
usr:存放用户自己按装的软件
-
var:存放软件和系统的日志文件
2.2、Linux命令基础
1)命令的通用格式:
command [ -options ] [ parameter ]
-
command :表示命令本身
-
-options:表示命令的一些选项,可以通过选项控制命令的行为细节[可选,非必填]
-
parameter:表示命令的参数,多数用于命令的指向目标等[可选,非必填]
示例:
1)ls -l /home/it ---->ls是命令本身,-l 是选项,/home/it是参数,意思是以列表的形式,显示/home/it目录内的内容 2)cp -r text1 text2 ---->cp是命令本身,-r是选项,text1和text2是参数, 意思是复制文件夹text1成为text2
2)查看目录命令:
命令 | 说明 |
---|---|
ls | 查看当前路径下的目录信息 |
tree | 以树状方式显示目录 |
pwd | 查看当前目录路径 |
clear | 清空终端内容 |
ctrl + shift + "+" | 放大窗口字体 |
ctrl + "-" | 缩小窗口字体 |
3)HOME目录和工作目录
-
工作目录:Linux系统的命令行终端在启动时,会默认加载:当前用户登录的HOME文件作为当前工作目录
-
HOME目录:路径在:/home/用户名
4)切换目录命令cd
命令 | 说明 |
---|---|
cd 目录名称 | 切换到指定目录 |
cd ~ | 切换到当前用户的主目录 |
cd .. | 切换到上一级目录 |
cd . | 切换到当前目录 |
cd - | 切换到上一次目录 |
5)创建,删除文件命令
命令 | 说明 |
---|---|
touch 文件名 | 创建指定文件 |
mkdir 目录名 | 创建指定文件夹 |
rm 文件名 | 删除指定文件 |
rmdir 目录名 | 删除空文件夹 |
注意:rmdir 只能删除空文件夹,如果要删除非空的文件夹,使用rm 文件夹名 -r 其中-r表示递归删除文件夹和文件中的内容
注意:以点开始创建的文件是隐藏文件
6)复制,移动文件命令
命令 | 说明 |
---|---|
cp | 复制(拷贝)文件及文件夹 |
mv | 移动文件及文件夹,重命名 |
格式:
-
拷贝文件:cp 要复制的文件路径及文件名 复制到的文件路径及文件名
-
拷贝文件夹: cp 要复制的文件夹路径及文件夹名 复制到的文件夹路径及文件夹名 -r
-
拷贝文件夹到另一文件夹中:cp 要拷贝的文件夹路径 拷贝到的文件夹路径
-
移动文件:mv 要移动的文件或文件夹路径 移动到的文件或文件夹路径
-
重命名:mv 文件或文件夹名 新文件或文件夹名
2.3、命令选项
1)ls命令选项
命令选项 | 说明 |
---|---|
-l | 以列表方式显示,默认是字节 |
-h | 智能的显示文件大小 |
-a | 显示隐藏文件和隐藏文件夹 |
--full-time | 格式化的显示时间信息 |
-t | 根据时间排序文件 |
-f | 显示文件后缀,/结尾文件夹,.结尾可执行文件 |
-d | 显示文件夹本身信息,不显示内部的 |
-S(大写) | 根据文件大小排序 |
2)mkdir命令选项
-
-p 创建所依赖的文件夹(创建多级文件夹)
如:mkdir aa/bb/cc -p
3)rm命令选项
命令选项 | 说明 |
---|---|
-i | 交互式提示(提示删除) |
-r | 递归删除目录及内容 |
-f | 强制删除,忽略不存在的文件,无需提醒 |
4)cp命令选项
命令选项 | 说明 |
---|---|
-i | 交互式提示(提示是否覆盖相同的文件) |
-r | 递归拷贝目录及内容 |
-v | 显示拷贝后的路径描述 |
5)mv命令选项
命令选项 | 说明 |
---|---|
-i | 交互式提示(提示是否覆盖相同的文件) |
-v | 显示移动后的路径描述 |
2.4、wc命令
可通过wc命令统计文件行数,单词数量等
wc [-c -m -l -w] 文件路径
-
-c :统计bytes数量
-
-m :统计字符数量
-
-l :统计行数
-
-w :统计单词数量
2.5、echo与反引号
可以使用echo命令在命令行中输入指定内容
1)echo语法:echo 要输出的内容
注意:如果带有空格或者其他特殊符号,建议使用双引号包围,echo只要一个参数,不用双引号不影响
2)反引号(`):
直接输入echo pwd 会将pwd作为内容输出,使用反引号包围,可以将其内容作为命令执行
2.6、systemctl命令
systemctl [start | stop | status | enable | disable] 服务名称
-
start:启动
-
stop:关闭
-
status:查看状态
-
enable:开启开机自启
-
disable:关闭开机自启
2.7、cut命令
在文件的每一行中提取片段
cut [参数] [数值区间] 文件名
参数 | 说明 |
---|---|
-b(-c) | 以字节(字符)为单位分割 |
-n | 取消分割多字节字符,与-b一起使用 |
-d | 自定义分割符,默认以tab为分割符 |
-f | 与-d一起使用,指定显示第几个,后更数值区间 |
数值区间 | 说明 |
---|---|
n | 第n个字符,字节或字段,从1开始计算 |
n- | 从第n 个开始到行尾 |
n-n | 从第n个开始到第n个 |
-n | 从行头第一个到第n个 |
案例:
1、截取每一行的第4个字符 cut -c 4 文件名 2、截取每一行的4到6个字符 cut -c 4-6 文件名 3、截取每一行的第5个和第7个字符 cut -c 5,7 文件名 4、指定分割符进行截取 cut -d '分割符' -f 区间范围 文件名
2.8、sort命令
sort [选项] 文件名
选项 | 说明 |
---|---|
-n | 根据字符串数值比较(第一个字符) |
-r | 逆序输出排序结果 |
-u | 对排序结果进行去重 |
-t | 指定分割符号 |
-k | 指定区域 |
案例:
1、根据文件第一个字符进行排序,默认从小到大 sort -n 文件名 2、对文件结果进行翻转 sort -nr 文件名 3、对排序结果进行去重 sort -u 文件名 4、指定分割符,指定区域进行排序 sort -t '.' -k 数值区域 文件名
2.9、uniq命令
uniq命令可以输出重复的行,常用sort结合使用
uniq [选项] 文件名
选项 | 说明 |
---|---|
-c | 统计重复项出现的次数进行显示 |
-d | 只输出重复行 |
-u | 只显示不重复的行 |
案例:
1、去除连续的重复行 uniq 文件名 2、结合sort去重更准确 sort -n 文件名 | uniq 3、结合sort去重更准确,并显示重复的次数 sort -n 文件名 | uniq -c 4、只显示重复的行,并统计次数 sort -n 文件名 | uniq -c -d 4、只显示不重复的行,并统计次数 sort -n 文件名 | uniq -c -u
2.10、curl和wget命令
发送网络请求命令或下载网络文件
格式:curl [-o] url 格式:wget [-b] url
-
-o:用于下载文件,当URL是下载链接时,可以使用此选项进行保存文件
-
-b:可选,后台下载,会将下载日志写入当前工作目录的wget-log文件中
-
url:要发起请求的网络地址
向cip.cc发送网络请求,获取主机公网IP和信息
curl cip.cc
三、高级命令
3.1、重定向命令
重定向:也称输出重定向,把在终端执行命令的结果保存到目标文件
命令 | 说明 |
---|---|
> 文件名 | 如果文件存在,会覆盖原有的文件内容,相当于文件操作中的w模式 |
>> 文件名 | 如果文件存在,会追加写入文件末尾,相当于文件操作中的a模式 |
列如:ls > text.txt 表示将ls操作后显示的内容写入到text.txt文件中
3.2、查看文件内容命令
命令 | 说明 |
---|---|
cat | 查看小型文件 |
more | 查看大型文件 |
| | 管道,一个命令的输出可以通过管道作为另一个命令的输入,相当于容器 |
tac | 从后往前查看内容(与cat相同) |
less | 与more用法相同 |
使用格式:使用的命令 文件名
功能 | 说明 |
---|---|
查看文件内容 | cat 文件名 |
多个文件合并 | cat 文件1 文件2 > 合并后的文件 |
交互式编辑或追加内容 | cat >> 文件名 << EOF(写入以EOF结尾回车保存) |
清空文件内容 | > 文件名 |
more命令的使用:
-
回车:显示下一行信息
-
b:显示上一屏信息
-
f:显示下一屏信息
-
q:退出
管道格式:左边的内容作为右边的输入
-
统计文件中指定关键字的行数:
cat 文件名 | grep 关键字 | wc -l
-
统计文件中指定关键字的单词数:
grep 关键字 文件名 | wc -w
3.3、查找文件内容命令
命令 | 说明 |
---|---|
grep | 查找,搜索文件内容 |
tail | 查看文件尾部内容 |
head | 查看文件头部内容 |
使用格式:grep 要查找的内容 要查找的地方
1)grep命令选项:
-
-v :显示不包含匹配文本的所有内容
-
-n:显示匹配行号
-
-i:忽略大小写
2)grep命令结合正则表达式:
正则表达式 | 说明 |
---|---|
^ | 以指定字符串开头 |
$ | 以指定字符串结尾 |
. | 匹配一个非换行的任意字符 |
如:grep ^h a.txt 表示在a.txt文件中找以h开头的内容
3)tail和head命令:
# 格式:tail [-f -num] 文件路径 # 格式:head [-f -num] 文件路径
-
-f :表示持续跟踪-----只有tail有这个参数head没有
-
-num :表示查看尾部多少行,默认10行
3.4、软连接
1)软连接:类似于Windows下的快捷方式,当一个源文件的目录层级很深,想要方便使用就可以创建一个软连接
命令 | 说明 |
---|---|
ln -s | 创建软连接 |
ln -s 文件路径 创建的软连接名称
注意:创建软连接时,建议使用绝对路径,如果发生移动,创建的软连接方式可能会失效
3.5、查找文件命令
命令 | 说明 |
---|---|
find | 在指定目录下找到符合条件的文件(名称查询) |
which | 查看所使用的命令位置 |
which格式:which 要查找的命令
1)find命令选项:
-
-name:根据文件名查找文件
# 格式:find 起始路径 -name “被查找的文件名”
-
-size:根据文件大小查询文件
# 格式:find 起始路径 -size +/-文件大小 # 更目录下查找小于10KB的文件: find / -size -10k # 根目录下查找大于100MB的文件: find / -size +100M # 根目录下查找大于1GB的文件: find / -size +1G
注意:k(小写)表示KB,M表示MB,G表示GB
2)通配符:是一种特殊的语句,不是正则表达式,主要有星号(*)和问号(?),用来模糊搜索文件
通配符 | 说明 |
---|---|
* | 代表0个或多个任意字符 |
? | 代表任意一个字符 |
[abc] | 表示abc中的任意一个 |
[a-z] | 表示a到z中的任意一个 |
3.6、压缩和解压缩
1)压缩格式:
-
.gz:压缩包后缀(时间快,压缩的不小)
-
.bz2:压缩包后缀(压缩的小浪费时间)
2)tar命令:
命令 | 说明 |
---|---|
tar | 压缩和解压缩命令 |
3)tar命令选项说明:
tar命令选项 | 说明 |
---|---|
-c | 创建打包文件 |
-v | 显示打包或者解包的详细信息 |
-f | 指定文件名称,必须放到所有选项后面 |
-z | 压缩为.gz格式 |
-j | 压缩为.bz2格式 |
-x | 解压缩 |
-C | 解压缩到指定目录 |
3.7、软件的安装与卸载
yum [-y] (install | remove | search) 软件名称 apt [-y] (install | remove | search) 软件名称
1)软件安装:
安装方式 | 格式 |
---|---|
Ubuntu在线安装 | sudo apt install 安装包名 |
CentOS在线安装 | sudo yum install 安装包名 |
注意:apt-get默认从国外服务器下载软件
2)软件卸载:
卸载方式 | 格式 |
---|---|
Ubuntu在线卸载 | sudo apt remove 包名 |
CentOS在线卸载 | sudo yum remove 包名 |
注意:linux系统和本机软件的操作,rz,sz命令通过yum install lrzsz安装此命令,rz进行文件上传,sz进行文件下载
3.8、vim命令
vim:是一款强大的文本编辑器
格式:vim 文件路径 ------- 如果文件不存在,则编辑新文件,如果文件存在,则编辑已有文件
1)vim的工作模式:
-
命令模式、编辑模式、末行模式
注意:vim打开进入的是命令模式,编辑模式和末行模式不能直接进行切换,都要同过命令模式切换
切换方式:
-
命令模式---编辑模式:输入i
-
编辑模式---命令模式:ESC
-
命令模式---末行模式:输入:(冒号)
-
末行模式---命令模式:ESC
2)末行模式命令:
-
:w -----保存,没有退出
-
:wq ------保存退出
-
:x -------保存退出
-
:q! ------强制退出,不保存
-
:set nu-----显示行号
-
:set paste-----设置粘贴模式,从外部粘贴的内容格式不变
3)命令模式快捷命令:
在命令模式下直接输入 | 描述 |
---|---|
a | 在当前光标之后进入输入模式 |
o(O) | 当前光标的下(上)一行进入输入模式 |
/ | 进入搜索模式 |
n(N) | 向下(上)继续搜索 |
dd | 删除光标所在行的内容 |
ndd | 删除当前光标向下n行内容 |
yy | 复制当前行 |
nyy | 复制光标向下的n行内容 |
p | 粘贴 |
gg(G) | 跳到首行(行尾) |
dG | 从当前行开始向下全部删除 |
dgg | 从当前行开始向上全部删除 |
d$(d0) | 当前光标开始,删除到本行结尾(开头) |
3.9、端口netstat命令
Nmap:查看端口的占用情况--不是系统自带的程序,如果没有需要安装yum -y install nmap
语法:nmap 被查看的IP地址
Netstat:查看指定端口的占用情况
语法:netstat -anp | grep 端口号
# 查看所有的端口: netstat -tunlp # 查看指定服务的端口信息 netstat -tunlp | grep "nginx"
3.10、进程操作
1)查看进程:
# 查看所有的进程信息: ps -ef # ps是检查进程的命令,-ef表示参数, 此命令查看所有的进程信息 # 查看指定应用的进程信息 ps -ef | grep 'nginx'
显示的进程信息从左到右依次是:
-
UID:进程所属的用户
-
PID:进程的进程号ID
-
PPID:进程的父ID(启动此进程的其它id)
-
C:此进程的CPU专用率
-
STIME:进程的占用时间
-
TTY:启动此进程的终端序号,如果显示?表示非终端启动
-
T IME:进程占用cpu的时间
2)关闭进程:
格式:kill [-9] 进程ID
选项-9表示强制关闭进程,不使用此选项会向进程发送信号要求关闭,但能否关闭需要看进程自身的处理机制
四、Linux用户和权限
4.1、获取管理员权限命令
-
whoami命令-------查看当前用户
-
hostname -------显示当前主机的主机名
-
logout ------退出当前用户
-
ifconfig------查看ip地址,如果无法查看,需要下载net-toos
sudo命令使用:
centOs切换到root用户: su - root
命令 | 说明 |
---|---|
sudo -s | 切换到root用户,获取管理员用户 |
sudo | 某个命令执行需要获取管理员权限可以在命令前加上sudo |
为普通用户添加sudo认证:
-
切换到root用户,执行visudo命令,或者通过vi编辑器打开:/etc/sudoers
-
在文件尾部添加:用户名 ALL = (ALL) NOPASSWD:ALL
4.2、用户及用户组
1)用户组:用户组的创建和删除需要在root权限下执行
-
创建用户组:
groupadd 用户组名
-
删除用户组:
groupdel 用户组名
2)用户管理:在root用户下执行
-
创建用户:
useradd 用户名 [-g -d]
选项 说明 -g 要加入的用户组 如果不指定用户组默认创建同名的用户组 -d 指定用户的home路径 不指定默认在/home/用户 -
删除用户:
userdel [-r] 用户名
选项 说明 -r 删除用户的同时删除home目录 -
查看用户组:不指定用户名表示查看当前用户
id [用户名]
-
查看所有用户和用户组:
getent passwd genent group
-
修改用户所属的组---将指定的用户名加入指定的用户组
usermod -aG 用户组 用户名
4.3、修改权限信息
1)chmod命令------修改文件及文件夹的权限信息
chmod [-R] 权限 文件或文件夹
选项 | 说明 |
---|---|
-R | 表示对文件夹中的全部内容做同样的操作 |
示列:将文件夹test以及文件夹内的全部内容权限设置为:rwxr-x--x
注意:u表示用户权限,g表示用户组权限,o表示其他用户去权限
chmod -R u=rwx,g=rx,o=x test chmod -R 751 test
权限的数字序号:r代表4,w代表2,x代表1
2)chown命令-----修改文件及文件夹所属的用户和用户组
chown [-R] [用户] [:] [用户组] 文件或文件夹
示列:
-
将hello.txt所属用户改为root---只修改文件的用户
chown root hello.txt
-
将hello.txt所属用户组修改为root---只修改文件的用户组
chown : root hello.txt
-
将hello.txt所属用户修改为root,所属组修改为ft
chown root:ft hello.txt