开发环境入门 linux基础 (部分)awk 赋值变量 if
awk 常用于处理格式非常明显的文件
awk -F: '{print $1}' /etc/passwd 含义:取冒号分隔符的第一段内容
$0 指取所有!
NF 指有几段内容
$NF 取最后一段内容
NR 指代行号
用 NR做 行定位 awk -F: 'NR==1{print $1,NR}' test
小于等于3行的内容 awk -F: 'NR<=3{print $1,NR}' test
3-5行的内容awk -F: 'NR>=3 && NR<=5{print $1,"---------",NR}' test
小于等于2行,大于等于7行的内容: awk -F: 'NR>=7 || NR<=2{print $1,"---------",NR}' test
nologin结尾的用户名打印出来:awk -F: '/nologin$/{print $1}' test(正则定指,指定文件和打印指定位置)
用户名r开头t结尾,中间任意字符,打印UID,awk -F: '$1~/^r.*t/{print NR ,$3}' test
('$1~/^r.*t/用户名来匹配正则表达式)
只打印指定文件的内容 awk -F: '$1==“root”{print NR ,$1,$3}' test
打印UID大于等于7的用户名 awk -F: '$3>=7{print NR ,$1}' test
自定义一个变量,然后用awk去打印 用到 -v
count =7
awk -v x=$count -F: '$3>=x{print NR,$1,$3}' test
其他变量补充
1、
awk 不指定内容,以空格或是多个空格作为分隔符
查看IP地址!
ifconfig |awk 'NR==2{print $2}' 取IP地址
可以定义 ip_addr= 'ifconfig |awk 'NR==2{print $2}' echo $ip_addr 打印结果
2、打印处理重复内容 先把重复的行放在一起,然后去重即可。
sort 排序
uniq 去重 -c 查看去了多少行
cat a.txt | sort |uniq -c
3、轻量级的操作 cut
cat test |cut -d: -f1,3简单的处理文件
4、du -sh /boot/ 查看文件大小
5、find 命令 (找文件)
find / -type f 查找根下的普通文件
find / -name “*.txt”查找文件名为什么的文件
find / -size +30M 大于30M的文件
find / -size +10M size -30M 找出大于10M小于30M的文件
find / -size +2M -type f -name \*.txt 找出根下大于2M的名字中后缀为txt的普通文件。
6、查找某个目录下,包含某个内容文件的文件名全部找出,并打印出来
grep -rl 'root' /test (grep -r 过滤的是目录)
改主机名脚本
vim a.sh
read -p 'please input your hostname:' name
hostnamectl set-hostname $name
保存退出
给执行权限,chmod -R +x a.sh
执行:./a.sh
shell
变量
1、命名规则:以字母开头,剩下的部分可以是:字母,数字,下划线。
规范1.以字母开头
2.使用中划线或者下划线做单词的连接
3.同类型的用数字区分
4.对于文件最好加上拓展名
5.用户能一眼看出要做什么
2、系统变量
set:查看所有变量
env:查看系统变量
3、变量赋值
x=1; 变量赋值
echo $1输出
unset x 删除变量
4、常用系统变量
PATH 环境变量
PWD 当前路径
LANG
HOME
HISTSIZE 历史命令,最多1000行
PS1 存放当前用户,用于改用户名 PS1=****
IFS
5、全局变量和局部变量
全局变量指所有的用户都通用。
局部变量指仅仅当前用户可用。
export 用于linux中定义全局变量,任何位置都有效
链接:
变量边界问题:用{}来定义变量的边界,括号内是一个整体。
例子:money =10 echo $money ----->10 echo $money0000 没法输出,加上{}即可。
echo ${money}0000 ----->100000
计算内存使用率
free
查看内存
mem_total='free | awk 'NR==2{print $2}'' 总内存
mem_use= 'free | awk 'NR==3{print
$3}'' 使用内存
echo $mem_use 查看结果
浮点运算 echo 'scale=2; $mem_use/$mem_total' | bc -l
|cut -d. -f2
mem_per=' echo "scale=2;
$mem_use/$mem_total" | bc -l |cut -d. -f2'
echo ${mem_per}% 百分号的使用率
运算符 注意:用$取值!!!
1、算术运算符 + - *
/ %
2、关系操作 < >
<= >= == !=(不等于) &&(与) ||(或)
用两个小括号,做关系运算(())。 test命令,也可以做关系运算!
中括号[]的语法结构和test一样,用中括号的话,与test连用。整型!
命令下: -gt 大于 -lt 小于 -ge大于等于 -le小于等于 -eq 等于 -ne 不等于
-a 同时成功
-o 仅有一个成功
赋值运算符
=
+= *= /=(除等于) %=(取余等于)
x=1
x=$[$x+1] echo $x=2 ---------> x=1 ((x+=1)) echo $x 2
自增1或是自减1 ((i++))
((i--))
shell中的所有计算器
$[]
(()) $(())
$$ 进程PID
$# 总共有多少参数
$? 上一个命令是否正确运行
测试命令:test[] [[]] (())
1、测试文件状态
-d 目录
-s 文件长度 > 0、非空
-f 正规文件
-w 可写
-r 可读
-x 可执行
-L 符号连接
-u 文件有 suid 位设置
2、字符串测试
= 两个字符串相等
!= 两个字符串不相等
-z 空串
-n 非空串
3、测试数值
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
4、扩展测试符号
比较数字,使用(( ))
其他测试使用 [[ ]]
包含数字比较的混合测试,使用[[ expr1 &&
expr2 ]] (( expr1 || expr2 ))
两个文件的比较
FILE1 -ef FILE2
测试两个文件是否是相同的inode
有时为了找到同一个INODE号的文件 更倾向于使用 find 命令的 -inum 或 --samefile
FILE1 -nt FILE2
FILE1 is newer (modification date) than FILE2
FILE1 -ot FILE2
FILE1 is older than FILE2
shell 流程控制
创建文件.sh结尾。vim *.sh 编写shell 以什么开始,以什么反着写结束。
给文件执行权限 chmod +x *.sh
./*.sh 执行。验证结果
用户输入 :read -p "please input:" var
睡多少秒(延迟)sleep 0.5 延迟0.5秒
输出用$var
var='/etc/passwd'
if [ -f $var ]
then
echo "$"
命名上不要带系统进程名!容易产生新的进程,倒是执行错误。
$1 空格分离的第一个参数
$2空格分离的第二个参数
$3空格分离的第三个参数
$4空格分离的第四个参数
$$ 进程的PID
$* 脚本文件后所有参数
$@ 脚本文件后所有参数
$# 总共有多少个参数
$? 上一条命令是否执行成功
应用举例
重启nginx 服务
#!/bin/bash
ps aux | grep nginx |grep -v 'grep' #查看进程
if [ $? -ne 0 ] #判断 是否开启
then
systemctl start nginx
fi
开发环境入门 linux基础 (部分)awk 赋值变量 if的更多相关文章
- 开发环境入门 linux基础(部分)虚拟内存,rpm和yum安装
虚拟内存,rpm和yum安装 文本中查找 /内容 替换:扩展模式下(:)%s /替换目标/要替换的文件/ (只替换第一个)(后边加g全部替换) :set u添加行号 raid lvm逻辑卷 df - ...
- 开发环境入门 linux基础 (部分)正则表达式 grep sed
/etc/profile /etc/bashrc .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特 ...
- 开发环境入门 linux基础 (部分)while for 函数 计划任务
while循环 while do 动作 done 需要无限循环时我们会选择while : echo -e 格式处理,将\n的意义不变. exit 指退出执行程序 break 指跳出本层循环 conti ...
- 开发环境入门 linux基础 (部分) 复制 用户和组操作 权限更改
复制 用户和组操作 权限更改 CP 复制命令 cp 源文件 目标文件 a) –r(recursive,递归的):递归地复制目录.当复制一个目录时,复制该目录中所有的内容,其中包括子目录的全部内容. b ...
- 开发环境入门 linux基础 基本操作命令(部分) 文本结构和基本命令
文本结构和基本命令 linux系统中系统提示符:$ 表示普通用户 su root切换用户命令(用户名 root),输入密码,切换到其他用户状态 root 命令提示符:# exit 退出当前用户,返回 ...
- 开发环境入门 linux基础 (部分)网络 SSH 更名 DNS解析 元字符
nginx---> web ifconfig 查看网络配置信息 id add show 查看当前网卡信息(最小安装下) mtu 是指网卡传输的最大单元 单位:字节 网卡配置 临时配置 ifcon ...
- 开发环境入门 linux基础 (部分)nginx和nfs
nginx和nfs 复习总结 rpm -ivh 软件包 --nodeps (没有依赖性安装) rpm -ivh 软件包 --force (覆盖安装) yum -y upgrade 升级所有包,不改变软 ...
- 开发环境入门 linux基础 (部分) 归档 压缩 Vi编译器 系统分区
归档 压缩 Vi编译器 系统分区 1.使用cat命令进行文件的纵向合并 1) 使用cat命令实现文件的纵向合并: a) 例如:将用户信息数据库文件和组信息数据库文件 ...
- 使用Ant搭建Android开发环境入门
使用Ant搭建Android开发环境入门 使用Ant搭建Android开发环境,建立android项目 配置Ant环境 下载Ant:http://ant.apache.org/bindownloa ...
随机推荐
- 基于主主复制的mysql双机热备+keepalived实现高可用性
- spark学习3(sqoop1.4.6安装)
sqoop目前有两个版本sqoop1和sqoop2,这里安装的是sqoop1版本 1)将软件上传到spark1节点 2)修改权限 [root@spark1 sqoop]# chmod u+x sqoo ...
- java基础(3)-多线程(1)
java多线程 进程与线程 进程:指一个正在执行的应用程序.每个进程执行都有一个执行顺序,该顺序称为一个执行路径或一个控制单元(进程是资源分配的最小单位).一个进程包含1~n个线程 线程:指进程中某个 ...
- 微信小程序申请。很蛋疼的流程。
微信小程序申请. 营业执照,食品许可证,身份证正面,身份证反面. 1.先要申请服务号. 需要一个QQ邮箱,申请服务号. 填写各种信息,营业执照信息. 法人信息. 管理员用自己人的.方便开发操作. 申请 ...
- pg数据库表接口和数据导出
导出命令 pg_dump -U postgres --inserts -t human_info > D:\human_info_backup.sql testdb 命令说明 pg_dump:是 ...
- android EventBus的简单使用
今天,简单讲讲Android里关于EventBus的使用. 这几天,由于面试的缘故,我听到了很多Android的流行框架,但是之前自己在公司做APP时并没有使用,所以没有了解.于是在网上查找了资料,学 ...
- decimal与 float的区别
decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边.decimal 数据类型存储了一个准确(精确)的数字表达法:不存储值的近似值. 定义 decimal 的列.变量和 ...
- App自动化测试探索(一)借助Appium实现APP的自动化测试
移动应用测试十大要领: 选择系统平台 选择测试设备的品牌 注意行业和设备区分 关注Android的更新 不要忘记老设备 灵活使用Web分析工具 注意区分地区.运营商和网络技术 掌握智能手机的屏幕分辨率 ...
- 使用smart-npm和npm安装完毕之后发现 不是内部命令和外部命令!
我明明记得加入过path环境变量.我想一定是什么原因 一查bing.com然后发现没有在全局环境 .所以 只需要过npm install -g gulp 一句执行cmd这样就好 $ gulp提示gu ...
- jquery 获取所有父元素
最终结果: 代码: <!DOCTYPE html> <html> <head> <style> b, span, p, html body { padd ...