标签:lease png compress 定义 ascii码 交互式 print 开发工具 使用
shell脚本基础逻辑运算
true 1 , false 0
与:
???1 与 1 = 1
???1 与 0 = 0
???0 与 1 = 0
???0 与 0 = 0
或
???1 或 1 = 1
???1 或 0 = 1
???0 或 1 = 1
???0 或 0 = 0
非
???!
测试命令: test EXPRESSION、[ EXPRESSION ] 、[[ EXPRESSION ]]
bash的数值测试
?????-v VAR 变量VAR是否设置
?????-gt 是否大于
?????-ge 是否大于等于
?????-eq 是否等于
?????-ne 是否不等于
?????-lt 是否小于
?????-le 是否小于等于
bash的字符串测试
????? = 是否等于
????? > ascii码是否大于ascii码
????? < 是否小于
????? != 是否不等于
????? =~ 左侧字符串是否能够被右侧的PATTERN,此表达式一般用于[[]]中;扩展的正则表达式。
????? -z 字符串是否为空,空为真
????? -n 字符串是否不为空,不空为真 (用于字符串比较时用到的操作都应该使用引号)
bash的文件测试
????? -e 判断文件是否存在,存在为真
????? -b 判断是否为块设备文件
????? -c 判断是否为字符设备文件
????? -d 判断是否为目录文件
????? -f 判断是否为普通文件
????? -L或-h判断是否为符号连接文件
????? -p 判断是否为管道文件
????? -S 判断是否为套接字文件
bash的文件权限测试
????? -r 判断是否可读
????? -w 判断是否可写
????? -x 判断是否可执行
????? -u 判断是否拥有suid权限
????? -g 判断是否拥有sgid权限
????? -k 判断是否拥有sticky权限
bash的文件属性测试
????? -s 是否存在并且非空
????? -t 文件描述符是否在某终端已经打开
????? -N 文件自从上一次被读取之后是否被修改过
????? -O 当前有效用户是否为文件属主
????? -G 当前有效用户是否为文件属组
???file1 -ef file2 ??file1是否是file2的硬链接
???file1 -nt file2 ??file1是否比file2新
???file1 -ot file2 ??file1是否比file2旧
bash的组合测试条件
???EXPRESSION1 -a EXPRESSION2 ?并且
???EXPRESSION1 -o EXPRESSION2 ?或者
???COMMAND1 && COMMAND2 ?并且,短路与
???COMMAND1 || COMMAND2 ?或者,短路或
???!COMMAND 非
如 :[ -f "$FILE" ]&&[[ "$FILE" =~ .*.sh$ ]]
read输入命令
?????-p 指定要显示的提示
?????-s 静默输入,一般用于密码
?????-n 指定输入的字符长度
?????-d ‘字符’ 输入结束符
?????-t 等待输入的时间
??echo abc | { read x y z;echo $x$y$z;} ?使用管道 read会开启子shell
条件选择if语句
单分支
??if 判断条件;then
???条件为真的分支代码
??fi
例:
???#!/bin/bash
???sda5=$(df -h|grep /dev/sda5|awk ‘{print$5}‘|tr -d "%")
???if [ $sda5 -ge 80 ]
??????then
????echo "warning! /dev/sda5 is full"
???fi
双分支
??if 判断条件;then
???条件为真的分支代码
??else
???条件为假的分支代码
??fi
例:
#!/bin/bash
date=$(date "+%y%m%d")
size=$(du -sh /etc)
???if [ -d /tmp/back ]
?then
????echo "date:$date">/tmp/back/info.log
????echo "size:$size">>/tmp/back/info.log
?cd /tmp/back
????tar -zcvf etc-$date.tar.bz2 /etc info.log &>/dev/null
????rm -rf /tmp/back/info.log
else
?mkdir /tmp/back
????echo "date:$date">/tmp/back/info.log
????echo "size:$size">>/tmp/back/info.log
?cd /tmp/back
????tar -zcvf etc-$date.tar.bz2 /etc info.log &>/dev/null
????rm -rf /tmp/back/info.log
???fi
多分支
??if 判断条件1;then
???条件为真的分支代码
??elif 判断条件2;then
???条件2为真的分支代码
??elif 判断条件3;then
???条件3为真的分支代码
??else
???以上条件都为假的分支代码
??fi
条件判断;case语句
case $变量 in
??"选项1")
?????命令1
???;;
??"选项2")
?????命令2
???;;
??*)
?????命令3
???;;
esac
bash的配置文件
全局配置:
????/etc/profile
????/etc/profile.d/.sh
????/etc/bashrc
个人配置:
????~/.bash_profile
????~/.bashrc
shell 登录两种方式
交互式登录:
??????执行顺序:/etc/profile --> /etc/profile.d/.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式登录:
??????执行顺序:/etc/profile.d/*.sh --> /etc/bashrc --> ~/.bashrc
profile类:为交互式登录的shell提供配置
bashrc类:为非交互式和交互式登录的shell提供配置
local命令
??-i 不区分大小写的搜索
??-n N 只列举前N个匹配项目
??-r 使用基本正则表达式
find 路径 条件 动作
????-maxdepth 最大搜索深度
????-mindepth 最小搜索深度
????-depth 先处理目录里文件,再处理目录
????-regex 正则表达式
????-path 不搜索目录里文件
????-perm 600 精准权限查找
????-perm -444 u g o 三者都有读权限
????-perm + centos7改为/
????-perm /222 u g o 三者有一个有写权限就可以
????-ok-exec {} \; 对查找的结果进行处理
????-empty 空
参数替换 xargs
??echo {1..100}|xargs -n1
??echo user{1..10}|xargs -n1 useradd
压缩、解压缩
compress
??-d 解压缩
??-c 结果输出至标准输出,不删除源文件
??-v 显示详情
zcat file.z? zcat file.gz ?bzcat file.bz2 ?xzcat file.xz ?不显示解压缩的前提下查看文本文件内容
cat m | gzip > m.gz
lscpu | gzip > cpu.gz
bzip2 -k 保留原文件
tar -zcvf ??.tar.gz
tar -jcvf ??.tar.bz2
tar -Jcvf ??.tar.xz
split 分割一个文件为多个文件
rpm2cpio 包路径 | cpio -idv ./路径
???????????-t预览
ldd 查看依赖的库
文本处理工具sed
?选项:
??-n 不输出模式空间内容到屏幕,即不自动打印
??-e 多点编辑
??-r 支持使用扩展正则表达式
??-i 原文编辑
??-i.bak 备份文件并原处编辑
?编辑命令:
??d 删除模式空间匹配的行,并立即启用下一轮循环
??p 打印当前模式空间内容,追加到默认输出之后
??a\ 在指定行后面追加文本,
??i\ 在前面插入文本
??c\ 替换行为单行或多行文本
??w 保存至指定文件
??s/// 替换查找 ?g 行内全局替换 ?p显示替换成功的行 ? w将替换成功的行保存至文件中
rpm包管理
rpm -ivh 安装并显示详细信息
rpm -qa 显示所有包
rpm -qf 查询指定文件在哪个包里
rpm -ql 查询安装位置
rpm -qR 查询依赖
rpm -e 卸载
rpm -V 包校验
yum 管理rpm包
??yum源支持文件服务器 http、https、ftp、file
??yum配置文件 /etc/yum.repos.d/.repo
yum -y install 包名 ?安装软件
yum search 包名 ? 查询软件
yum -y reinstall 重新安装
yum repolist 显示仓库列表
yum remove 卸载程序包
yum update 升级程序包
yum info 查看程序包
yum clean all 清除缓存
ym history 查看安装历史
yum history info
yum history undo 撤销
yum history redo 重装
createrrepo 生成repodate
curl IP 查看网页内容
yum groupinstall......
dnf 新一代rpm软件包管理器
安装所需软件包
???dnf-conf-0.6.4-2.sdl7.noarch.rpm
???dnf-0.6.4-2.sdl7.noarch.rpm
???python-dnf-0.6.4-2.sdl7.noarch.rpm
配置文件:/etc/dnf/dnf.conf
仓库文件:/etc/yum.repos.d/.repo
日志:/var/log/dnf.rpm.log
编译安装
C语言源代码编译安装三步骤:
1、./configure
2、make 根据Makefile文件,构建应用程序
3、make install 复制文件到相应路径
开发工具:
autoconf: 生成configure脚本
automake:生成Makefile.in
标签:lease png compress 定义 ascii码 交互式 print 开发工具 使用
原文地址:https://blog.51cto.com/14230743/2368322