手机网站建设服务合同范本,做网站下载那个数据库好,网站咨询界面设计,泰安集团网站建设费用目录
❀My学习Linux命令小记录#xff08;12#xff09;❀
46.arp指令
47.tcpdump指令
48.chmod指令
49.chown指令
50.bash调用脚本指令
shell介绍
shell脚本的组成部分
脚本执行方式
检查脚本语法
bash之变量
变量的种类#xff1a;根据生效的范围不同来区分
…目录
❀My学习Linux命令小记录12❀
46.arp指令
47.tcpdump指令
48.chmod指令
49.chown指令
50.bash调用脚本指令
shell介绍
shell脚本的组成部分
脚本执行方式
检查脚本语法
bash之变量
变量的种类根据生效的范围不同来区分
bash的配置文件
profile类为交互式登录的shell提供配置
bashrc类为非交互式登录的shell提供配置
bash的IO重定向
bash算数运算bash对数字进行隐式的类型转换
bash条件测试
bash的测试类型
文件测试测试文件存在与否属性信息等
bash的逻辑运算true(0)、false(1-255)
编写脚本backup.sh可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中
编写脚本nologin.sh和login.sh,实现禁止和允许普通用户登录系统
编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值 ❀My学习Linux命令小记录12❀
46.arp指令
功能说明arp 命令用于显示和修改 IP 到 MAC 转换表。
(ps.arp 命令是 Address Resolution Protocol地址解析协议是通过解析网络层地址来找寻数据链路层地址的一个网络协议包中极其重要的网络传输协议。而该命令可以显示和修改 arp 协议解析表中的缓冲数据。它将 IP 地址映射到物理 MAC 地址。)
基本语法arp选项参数
选项:
-a 主机 显示 arp 缓冲区的所有条目
-H 地址类型 指定 arp 指令使用的地址类型
-d 主机 从 arp 缓冲区中删除指定主机的 arp 条目
-D使用指定接口的硬件地址
-e以 Linux 的显示风格显示 arp 缓冲区中的条目
-i 接口 指定要操作 arp 缓冲区的网络接口
-s 主机 MAC 地址 设置指定的主机的 IP 地址与 MAC 地址的静态映射
-n以数字方式显示 arp 缓冲区中的条目
-v显示详细的 arp 缓冲区条目包括缓冲区条目的统计信息
-f 文件 设置主机的 IP 地址与 MAC 地址的静态映射。
实例
# arp -a #显示系统的 ARP 表
# arp -v #显示arp 缓冲区内容
#添加静态 arp 映射
arp -s IP MAC-ADDRESS
arp -s 192.168.1.1 00:b1:b2:b3:b4:b5
#删除 arp 缓存条目
arp -d 192.168.1.1
47.tcpdump指令
功能说明一款sniffer工具是Linux上的抓包工具嗅探器。
ps.tcpdump命令 是一款抓包嗅探器工具它可以打印所有经过网络接口的数据包的头信息也可以使用-w选项将数据包保存到文件中方便以后分析。
基本语法tcpdump(选项)
选项:
-a尝试将网络和广播地址转换成名称
-c数据包数目收到指定的数据包数目后就停止进行倾倒操作
-d把编译过的数据包编码转换成可阅读的格式并倾倒到标准输出
-dd把编译过的数据包编码转换成C语言的格式并倾倒到标准输出
-ddd把编译过的数据包编码转换成十进制数字的格式并倾倒到标准输出
-e在每列倾倒资料上显示连接层级的文件头
-f用数字显示网际网络地址
-F表达文件指定内含表达方式的文件
-i网络界面使用指定的网络截面送出数据包
-l使用标准输出列的缓冲区
-n不把主机的网络地址转换成名字
-N不列出域名
-O不将数据包编码最佳化
-p不让网络界面进入混杂模式
-q 快速输出仅列出少数的传输协议信息
-r数据包文件从指定的文件读取数据包数据
-s数据包大小设置每个数据包的大小
-S用绝对而非相对数值列出TCP关联数
-t在每列倾倒资料上不显示时间戳记
-tt 在每列倾倒资料上显示未经格式化的时间戳记
-T数据包类型强制将表达方式所指定的数据包转译成设置的数据包类型
-v详细显示指令执行过程
-vv更详细显示指令执行过程
-x用十六进制字码列出数据包资料
-w数据包文件把数据包数据写入指定的文件。
实例
# tcpdump #直接启动tcpdump将监视第一个网络接口上所有流过的数据包
# tcpdump -i eth0 #捕获指定网络接口的所有数据包
# tcpdump udp port 123 #对本机的udp 123 端口进行监视 123 为ntp的服务端口
# tcpdump -i any port 80 -A #抓取80端口的HTTP报文以文本形式展示
# tcpdump ip and not net localnet #打印所有源地址或目标地址是本地主机的IP数据包(如果本地网络通过网关连到了另一网络则另一网络并不能算作本地网络。)
# tcpdump host 192.168.1.1 #捕获指定主机的数据包
# tcpdump src port 80 or dst port 80 #捕获源或目标端口为80的数据包
# tcpdump -X #显示数据包的内容以16进制和ASCII形式
# tcpdump -i eth0 -w capture.pcap #将捕获的数据包保存到文件中
# tcpdump -r capture.pcap #从保存的文件中读取数据包进行分析
# tcpdump -v #显示捕获的数据包的包头信息
# tcpdump -vv #显示更详细的包头信息
# tcpdump -i eth0 -n tcp port 80 #捕获并显示特定协议的数据包例如只显示HTTP流量
48.chmod指令
功能说明用来变更文件或目录的权限。
(ps.chmod命令 用来变更文件或目录的权限。在UNIX系统家族里文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限设置方式采用文字或数字代号皆可。符号连接的权限无法变更如果用户对符号连接修改权限其改变会作用在被连接的原始文件。)
权限范围的表示法如下
u User即文件或目录的拥有者
g Group即文件或目录的所属群组
o Other除了文件或目录拥有者或所属群组之外其他用户皆属于这个范围
a All即全部的用户包含拥有者所属群组以及其他用户
r 读取权限数字代号为“4”;
w 写入权限数字代号为“2”
x 执行或切换权限数字代号为“1”
- 不具任何权限数字代号为“0”
s 特殊功能说明变更文件或目录的权限。
基本语法 chmod(选项)(参数)
选项:
u # 操作对象简称用户user文件或目录的所有者。
g # 操作对象简称同组用户group文件或目录所属群组
o # 操作对象简称其它用户others
a # 操作对象简称所有用户all系统默认使用此项 # 权限操作符添加某些权限
- # 权限操作符取消某些权限 # 权限操作符设置文件的权限为给定的权限
r # 权限设定英文表示可读权限
w # 权限设定英文表示可写权限
x # 权限设定英文表示可执行权限
- # 权限设定英文字符表示没有权限
X # 权限设定如果目标文件是可执行文件或目录可给其设置可执行权限
s # 权限设定设置权限suid和sgid使用权限组合“us”设定文件的用户的ID位“gs”设置组ID位
t # 权限设定只有目录或文件的所有者才可以删除目录下的文件
-c或——changes # 效果类似“-v”参数但仅回报更改的部分如果文件权限已经改变显示其操作信息
-f或--quiet或——silent # 操作过程中不显示任何错误信息
-R或——recursive # 递归处理将指令目录下的所有文件及子目录一并处理
-v或——verbose # 显示命令运行时的详细执行过程
--reference参考文件或目录 # 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同
权限范围权限设置 # 开启权限范围的文件或目录的该选项权限设置
权限范围-权限设置 # 关闭权限范围的文件或目录的该选项权限设置
权限范围权限设置 # 指定权限范围的文件或目录的该选项权限设置
--help # 显示帮助信息
--version # 显示版本信息
知识扩展和实例
Linux用户分为拥有者、组群(Group)、其他otherLinux系统中预设的情況下系统中所有的帐号与一般身份使用者以及root的相关信息 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外所有的组群名称记录在/etc/group內
linux文件的用户权限的分析图 -rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules
# ↑╰┬╯╰┬╯╰┬╯
# ┆ ┆ ┆ ╰┈ 0 其他人
# ┆ ┆ ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组
# ┆ ╰┈┈┈┈ u 属组
# ╰┈┈ 第一个字母 d 代表目录- 代表普通文件
例rwx rw- r--
r读取属性 //值4
w写入属性 //值2
x执行属性 //值1
# chmod ux,gw abc.txt # 为文件abc.txt设置自己可以执行组员可以写入的权限
# chmod urwx,grw,or abc.txt #给文件abc.txt设置权限,使用者权限为rwx即可读可写可执行组员权限可读可写不可执行其他人权限只可读
# chmod 764 abc.txt #为文件abc.txt增加权限764使用者权限7421读可写可执行组员权限642可读可写不可执行其他人权限44只可读
# chmod ax abc.txt # 对文件abc.txt的u,g,o都设置可执行属性
将/home/wwwroot/里的所有文件和文件夹设置为755权限
①# chmod -R 755 /home/wwwroot/*
②# cd /home/wwwroot
# chmod -Rv 755 * #注意“*”表示通配符指的是所有文件和文件
# sudo chmod orw /shared #设置文件夹权限以保证其余用户可以访问它
49.chown指令
功能说明用来变更文件或目录的拥有者或所属群组。
ps.chown命令 改变某个文件或目录的所有者和所属的组该命令可以向某个用户授权使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D用户组可以是组名或组id。文件名可以使由空格分开的文件列表在文件名中可以包含通配符。
只有文件主和超级用户才可以便用该命令。
语法chown(选项)(参数)
选项:
-c或——changes效果类似“-v”参数但仅回报更改的部分
-f或--quite或——silent不显示错误信息
-h或--no-dereference只对符号连接的文件作修改而不更改其他任何相关文件
-R或——recursive递归处理将指定目录下的所有文件及子目录一并处理
-v或——version显示指令执行过程
--dereference效果和“-h”参数相同
--help在线帮助
--reference参考文件或目录把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同
--version显示版本信息。
实例
# chown -R rosy /usr/meng #将目录/usr/meng及其下面的所有文件、子目录的文件主改成 rosy
50.bash调用脚本指令
编程语言分为两种
过程式以指令为中心数据服务于指令
对象式以数据为中心指令服务于数据
shell介绍
shell是一个用C语言编写的程序它是用户使用Linux系统的窗口一个桥梁起到人机交互的作用。
shell既是一种命令语言又是一种简单的程序设计语言为什么说简单因为有很多复杂的工作不用Shell去做。
shell本身是一种应用程序运行与内核之上这个应用程序为提供了一个界面用户可通过这个界面访问操作系统内核的服务。shell是Linux系统内嵌的安装操作系统之后看到的界面就是一个shell程序提供的界面。
shell程序 是一个过程式的解释器把源代码翻译成机器语言然后执行对于过程式语言来讲是一行一行翻译并执行的
shell脚本的组成部分
shell程序开头的环境指定称之为shebang如下
#!/bin/bash
#!/bin/python
#!/bin/perl
shebang是告诉操作系统内核通过哪一个解释器来执行当前脚本
#行首为#号则为注释行额外的解释信息
第一个脚本
#!/bin/bash
echo Hello World !!!
脚本执行方式
需给予脚本执行权限
# chmod x hello.sh
通过脚本文件所在绝对路径进行执行
# /root/hello.sh
直接运行解释器将脚本作为解释器的参数来执行
# sh hello.sh
检查脚本语法
bash -n 测试语法是否正确
bahs -x 查看脚本执行过程
bash -xv 更详细的查看脚本执行过程
例bash -x hello.sh
bash之变量
变量变量名指向的内存空间
将数据存放于内存中为了方便使用为这段数据取了个名字使用时直接调用变量名系统会根据变量名指向的数据位置将数据提取进行使用。
变量赋值就是将数据存储于这个变量名指向的内存空间的过程
变量的类型定义数据存储的格式
①字符型
②数值型整数型、浮点型
对于编程语言来说变量还分为强类型和弱类型bash为弱类型变量语言如果没有明确表明bash把所有变量统统视为字符型而当我们运算时bash会自动将变量值转为数值型。bash不支持浮点型除非借助外部工具。
bash中的变量无需事先声明随用随时到内存空间中定义。
变量的种类根据生效的范围不同来区分
本地变量范围是当前shell进程
环境变量范围是当前shell进程和子shell进程
局部变量范围是当前shell进程某个代码块通常指函数
位置变量用于放在脚本代码块中调用通过命令行传递给脚本的参数
特殊变量
$?命令执行的状态值,值的范围0-255其中0为真表示命令执行成功1-255为假表示命令执行失败。
$#传递给脚本的参数的个数。
$*传递给脚本的所有参数全部参数合为一个字符串。
$传递给脚本的所有参数每个参数为独立字符串。
$0表示命令本身。
本地变量
变量赋值namevalue
value的值也可以引用
可以直接使用字符串nameusername
可以使其他变量的值name$username
可以直接引用命令的值namehostname或者name#(hostname);
变量引用${var_name}可简写为$var_name
弱引用其中的变量引用会被替换成变量的值
例[rootcentos_7 ~]# NUM$PATH;echo $NUM
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
强引用其中的变量引用不会被替换而是保留引号内原字符串
例[rootcentos_7 ~]# NUM$PATH;echo $NUM
$PATH
命令引用如括号内是命令会被识别返回的是命令执行完成的值 例[rootcentos_7 ~]# NUMseq 1 10;echo $NUM
1 2 3 4 5 6 7 8 9 10
查看变量set
撤销变量unset name
输出变量echo $name
环境变量
变量赋值export namevalue declare -x namevalue
查看变量export、declare、env
撤销变量unset name
输出变量echo $name
bash有许多内建的环境变量
PATH,PWD,USER,HOSTNAME,SHELL,UID,HOME等等
只读变量只读变量的证明周期为当前shell进程的生命周期随着shell进程的终止而终止
变量赋值declare -r name readonly name
位置变量$1,$2……$10对应第1第2个参数
shift轮替将第1个参数踢掉第2个参数变为第一个参数可一次踢多个shift#
set – 清空所有位置变量
命令行中定义的变量会随着当前shell进程的生命周期Shell进程结束变量时效
变量名的命名规则
只能用数字字母下划线且不能使数字开头。
变量名尽量做到见名知意
且不能使用程序的保留字如PATH、PWD、if、else之类的 。
bash的配置文件
全局配置文件对当前主机所有用生效
/etc/profile
/etc/profile.d/*.sh
个人配置文件只对当前用户生效
.bash_profile
.bashrc
按照功能分分为两类
profile类为交互式登录的shell提供配置
交互式登录直接通过某终端输入账号和密码后登录打开的shell进程
使用su -命令登陆的方式su - username
全局/etc/profile,/etc/profile.d/*.sh
个人.bash_profile
作用用于定义环境变量 运行命令或脚本
交互式登录方式文件的读取顺序
/etc/profile -- /etc/profile.d/*.sh -- .bash_profile -- /etc/bashrc -- .bashrc
注意仅管理员可修改全局配置文件
bashrc类为非交互式登录的shell提供配置
非交互式登录图形界面下打开的终端 使用su username 运行脚本
全局/etc/bashrc
个人.bashrc
作用定义本地变量 定义命令别名
非交互式登录文件的读取顺序
.bashrc -- /etc/bashrc -- /etc/profile.d/*.sh
配置文件定义的特性只对随后的shell进程生效
让通过编辑配置稳健的特性立即生效
退出并重新登录
通过命令行重复定义一次
让shell进程重读配置文件
source FileName
. FileName
bash的IO重定向
输出重定向 覆盖输出 追加输出在原有文件的尾部添加内容
set -C 禁止覆盖输出重定向至已存在的文件
| 强行覆盖输出
set C 关闭上述特性
错误输出重定向
2 错误覆盖
2 错误追加
合并正常输出和错误输出: 覆盖 追加
/dev/null相当于一个垃圾箱当我们不需要将命令执行结果输出至屏幕时可使用 /dev/null把结果丢进垃圾箱只判断命令执行状态返回值
重定向写入文件:
cat EOF
content
...
EOF
----
cat /PATH/TO/FILE EOF
content
……
EOF
bash算数运算bash对数字进行隐式的类型转换
-*/%(取模)**(乘方)
实现算数运算
let var算数表达式如let var12 例:
[rootcentos_7 ~]# let var12
[rootcentos_7 ~]# echo $var
3
var$[算数表达式]如var$[12]
var$((算数表达式))如var$((12))
echo 算数表达式 | bc 如echo ‘12’ | bc
expr 数值1 运算符 数值2如expr 1 2
增强型复制
-*/%
使用方法let 变量名运算符算数表达式
例leti1即ii1
自增自减
let i1 即let i
let i-1 即let i-- 例
[rootcentos_7 ~]# let i;echo $i
1
[rootcentos_7 ~]# let i;echo $i
2
[rootcentos_7 ~]# let i;echo $i
3
bash条件测试
判断某条件是否满足满足则完成某项任务不满足则退出
条件测试命令的表达式
test 表达式
[ 表达式 ]
[[ 表达式 ]]
与[ ]不同[[ ]]双括号内支持正则表达式而[ ]单括号不支持
常用例Nabc;[[ $N ~ ^[0-9]$ ]] echo true || echo false 解释为如果$N的值为整数型则返回true否则返回false。
注意表达式两边必须要有空格
bash的测试类型
数值测试
-eq是否等于
-ne是否不等
-gt是否大于
-lt是否小于
-ge是否大于或等于
-le是否小于或等于
字符测试
是否等于
!是否不等
是否大于
是否小于
~左侧字符串是否能被右侧模式所匹配
-z string测试字符串是否为空空则为真不空则为假
-n string测试字符串是否不空不空为真空则为假
文件测试测试文件存在与否属性信息等
测试文件是否存在和文件类别
-e file测试指定文件是否存在存在为真不存在则为假
-b file文件是否存在且为块设备
-d file文件是否存在且为目录
-c file文件是否存在且为字符设备
-f file文件是否存在且为普通文件
-h file文件是否存在且为符号链接文件
-p file文件是否存在且为命名管道文件
-S file文件是否存在且为套接字文件
1文件权限测试
-r file文件是否存在且当前用户是否可读
-w file文件是否存在且当前用户是否可写
-x file文件是否存在且当前用户是否有执行权限
-u file文件是否存在且拥有suid权限
-g file文件是否存在且拥有sgid权限
-k file文件是否存在且拥有sticky权限
2文件大小测试
-s file文件是否存在且非空
3文件是否被打开
-N file文件自从上一次被读取之后是否被修改过
-O file当前用户是否为文件属主
-G file当前用户是否为文件属组
bash的逻辑运算true(0)、false(1-255)
与运算
真 真 真
真 假 假
假 真 假
假 假 假
只要有假便为假
或运算
真 || 真 真
真 || 假 真
假 || 真 真
假 || 假 假
只要有真便为真
非运算
! 真 假
! 假 真
ls / /dev/null echo hello 当左边条件为真时右边条件执行左边条件为假时右边条件不执行
ls /// /dev/null || echo hello 当||左边条件为假时||右边条件执行||左边条件为真时||右边条件不执行
第二种方式
-a与远算
-o或运算
非运算
例主机名是否为localhost如果是改为centos
[ hostname localhsot ] hostname centos || echo current hostname is hostname
例测试文件是否存在
[ -e /etc/passwd ] cat /etc/passwd || echo file not exist..
例测试主机名是否为空或者为localhost如果为空或者为localhost则将其改为centos
[ -z hostname -o hostname hostname ] hostname centos || echo current hostname is hostname
编写脚本backup.sh可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中
#!/bin/bash
#
#Filename: backup.sh
#Description: create script file
#Date: 2019-08-20 11:20:30
#*************************************************
diretcdate %Y-%m-%d
DIR/root/$dir
[ -d $DIR ] echo dir exist.. exit 0
mkdir $DIR
cp -ar /etc/* $DIR echo -e \033[1;5;31mcopy finished...\033[0m
编写脚本nologin.sh和login.sh,实现禁止和允许普通用户登录系统
[rootcentos7 bin]#cat nologin.sh
#!/bin/bash
#
#*************************************************
#Filename: login.sh
#Description: create script file
#Date: 2019-08-20 11:38:59
#*************************************************
[ id -u $1 -ge 1000 ] || exit 1
[ $# -lt 1 ] echo please input a users .. exit 0
read -p your ensure ban user nologin ? input y/n: NOLOGIN
[ $NOLOGIN y ] sed -i -r /^$1/s#(.*:)([^:])$#\1/bin/nologin# /etc/passwd exit 0
[ $NOLOGIN n ] exit 0
[rootcentos7 bin]#cat login.sh
#!/bin/bash
#
#*************************************************
#Filename: login.sh
#Description: create script file
#Date: 2019-08-20 12:55:48
#*************************************************
[ $# -lt 1 ] echo please input a user .. exit 0
[ id -u $1 -ge 1000 ] sed -i -r /^$1/s#(.*:)([^:])$#\1/bin/bash# /etc/passwd
read -p you need login system ? input y/n : LOGIN
[ $LOGIN y ] su - $1
[ $LOGIN n ] exit 0
编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
[rootcentos7 bin]#cat disk.sh
#!/bin/bash
#
#*************************************************
#Filename: disk.sh
#Description: create script file
#Date: 2019-08-20 13:08:14
#*************************************************
devicedf | grep /dev/sd |tr -s % | sort -t% -k5 -nr | cut -d% -f1 |head -1
DISKdf | grep /dev/sd | tr -s : | cut -d: -f5 | sort -nr|head -1
echo The most used is $device already use $DISK
❀My学习Linux命令小记录12❀over~