a.sort排序
默认排序按照升序,按照每行文件的首字母(数字)的ASCII表的顺序进行排序。
[root@lsl ~]# vi b.txt
user1
user2
a
b
1
10
6
11
5
22
c
g
[root@lsl ~]# sort -n b.txt //按照数值大小写对输入信息进行排序
a
b
c
g
user1
user2
1
5
6
10
11
22
例:分割passwd目录下第三列,进行p排序
sort -t ":" -k3 -n /etc/passwd
从图中可以看出文件按照 0 1 2 3 4 5进行排序
例:统计重复值和非重复值
vi c.txt //在文件中输入多个重复值和非重复值进行测试
a
a
b
b
b
b
b
c
g
g
g
[root@lsl ~]# sort c.txt | uniq -c -d //统计重复值
[root@lsl ~]# sort c.txt | uniq -c -u
注:sort 参数
-n 按照数值大小排序
-f 忽略字母大小写
-t 指定分隔符(cut-d)
-k 指定所取到的列
-u 去重(连续相同的值)
b.编程原理:
1、编程介绍
目的:让硬件设备实现人类指定的某些特定的功能
硬件设备如何识别这些编程语言
早期语言:basic
汇编语言
局限性,每个厂家都有自己硬件设备所能够识别的汇编语言格式
高级语言: C语言 C++ C#、Java、python、 go、perl、shell(更趋向于人类能够读写)
编译:将人类能够识别的编程语言,翻译成计算机能够识别的语言
根据编程方式分为:
1)编译型:一次编译,全部执行
2)解释性:编译一行,解释一行,执行一行
程序=指令+数据
2、shell脚本程序介绍
优点:指令操作系统命令
python的优点:具有大量的第三方模块,能实现任何功能(自动化运维方向)
shell脚本的第一句话:
#!/bin/bash //指定下面的内容用什么语言做解释
cat /etc/shells 查看有哪些shell程序
linux下每一个程序都有一个用户来启动
用户分类:
1、超级用户 root
2、普通用户 1)可登录管理操作系统的用户
2)系统用户 --/sbin/nologin 用来启动该用户指定的程序
cat /etc/shell //查看当前系统支持的shell程序
SHELL= /etc/bash //默认的SHELL环境变量
如何执行shell:
1、/bin/bash 程序
2、chmod +x程序 //给该程序赋予权限
*/全路径/程序.sh
二者区别:第一种是在当前shell下运行的脚本程序
第二种新建子shell去执行程序
c、变量
1)基于变量特性支持的不同。我们将开发语言分为:
1、强类型语言:变量必须被定义
2、弱类型语言:语言能够自动识别变量类型
编程语言分类:面向过程,针对指令;面向对象,针对数据
变量分类:数值型 整形
浮点型
布尔类型
字符型 普通字符集
数组(遍历)
declare (用于定义数据类型)
2)导入变量
1、直接定义 a=1
2、传参的方式 $0 $1 $2 ...${10}
$0 这个程式的执行名字
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用
3)变量的命令
1、下划线:YUN_NAME
2、驼峰:YUN | NAME
4)test 文件测试,用于条件判断
shell中进行判断时一般有两种判断方式:
1、直接判断命令正确与否
2、使用test去做判断
注:使用了test做判断就必须加"[ ]"写法要注意问题,中括号前后需要加空格。
例:产生0-99以内的随机数
[root@lsl ~]# vi bash.sh
#!/bin/bash
#
declare -i a=$RANDOM
echo "$[$[$RANDOM%100]+1]"
[root@lsl ~]# bash -x bash.sh //显示语句执行过程
*test除了可以判断是否相等,还可以作为一下判断:
a.数值判断:
-eq 等于 -ge 大于等于 -le 小于等于 -gt 大于 -lt 小于 -ne 不等于
b.字符串判断:
-n 判断字符串长度是否不为空
-z 判断字符串长度是否为空
= 判断两边字符串是否相等
!=判断两边字符串不相等
c.文件判断:
-d -b -c -e(判断文件是否存在) -f -L -r-w-x
d.多条件关联
-e 1.sh -a -x 1.sh(-e是否为普通文件,-a\-x执行权限)
5)逻辑运算
&&与 ||或 !非
结构体: 初始条件 a=1
while 循环体条件(a<10);do
循环体
条件控制语句 let a++
done
6)算数运算
+ - * / % // ** = + = -+
算数格式: $[1+1]
$((1+1))
let i++
expr 1+1