首页 > 代码库 > 马哥笔记07_01~~~07_04
马哥笔记07_01~~~07_04
vim 显示行号:est number
也就显示行号:vim ~/.vimrc
添加:set nu
echo $1 使用空格隔开参数,
例如:echo user1,user2 中的“user1,user2”看做一个参数
例子:带参数的sh脚本,!!!!(逗号隔开各参数)
运行格式:./SOMESHELL.sh OPTION1,OPTION2
例子功能:输入用户名,如果用户存在,就显示用户已存在,如果用户不存在,就差创建用户,并用用户名作为密码。
#!/bin/bash
#
echo $1
for I in `echo $1 | sed ‘s/,/ /g‘`; do ///////把逗号转化为空格;
if id $I &> /dev/null; then
echo "$I exists."
else
useradd $I
echo $I | passwd --stdin $I &> /dev/null
echo "add $I finished."
fi
done
测试:
./addusertest.sh user1,user2
组合条件测试
例子:让某程序只识别q,Q,quit,Quit作为退出命令的关键字
quitquit.sh
#!/bin/bash
#
if [ $1 == ‘q‘ -o $1 == ‘Q‘ -o $1 == ‘Quit‘ -o $1 == ‘quit‘ ];then
echo "quiting..."
exit 0
else
echo "Unknow commands."
fi
07_03
let I=$[ $I+1 ]
SUM = $ [$SUM+$I]
let SUM+=$I
let I+=1 相当于 let I++
同理:
-=
*=
/=
%=
declare -i EVENSUM = 0
declare -i ODDSUM = 0
grep,egrep,fgrep可以用于文本查找
locate,find文件查找。
locate命令,非实时查找。是根据全系统全系统文件数据库进行(精确查找)。
linux每天会自动把本机所有信息放到数据库中(什么时候存放,取决于你的任务计划)。
手动执行更新文件数据库的命令:
#updatedb
@@@需要很长时间来更新该文件数据库,不过查找的速度很快。
find:实时、精确、慢(遍历指定目录中的所有文件完成查找,速度慢)(支持众多查找标准)
find 查找路径 查找标准 处理运作
@@@查找路径省略后,默认当前目录;
@@@查找标准,默认为指定目录下的所有文件;
@@@处理运作 默认为显示;
示例:
find /etc -name ‘passwd‘
选项:
-name 按名字查找
-iname 不区分大小写查找
-regex PATTERN:基于正则表达式查找 ??????????????
-user UNAME:根据属主查找
-group GROUPNAME:根据属组查找
-uid UID:根据uid查找
-gid GID:根据GID查找
-nouser:查找无属主文件
-nogroup:查找无属组文件
-size:指定查找大小
#K #M #G
-size [+|-] #K
(无单位的话默认字节)
例子:
find /etc -name ‘e*‘ -size +10k
查找/etc下大于10k的名字包含e的文件和文件夹
-type:
f:普通文件
d:目录
c:字符
b:块
l:链接文件
p:管道设备
s:套接字设备
例子:find /etc -name ‘e*‘ -type f
在etc内,查找名字包含e的普通文件。
一旦用户被删除,则之前属于该用户的文件都改成属于此用户的ID号(UID)
例如:删除hadoop用户后用
find /tmp -uid 2003
☆组合条件查询
-a且
-o或
-not非
例子:
找当前目录下不是user1也不是user2的文件:
find ./ -not -user user1 -a -not -user user2
或者
find ./ -not\ (-user user1 -o -user user2)
@@@摩根定律:整体取反 等于单个取反 再把里边的符号反过来
07_04
特殊权限
passwd:s
SUID:
运行某些程序时,相应进程的属主是程序文件自身的属主,而不是启动者。
SGID:
运行某些程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组。
sticky:在一个公共目录,每个都可以创建文件,删除掉自己的文件,但不能删除别人的文件。
马哥笔记07_01~~~07_04