韩顺平linux学习笔记
韩顺平linux学习笔记
40 组
linux系统权限是分给三个对象的:
所有者,所作组,其他组
哪里可以看到权限呢?
在linux中输入ls -l

具体图解权限介绍

第0位:
l链接(类似于快捷方式)
d目录
c 字符设备文件character device file(键盘,硬盘:按顺序一个一个读取)
b 块设备文件block device file(u盘,硬盘sda:可不按顺序一块一块读取)->sda(sd:scsi disk a:顺序,可以也是bc…)
-普通文件
第1-9位:三权限
33对应,分别归属于user group other ->user的权限 group的权限 other的权限
详细字母对应权限:
1 | r read |
可用数字代替:
简易记法:x1w2r4 1+2+4=7 即最高权限7
数字18
文件:硬链接数
目录:子目录数+文件数
附加知识点:
1.1 创建软连接ln -s
=link symbolic(象征性的,快捷方式就是象征性的)
1 | ln -s /root/ myroot |
创建一个软链接myroot,指向的是/root/
1.2 不加-s选项的创建硬链接ln
1 | ln /root/ myroot |
给/root/起了个别名myroot
硬链接:
在 Linux 文件系统中,一个文件实际上由两部分组成:
- Inode(索引节点):包含文件的实际内容、权限、大小等元数据。
- 文件名:指向这个 Inode 的指针。
硬链接就是给同一个 Inode 起了一个新的名字。
41 所有者
查看所有者,所在组
1 | ls -alh |
(选项a:all)(选项l:long长,详细)(选项a:human人性化)
chown改变文件的所有者
=change owner
语法:
1 | chown [-R] 新所有者 文件/目录 |
选项-R:递归(把目录下所有东西的主人都改变)
42 所在组
groupadd创建组
=group add
语法:
1 | groupadd idiots |
chgrp改变文件所在组
语法:
1 | chgrp [-R] 新组名 文件名 |
改变目录的所在组同上
43 其他者
usermod -g改变用户所在组
=user modify -group 新组名
语法:
1 | usermod -g 新组名 用户名 |
usermod -d改变用户初始目录
=user modify -directory
语法:
1 | usermod -d newdirectory新目录 用户名 |
注意:用户需要得到新目录的权限
查看所在组
1 | id 用户名 |
44 其他组
46 修改权限
chmod
=change modify
语法:
u=user g=group o=other a=all
x1w2r4 1+2+4=7 即最高权限7
1 | 1.+-= |
90 shell编程入门
shell:命令解释器
多行注释:
1 | :<<! 内容! |
一. 执行
1.需要权限的执行
前期准备:
mkdir /root/codesh
cd /root/codesh
vim hello.sh
./hello.sh #会显示权限不够
chmod u+x hello.sh
ll
./hello.sh #执行成功
语法格式:
1 | #!/bin/bash 此 为shell类型,一般是bashshell |
2.不需要权限的执行sh
语法:
1 | sh hello.sh |
二. 变量
定义变量规则:不能以数字开头,一般大写,=两边无空格
分类:
1.系统变量
查看:命令一:set (查看所有变量)
命令二:echo $PATH
2.自定义变量
1 | #!bin/bash |
3.shell与命令
1 | #!bin/bash |
三. 设置环境变量
基本语法:
export 变量名=值 #将shell变量输出为环境变量
source 配置文件 #让修改后的配置信息立即生效
echo $变量名 #查询环境变量的值
例子:
1 | vim /etc/profile |
四. 位置参数变量
执行脚本需要获取参数时,可以用位置参数
语法:
1 | $n:(n为数字,$0为命令本身,第一到第九个参数$1-$9,十以上用大括号${10}) |
例子
1 | touch 1.sh |
五. 预定义变量
语法:
1 | $$ #当前进程的进程号PID |
例子:2.sh
1 | # 以后台方式运行 |
六. 运算符
语法
1 | 1. $((运算符)) 或 $[运算符] 或 expr m+n #expr=expression公式表达式 |
计算
1 | echo "(2+3)*4=$[(2+3)*4]" |
七. 条件判断
语法:非空返回true,可用$?验证
1 | [ condition ] #condition前后要有空格 |
常用判断条件
1 | 1.字符串比较 = |
例子1:简单if
1 | #!/bin/bash |
例子:elif
1 | if [ $1 -ge 60 ] |
八. 流程控制
1.case
1 | #!/bin/bash |
2.for循环
例一
1 | #!/bin/bash |
例二
1 | #!/bin/bash |
3.while循环
1 | #!/bin/bash |
4.read读取控制台输入
语法:read [-t -p] 变量名
选项: -t 时间范围内
-p 输入提示词
1 | #!/bin/bash |
5.系统函数
5.1 basename
语法:dirname 完整路径 [suffix]
suffix为后缀,如果被指定了,会在路径中把suffix去掉
功能:去除目录部分,留下问价部分
5.2 dirname
语法:dirname 完整路径
功能:去除非文件部分,留下目录部分
自定义函数
1
2
3
4
5
6
7
8
9
10
11#!/bin/bash
function add()
{
sum=$[$a+$b]
echo "add=$sum"
}
read -p "please input:" a
read -p "please input:" b
add $a $b
九、案例
案例一:定时备份和删除
目标:
1.通过脚本/user/sbin/mysql_db_backup.sh完成以下功能;
2.每日2:30 备份hspedu数据库 到 /data/backup/db;
1 | crond定时调用 |
3.备份文件名为备份时间,并打包成tar.gz格式:2021-01-01_230201.tar.gz
4.检查是否存在十天前的备份文件,有则删除
1 | ##数据库用户名,密码,所在主机地址,数据库名 |
定时执行
1 | crontab -e |
进入vim :分钟 时 * * * 文件
1 | 30 2 * * * /usr/sbin/2.sh |
rm -rf
-r(recursive):递归删除。-f(force):强制删除。
九. 网络配置
1.nat网络原理
nat模式是什么:
NAT 模式(Network Address Translation,网络地址转换)是 VMware 的默认设置
IP 分配:你的物理机 IP 可能是 192.168.1.105,而虚拟机在 NAT 下可能是 192.168.150.128。这两个 IP 不在一个段。
当两者互相访问的时候,通过 VMnet8 网卡当翻译官,让它们俩能连通。

