Linux学习笔记-入门基础教程 |
|
旁观者
L21
• 2021-07-12 • 回复 4 • 只看楼主
• 举报
|
目录
学习网站:
一、常用操作系统
- Windows,微软,闭源,包括用户操作系统,服务器操作系统
- Mac, 苹果,闭源,借鉴OpenBSD
- Linux, 开源, 市场占有率最多的服务器操作系统,常见的分支:
乌班图
,Centos
,RedHat
,SUSE
,Debian
,最大的分支是安卓(谷歌研发的Linux分支)
二、Linux发展史
1、 诞生
- Multics项目,MIT、Bell实验室
- 1970年(Unix元年),Unix诞生,在Multics基础上开发,使用汇编,时间戳(从1970-1-1 00:00:00 至今的秒数)
- 1973,汇编对于计算机硬件过于依赖,移植性不好,用C重写了Unix
- 1991, Linux之父:李纳斯,0.0.1版本
2、系统特点
- 开放性(开源)
- 多用户, 允许同时登录多个用户
- 多任务,允许用户同时进行多个操作任务
- 良好的用户界面
- 优异的性能与稳定性
3、Linux分支
乌班图ubuntu
, Centos
, RedHat
, SUSE
, Debian
,最大的分支是安卓(谷歌研发的Linux分支)
三、Linux系统安装
1、虚拟机软件
模拟真实的电脑环境,两个比较出名的产品:Vmware出品的VMware workstation, Oracle出品的virtual Box
保姆式安装教程:黑马程序员linux入门到精通(上部分)_哔哩哔哩_bilibili
2、Linux系统的文件
Linux一切皆文件
目录结构:
- bin: 全称binary(二进制),该目录存储的都是一些二进制文件,文件都是可以被运行的
- dev,主要存放外界设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似Windows下分配盘符)
- etc:主要存储一些配置文件
- home:表示除了root用户以外,其他用户的家目录,(类似Windows下的user/用户目录)
- proc:process,表示进程,该目录存储的是Linux运行时的进程
- root:root用户自己的家目录
- sbin:全称:super binary, 该目录也是存储可执行的二进制文件,但是只有super权限的用户才能执行
- tmp:当系统运行时产生的临时文件会在这个目录中
- usr:存放的是用户自己安装的软件(类似windows 下的program files目录)
- var:存放程序/系统日志文件的目录
- mnt:外接设备需要挂载的时候,就需要挂载到该目录
四、Linux基本指令
1、什么是指令
在Linux终端(命令行)输入的内容,一个完整的指令的标准格式:
指令主题 [选项] [操作对象]
一个指令可以包含多个选项,多个对象
2、 基础指令
ls (list):列出指定目录(默认当前)下的所有文件和目录的名称
ls
ls /root
ls -l // 等价于ll
ls -la // 显示包括隐藏文件(以点开头的文件/目录)
ls -lh // 以可读性较高的形式列出文件和目录
pwd:打印当前工作目录
cd:切换目录
- cd ~ // 快速切换到当前用户的家目录
mkdir:创建目录,
- mkdir 路径(可以是文件夹名称,也可以是包含名称的完整路径)
- mkdir -p 路径 // 创建路径中的所有文件夹
- mkdir 路径1 路径2 … // 创建多个
touch:创建文件
- touch 文件路径
cp:复制文件/文件夹到指定位置
- cp 被复制的文档目录 目的文档目录 // 复制过程中,可以对文件重命名
- 进行文件夹复制时,需要条件 -r 选项 : cp -r ./a/ /home (-r:表示递归复制)
mv:移动文档到新的位置(剪切)
- mv 需要移动的文档路径 目的路径
- 重命名
rm:移送/删除文档
rm [选项] 需要移除的文档
-f :强制删除
-r:递归删除
vim:文本编辑
- vim 文件路径 // 文件不存在则创建
输出重定向:一般命令的输入都会显示在终端,需要将一些命令的执行结果保存到文件中,则需要使用到输出重定向
>: 覆盖输出,会覆盖掉原先的文件内容
>>:追加输出,不会覆盖原始文件内容,
- ls -lh > ls.txt // ls.txt文件可以不存在
cat:
直接打开文件
合并文件:cat 待合并的文件路径1 待合并的文件路径2 … > 合并之后的文件路径 // 合并文件
3、进阶指令
df:查看磁盘空间
- df -h
free:查看内存使用情况
- free -m // 以Mb为单位进行查看
Swap:用于临时内存,当系统真实内存不够用时,可以临时使用磁盘空间来充当内存
head:查看文s件的前n行,如果不指定n,默认显示10行
- head -n 文件路径 // n表示数字,表示显示几行
tail:查看文件的末几行
- tail -n 文件路径 // n为数字,表示显示几行
- tail -f 文件路径 // 查看文件的动态变化
less:以较少的内容进行输出,按辅助功能键(数字+回车、空格键(翻页)+上下方向键)查看更多,按q键退出
wc:统计文件内容信息(包含行数、单词数、字节数)
- swc -lwc 需要统计的文件路径 // lwc // 分别表示行数、单词数、字节数
date:表示操作时间日期(读取,设置),CST(当地时间),UCT,GMT
- date //
- date +%F // 2021-6-28,等价于date “+%Y-%m-%d”
- date “+%F %T” // 2021-06-28 21:18:40,等价于:date “+%Y-%m-%d %H:%M:%S”
- date -d “-1 day” // 一天前的时间,单位:day/year/month/
cal:操作日历
- cal // 输入当前月份日历
- cal -3 // 输入上月+ 本月+下月
- cal -y 年份 // 输入指定年份日历
clear/ctrl + L :清除终端中已经存在的信息, ctrl+L是快捷键方式
管道(|):配合指令使用,用于:过滤、
- 过滤:
- ls | grep a // 过滤出当前目录下包含a的目录,grep主要用于过滤
- 扩展处理
- ls | wc -l // 统计当前目录下的文档数量
4、高级指令
hostname :操作服务的主机名(读取,操作(使用hostname指令操作是临时的))
- hostname // 输入完整主机名
- hostname -f // 输出当前主机名中的FQDN(全限定域名)
id:查看一个用户的一些基本信息(用户id,用户组id,附加组id),如果不指定用户则默认当前用户
用户信息:/etc/passwd, 用户组信息: /etc/group
- id
- id 用户名
whoami :显示当前登录用户名,一般用于shell脚本
ps -ef:主要用于查看服务器的进程信息
- -e :列出全部进程
- -f:显示全部的列
ps -ef | grep 进程名称
- UID:该进程执行的用户
- PID:进程id
- PPID:父级进程ID,如果一个进程的父级进程找不到,则该程序的进程称之为僵尸进程
- C:cpu的占用率
- STIME:进行的启动时间
- TTY:终端设备,发起该进程的设备识别符号,如果显示"?",则表示该进程并不是由终端设备发起
- CMD:该进程的名称或者对应的路径
top:查看服务器的进程占用的资源
- top // 动态显示,按q键退出
- M:按内存(MEM)从高到低进行排序
- P:按CPU使用率
- 1:当服务器拥有多个cpu的时,切换展示各个菜谱的详细信息
- PID:进程id
- USER:该进程对应的用户
- PR:优先级
- VIRT:虚拟内存
- RES:常驻内存
- SHR:共享内存, 进程实际使用内存=常驻内存-共享内存
- S:表示进程的状态 S/R
- %CPU:cpu占用百分比
- %MEM:内存占用百分比
- TIME+: 执行的时间
- COMMAND:进程的名称或路径
du [-sh] :查看目录的真实大小
选项含义:
- -s:只显示汇总的大小
- -h:表示以高可读性的形式显示
find:用于查找文件
find 路径 选项 选项的值
- 选项: -name(按文档名称模糊搜索), -type(按文档类型 (f/d: 文件/文件夹))
find ./ -name *conf | wc -l // 统计当前目录下以conf结束的文件个数
find ./ -type f // 查找当前目录下的所有文件
service:用于控制一些软件的服务启动/停止/重启
- service 服务名 start/stop/restart
kill:杀死进程
- kill 进程id // 需与ps配合使用
- killall 进程名称
ifconfig:操作网卡相关信息,inet是网卡的IP地址
reboot:重启计算机
- reboot
- reboot -w //模拟重启,但是不重启,写关机与开机的日志信息(用于测试日志配置)
shutdown:
- shutdown -h now // 立即关机
- shutdown -h 15:25 “关机提示语” //定时关机
- halt // 立即关机
- init 0 // 立即关机
- poweroff // 立即关机
uptime:输出计算机的持续在线时间(从开机到现在的运行时间)
uname:获取操作系统的相关信息
- uname // 操作系统的类型
- uname -a
netstat -tnlp:查看网络连接状态
- -t:列出tcp协议的连接
- -n:将地址从字母组合转化成IP地址(如localhost -> 127.0.0.1),将协议转化成端口号来显示
- -l:过滤出state字段的值为LISTEN(监听)的连接
- -p:发起连接的进程pid和进程名称
man:手册(manual),包含了Linux中全部命令手册
删除光标前后的内容:
- 前:ctrl+u
- 后:ctrl+k
5、vim编辑器
5.1 三种模式
-
命令模式
-
不能直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴。。)
-
光标操作 按键 光标移动到行首 shift + 6 (^) 光标移动到行尾 shift + 4 ($) 光标移动到首行 gg 光标移动到末行 G 翻屏(向上) ctrl + b /pageUp 翻屏(向下) ctrl + f / pageDown -
复制操作 按键 备注 复制光标所在行() yy 在粘贴的地方按"p" 以光标所在行为准(包含当前),向下复制指定行 数字yy 在粘贴的地方按"p" 可视化复制,按 ctrl + v 进入可视化选择 在粘贴的地方按"p" -
dd: 剪切(删除): // 删除光标所有行, 删除之后下一行上移
数字dd: // 删除光标所在行为准(包含当前行),向下删除指定行,删除后下一行上移
D: // 删除之后当前行空白,即下一行不上移
-
:u : //撤销 ,直接输入“u" 也可以 (undo)
ctrl + r : // 取消之前的操作
-
将光标移动到指定行: 数字G / :数字
下移/上移指定行数: 数字 ↓ / 数字↑
-
-
编辑模式
-
末行模式
-
搜索、替换、保存、退出、撤销、高亮…
-
保存: :w
另存: :w 路径
退出::q
强制: !
搜索/查找: /关键词
在搜索结果中切换: 上一个/下一个: N/n
取消高亮: :nohl / :noh
替换:
:s/搜索的关键词/新的内容 // 替换光标所在行的第一处符合条件的内容
:s/搜索的关键词/新的内容/g // 替换光标所在行的全部符合条件的内容
:%s/搜索的关键词/新的内容 // 替换整个文档的第一处符合条件的内容
:%s/搜索的关键词/新的内容/g // 替换整个文档的全部符合条件的内容
显示行号(临时显示)/取消行号: :set nu / set nonu
着色: :syntax on/off
-
调用外部命令: : ! 外部命令
-
5.2 切换模式
5.3打开文件的方式
-
vim 文件路径 // 打开指定文件
-
vim +数字 文件路径 //将光标移动到指定行(不要省略符号"+") vim +3 /etc/passwd
-
vim +/关键词 文件路径 // 高亮显示关键词(不要省略符号"+") vim +/login /etc/passwd
-
vim 文件路径1 文件路径2… // 同时打开多个文件
-
%a:当前正被打开的文件
#:上一个打开的文件
:open 文件名: 切换到指定文件
:bn : 切换到下一个文件
:bp: 切换到上一个文件
-
5.4 扩展
-
vim的配置
-
异常退出
终端关闭、服务器断电等
解决方法:将交换文件删除即可, 文件名.swp
-
别名机制
依靠一个别名映射文件:; ~/.bashrc
- 退出方式
:x // 保存退出,如果文件没有被修改,使用x退出,文件的修改时间不会被修改,而:wq则会
五、Linux自有服务
操作系统内置的服务
1、运行模式(运行级别)
- init 进程,进程id是1,该进程对应的配置文件:/etc/inittab
- 0:关机级别
- 1:单用户模式
- 2:多用户模式,不带NFS(network file system)
- 3:完整的多用户模式,不带桌面
- 4:保留模式
- 5:完成的图形化界面模式
- 6:重启阶级别
不要把运行级别设置成0和6
与级别相关的几个命令:
init 0 // 关机
init 3 // 切换到不带桌面的模式,需要超级管理员权限(临时切换,重启之后复原)
systemctl set-default multi-user.target #设置成上述模式3 systemctl set-default graphical.target #设置成上述模式5
init 6 // 重启
2、用户与用户组
- 多用户多任务操作系统
- 向系统管理员申请账号,账号可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统的访问
三个文件:
/etc/passwd //存储用户关键信息
/etc/group // 存储用户组关键信息
/etc/shadow // 存储用户的密码信息
2.1 用户管理
2.1.1 添加用户
useradd 选项 用户名
- 常用选项:
- -g:指定用户的用户主组,可以是用户组id/组名
- -G:指定用户的用户附加组,可以是用户组id/组名
- -u:uid(用户的标识符),系统默认从500之后按顺序分配uid
- -c:添加注释,可解释用户的用途
用户名:密码(占位):用户id:用户组id(主组):注释:家目录:解释器shell
- 解释器shell:等待用户进入系统,输入指令后,该解释器会收集用户输入的指令传递给内核处理
/etc/group文件: 上图中为用户所属附加组
2.1.2 修改用户
usermod 选项 用户名
- 常用选项
- -g:指定用户的用户主组,可以是用户组id/组名
- -G:指定用户的用户附加组,可以是用户组id/组名
- -u:uid(用户的标识符),系统默认从500之后按顺序分配uid
- -l: 修改用户名
- usermod -l 新用户名 旧用户名
- -s:设置用户解释器shell,例如:usermod -s /sbin/nologin test(设置用户test不允许登录系统)
2.1.3 设置密码
创建用户未色湖之密码前都处于锁定状态
passwd 用户名
su [用户名] (switch user): 切换用户, 不指定则切换到root
2.14 删除用户
userdel 选项 用户名
- 常用选项
- -r: 删除用户的同时,删除其家目录
== 除passwd外, 其他命令都需root权限
2.2 用户组管理
- 每个用户都有一个用户组
- 用户组在创建用户时同时创建, 如果不指定用户的用户组, 则默认用户组与用户同名,
用户组名: 密码(占位): 用户组id: 组内用户名
- 组内用户名: 表示附加组是该组的用户名称
2.2.1 用户组添加
groupadd 选项 用户组名
- 常用选项
- -g: 设置用户组id, 默认从500开始递增
2.2.2用户组修改
groupmod 选项 用户组名
- 常用选项
- -g: 设置用户组id, 默认从500开始递增
- -n: 修改用户组名称
- groupmod -n 新名字 旧名字
2.2.3 用户组删除
groupdel 用户组名
如果组是某个用户的主组, 则不允许删除组
3 网络设置
- **网卡配置文件路径: **
/etc/sysconfig/network-scripts/
ONBOOT: 是否开机启动
BOOTPROTO: IP地址分配方式, DHCP表示动态主机分配协议, static表示静态地址
HWADDR: MAC地址
- 网卡重启
service network restart # 有些Linux分支可能没有
- /etc/init.d: 服务的快捷方式目录
/etc/init.d/network restart
扩展1:
- 创建文件的快捷链接(软链接)
ln -s 文档目录 目的 #例: ln -s /etc/sysconfig/networ-scripts/ ~/
扩展2:
- 停止单个网卡: ifdown 网卡名
- 开启单个网卡: ifup 网卡名
扩展3:
- pscp远程文件传输
- 下载: pscp 选项 用户名@主机地址:资源目录 windows本地路径
- 上传: pscp 选项 资源路径 用户名@主机地址:远程路径
4 设置主机名
- 临时设置主机名, 需切换用户后生效
hostname tmp
- 永久设置, /etc/sysconfig/network , centos7在/etc/hostname
5 chkconfig
开启启动项管理服务
0-6表示运行级别
- 删除服务
chkconfig --del 服务名
- 添加开机启动服务
chkconfig --add 服务名
- 设置服务在某个级别下开机启动/不启动
chkconfig --level 运行级别 服务名 on/off
6 ntp服务
对计算机的时间同步管理
- 一次性同步(手动同步)
ntpdate 时间服务器的域名或地址
- 设置时间同步服务, 服务名:
ntpd
7 防火墙
防范网络攻击, 软件防火墙 硬件防火墙
iptables: 7之下
firewalld: centos7.x
- iptables
- service iptables status (iptables -L -n)
prot : 协议
- 设置防火墙规则
-A : add, 添加规则
INPUT: 进站请求
OUTPUT: 出站请求
-p : 协议
–dport: 端口号
-j: accept/reject
/etc/init.d/iptables save
8、rpm管理
类似于Windows上的"软件管家"产品,主要作用是对Linux服务器上的软件包进行管理操作,查询、卸载、安装。
- 查询某个软件的安装情况
rpm -qa | grep 软件名 # -q: query, -a: all
- 卸载软件
rpm -e 软件名
rpm -e 软件名 --nodeps // 当存在依赖关系时,可强制卸载
- 安装
软件包的获取方式:
- 官网下载
- 从光盘(镜像文件)中读取
- 查看块状(光盘、U盘等与磁盘有关的设备)设备的信息:
- lsblk (list block devices)
name:名称
size:盘大小
type:类型
mountpoint:挂载点(类似windows下的盘符)
扩展:光盘的挂载和解挂:
-
解挂
umount 当前设备的挂载点(mountpoint) # 相当于U盘在Windows上弹出了但是没有拔出
-
挂载
mount 设备的原始地址 要挂载的位置路径 # 原始地址:统一都在/dev下,根据命令:lsblk列出的大小确定具体的name值,组成原始地址,例如上图中:/dev/sr0 # 挂载的位置路径:挂载的目录一般都在/mnt下
rpm -ivh 软件包
#-i: install
#-v: 显示进度条
#-h: 表示以”#“号形式显示进度条
rpm -Uvh 软件包 # 更新
rpm -qf 文件路径 #查询文件属于那个软件包
9 cron/crontab计划任务
指定时间点执行任务(定时任务)
crontab 选项
#选项:
#-l :list,列出指定用户的计划任务列表
#-e : edit,编辑指定用户的计划任务列表
#-u : user, 指定用户,不指定表示当前用户
#-r : remove
- 编辑计划任务
语法格式规则,以行为单位,一行则为一个计划:
分(0~59) 时(0~23) 日(1~31) 月(1~12) 周(0~7,0和7表示周日) 需要执行的命令,例如: 0 0 * * * reboot // 每天0点0分重启服务器
- 四个符号:
- *:区间类的任意值
- -:连续区间表达式,例如:1号到7号: 1-7
- /:每多少个,例如:每10分钟: */10
- ,:多个取值,例如:1点,4点,5点: 1,4,5
crontab权限问题
超管可以配置某些用户不允许设置计划任务(黑名单),配置文件:/etc/cron.deny,将用户配置在此配置文件中即可
白名单,配置文件/etc/cron.allow (文件本身不存在,需自行创建)
六、Linux权限管理
3个身份: owner、group、others
- owner:文件所有者,默认为文档的创建者
- group:与文件所有者同组的用户
- others:其他人(相对于所有者)
- root:超级用户(神)
3种权限: read、write、execute
1、Linux的权限介绍
文件类型 : 常见取值: d:文件夹, -:文件, l:软链接
2、权限设置
chmod 选项 权限模式 文档
- 常用选项:
- -R:递归设置权限(当文档是文件夹时可能需用到)
- 权限模式:该文档需要设置的权限信息
- 文档:操作者可以是root用户或文档的所有者
提权漏洞
2.1 形式
- 字母形式:
如果在设置权限时不指定给谁设置,则默认给所有用户设置
=:将权限设置成具体的值
例如:
chmod u+x,g+rx,o+r aaa.txt
chmod u=rwx,g=rx,o=r aaa.txt
- 数字形式
rwx : 421
删除或改变(重命名、移动位置)一个文件,不是看文件有没有对应的权限,而是看文件所在的目录有无写权限,如果有才可以删除
3、属主与属组设置
属主:所属的用户
属组:所属的用户组
- chown
更改文档的所属用户
chown -R username 文档路径
# -R 递归更改
- chgrp
更改文档的所属用户组
chgrp -R groupname 文档路径
扩展
-
通过chown也可以更改文档所属组
chown -R username:groupname 文档路径
4、sudo
switch user do,sudo可以让管理员(root)定义某些特殊命令谁可以执行
- 默认sudo中是没有除了root之外用户的规则
- 配置文件:/etc/sudoers
/etc/sudoers使用root用户打开只读,使用命令visudo
(此命令为系统自带)打开此文件
root:用户名;如果时用户组,写成:%组名
ALL:表示允许登录的主机(地址白名单)
(ALL):表示以谁的身份区执行
ALL:表示当前用户可以执行的命令,多个命令可以使用英文 ","分割
- 添加sudo规则
添加sudo规则时,写命令的完整路径,路径使用命令
which
查看,添加规则需使用
- test ALL=(ALL) /user/sbin/useradd,/user/sbin/passwd,!/user/sbin/passwd root // test用户可以添加用户,修改密码(但是不允许修改root用户的密码:!/user/sbin/passwd root)
- **添加好规则后,命令前加上
sudo
即可执行命令
$ sudo useradd test0708 //此时需要输入的是登录用户的密码,而不是root的密码
- sudo -l // 查看自己拥有的特殊权限
七、Linux网络基础
网络分类
局域网(local area network LAN)
城域网(meterpolitan area network MAN)
广域网(wide area network WAN)
所有者
公文接入方式:计算机的IP地址是Internet上的非保留地址
私网接入方式
1、IP地址
internet protocol,计算机网络相互连接进行通信而涉及的协议
分类:
- 公有地址
由inter NIC(internet network information center)负责分配,通过它直接访问因特网
- 私有地址
机构内部使用
A类:10.0.0.0—10.255.255.255
B类:172.16.0.0—172.31.255.255
C类:192.1680.0—192.168.255.255
2、网络相关命令
- ping
检测当前主机与目标主机之间的连通性(有些服务器禁ping,所以不是100%准确)
- netstat
查看网络的连接信息,
- netstat -tnlp
- netstat -an // 列出全部
- traceroute
查找当前主机与目标主机之间的所有网关(路由器,会给沿途各个路由器发送icmp数据包,路由器可能会不给相应)
该命令不是内置命令,需安装
扩展:在Windows下类似的命令:tracert
- arp
地址解析协议(address resolution),根据IP地址获取MAC地址的协议
- 首先查看本机mac地址缓存中有没有目标主机的mac地址,有就使用,没有就发出一个广播包,拥有该IP地址的主机的回应信息包括mac地址;如果目标主机不在本地子网中,arp解析到的mac地址是默认网关的mac地址
- arp -a // 查看本地缓存
- arp -d 目标主机 // 删除本地缓存
arp攻击(arp欺骗)
- tcpdump
抓包,抓取数据表
- tcpdump 协议 port 端口
- tcpdump 协议 port 端口 host 地址
- tcpdump -l 网卡设备名
八、项目上线
1、服务器
真实服务器
云服务器
- 阿里云
- 腾讯云
- 知道创宇(加速乐)
- 华为云
- 盛大云
- 新浪云
- 亚马逊云
2、域名解析
将域名绑定到一个服务器地址的操作
DNS:domain name server,用于将域名转化成IP地址的服务器
九、Shell基础
Shell(外壳)是一个用c语言编写的程序,它是用户使用Linux的桥梁,既是一种命令语言,又是一种程序设计语言。
脚本:文字命令,常见的脚本:JavaScript,vbscript,asp,jsp,php,sql,lua,python,ruby,javafx,shell,perl
shell种类:
- linux内置的脚本
- ash、bash、ksh、csh、zsh
1、shell入门
- 编写规范
代码规范:
- #!/bin/bash // 告知系统当前脚本要使用的解释器
文件命名规范:
- 文件名.sh // .sh是Linux下bash shell的默认后缀
使用流程:
创建.sh文件 // touch/vim
编写shell代码 //
执行shell脚本 // 需有执行权限
# echo,输出内容如果包含字母和符号(不包含变量),需要用引号括起来,纯数字可以不包
2、shell进阶
2.1 变量
定义形式:变量名=变量值(等号左右不能有空格), 如count=2
使用形式:$变量名,如:echo $count
双引号能识别变量,如echo “名字是:$str”,也能实现转移,如要乘号(*)
单引号不能识别,原样输出,单引号不能转义
在脚本中需要执行一些指令,并把执行的值赋值给变量时,需要使用”反引号“将执行包括,如:
- 只读变量
readonly 变量名
- 接受用户输入
read -p 提示信息 变量名
- 删除变量
unset 变量名
2.2 条件判断语句
-
语法1:
if condition then command.. fi
语法2:
if condition then command1 else command2 fi
语法3:
if condition then command1 elif condition2 then command2 else command3 fi
2.3 运算符
原生bash不支持算数运算,可以通过其他命令来实现,例如:
awk
和expr
expr :能完成表达式的求值运算,例如:
- val=
expr 2 + 2
注意:
- 运算符之间要有空格,例如2+2是错的,要写成:2 + 2
- 完整表达式要被``包含(上面的例子被markdown语法覆盖了)
- 关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
-gt:great than
-lt:less than
-ge:great than or equal
-le: less than or equal
- 逻辑运算符
- 字符串运算符
- 文件测试运算符
检测Linux文件的各种属性
扩展
Linux shell中如何处理tail -100 access.log命令选项
- 调用tail指令
- 系统内核把后续选项传递给tail
- tail打开指定文件
- 取出最后10行
自己写的shell向内置命令一样传递一些选项,如./test.sh a b c
- 在脚本中使用$1表示a(第一个选项), $2表示b,以此类推
扩展2:
解压:
- tar -zxvf *.tar.gz -C 指定解压目录 压缩包中指定的文件
- 选项:
- -z:通过gzip指令处理文件,–gzip或–ungzip
- -x:从文件中还原文件,即解压
- -v:显示操作过程
- -f:指定一个文件,必填
- -j:支持bzip2解压文件,*.tar.bz2
压缩:
- tar -zcvf *.tar.gz
- 选项:
- -c 建立压缩
只查看解压:
- tar -ztvf *.tar.gz
十、软件安装
- 源码包安装
配置(config/configure/bootstrap)→ 编译(make/bootstrapd) → 安装 (make/bootstrapd install)
- 配置:指定软件安装目录,依赖路径,不需要可选依赖,配置文件路径,通用数据存储路径等
- 指定安装路径:–prefix=路径
- 需要依赖的路径:–with-PACKAGE名=包所在的路径(源码包路径)
- 不需要依赖:–without-PACKAGE名
- 二进制包(rpm)
rpm -ivh 软件包
- yum等傻瓜式安装
简单快捷,但不能自定义,需要联网
yum list [installed] # 列出所有[已安装的]
yum search #搜索指定关键词的包
yum [-y] install 包名
# -y: 表示安装过程过不需要确认
yum [-y] update [包名] # 不指定包,更新所有
yum [-y] remove 包名
- 联网下载软件包命令:
wget
wget 线上下载链接地址
-A:表示全部数据库
- mysql数据还原
还原全部数据库
mysql命令行source方法
- source 备份的文件路径
系统命令行
- mysql -uroot -p123456 < 备份的文件路径
还原单个数据库
mysql命令行source方法
- 选择数据库:use 库名
- source 备份的文件路径
系统命令行
- mysql -uroot -p123456 库名 < 备份的文件路径
来源:https://blog.csdn.net/ex_tang/article/details/118642226
声明:本文系转载文章,仅供学习交流使用,侵权请联系删除