shell 基础学习笔记一

fstab
设备 挂载点 文件系统类型 挂载选项 转储频率 自检次序

删除文件:将此文件指向的data block 标记为未使用状态;将此文件的inode标记为未使用状态
复制文件:就是新建文件
移动文件:同一个分区特别的快 仅仅是将映射路径进行修改
跨分区速度就会慢 把源文件复制到其它分区 然后再删除源文件



符号链接:
权限:lrwxrwxrwx 777 为什么这样 以为访问的是取决于要访问的文件的权限
符号链接可以多级进行链接
硬链接:指向同一个inode
在同一个文件系统可以使用硬链接 符号链接删除软连接




fuser lsof 命令使用
bash脚本编程

脚本文件文件格式:
#!/bin/bash
编程思想:
问题空间----> 解空间


变量:
局部变量
本地变量
环境变量:当前shell进程


位置参数变量
特殊变量


数据类型:字符型 数值型(近似数据型 精确数据类型)
弱类型:字符型

变量赋值机制
~]# animal=dog
~]# echo "$animal"s
dogs


~]# PATH="$PATH://usr/local/apache/bin"
~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin://usr/local/apache/bin



算术运算:
+ - * / % ** (**取模运算)



增强型赋值:

declare -i i=1
i=$[$i+1]
echo $i

let i+=1
echo $i

变量做某种算术运算之后回存至此变量中:
let i=$i+#
let i+=# 都是一样的效果


+= -= *= /= %= 都有这些


自增运算:
VAR=$[$VAR+1]
let VAR+=1
let VAR++

自减:
VAR=$[$VAR-1]
let VAR-=1
let VAR--

练习:写一个脚本
计算//etc/passwd 文件中的第10个用户和20个用户的id之和:
id1=$(head -10 /etc/passwd | tail -1 | cut -d: -f 3)
id2=$(head -20 /etc/passwd | tail -1 | cut -d: -f 3)
计算/etc/rc.d/init.d/function 和/etc/inittab文件的空白行之和

 


bash的测试类型
数值测试
字符串测试
文件测试


数值测试;数值比较
-eq
-ne
-gt
-ge
-lt 是否小于 less 较小的
-le 是否小雨等于


字符串测试:
== 是否等于
> 是否大于
< 是否小于
!= 是否不等于

-z "string" 判断指定的字符串是否为空 空则为真 不空则假 (zone 空的)
-n "string" 判断指定的字符串是否不为空 不为空则为真 空则为假 (not null)

=~ 左侧是一字符串 右侧是模式 表示左侧字符串能否被右侧的字符串匹配
匹配的时候只要能匹配一部分字符就可以
示例: [[ "$name" =~ o.* ]] [[ "$name" =~ o ]]
注意:
字符串要加引用 ""
要使用 [[]]

文件测试:
存在性测试 存在则为真 不存在则为假
-a FILE
-e FILE exist
存在性及类型测试
-c file 是否存在为字符设备文件 character
-b file 是否存在并且为块设备文件 简单就是 是否为块设备文件
-d file 是否存在并且为目录文件
-f file 是否存在为普通文件
-h file or -L file 是否存在 且为符号链接文件 links
-p file 是否为管道文件
-S file 是否为套接字文件


文件权限测试
-r file :是否存在并且对当前用户可读
-w file :是否存在并且对当前用户可写
-x file : 是否存在并且对当前用户可执行

特殊权限测试:
-g file 是否存在并且 拥有sgid权限
-u file 是否存在并且拥有 sUid 权限
文件是否有内容:
-s file 是否有内容
时间戳:
-N file 文件自上一次操作过是否被修改过 new
从属关系测试:
-O file 当前用户是否为问爱你的属主 order
-G file 当前用户是否为文件的属组
双目测试:
file1 -ef file2 是否为指向同一文件系统的相同的inode的硬链接
file1 -nt file2 新于file1文件
file1 -ot file2 旧与file1文件
组合测试条件
第一种方法:
common1 && common2 [ -O /etc/fstab ] && [ -r /etc/fstab ]
common1 || common2
!common1 取反
[ -z "$hostname" -o "$hostname"=="f3575248644b" -o "$hostname"=="localhost" ] && hostname www.magedu.com 。。。示例

脚本的状态返回值:
默认是脚本中执行的最后一跳命令的状态返回值
自定义状态退出状态码:
exit [n]: n 为自己指定的状态码;
注意:shell 今晨遇到exit时, 即会终止 整个脚本执行结束
id user3 &> /dev/null && exit 0 || useradd user3
解释: 如果 id user3 存在就会执行 && 后的退出 如果不存在 就会执行 || 后的添加用户

向脚本传递参数:
位置参数变量
ls /etc/var
myscript.sh argu1 argu2
引用方式:
$1,$2,$3


posted @ 2018-04-15 21:47  超我  阅读(6)  评论(0编辑  收藏  举报