2.linux网络环境配置
方法一:DHCP获取ip(动态)
方法二:固定ip(静态)
思路:->1.修改ip(linux里面修改文件,vmware里面修改设置)-> 2.重启生效
方法:
配置文件路径:/etc/sysconfig/network-scripts/ifcfg-en33
修改配置文件ifcfg-en33内容:
1 | # 1.接口名(设备,网卡) |
2.改变vmnet8的ip和网关,
3.重启
1 | reboot |
3.主机名与hosts映射
思路:->1.修改主机名(linux里面修改文件,vmware里面修改设置),重启生效
-> 2. 找翻译:设置主机名和ip地址的映射
方法:
方法一、在win中ping linux主机名
修改文件/etc/hostname
1 | ubantu520 |
修改 C:\Windows\System32\drivers\etc\hosts
1 | #添加 |
方法二、在linux中ping win的主机名
修改文件/etc/hosts
1 | 192.....(vmnet8网卡地址) BOSS |
三、原理
**hosts:**文本文件->用来记录ip和hostname的映射关系
DNS:(domain name system)域名系统,是互联网上作为 域名 和 IP 相互映射的一个分布式数据库
流程:
–
浏览器访问一个域名,
->先找浏览器缓存里面有无域名解析的ip
->或没有,就找 本地DNS
->还是没有,再找 hosts文件
->仍然没有,最后去找 公网DNS
–

在主机cmd输入:
1 | ipconfig /displaydns //DNS 域名解析缓存 |