首页 > 代码库 > 马哥笔记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