在Sony的shell 学习(2010/07开始)

26 篇文章 0 订阅

1 关于循环查找文件,不能用exit 1,否则跳出循环了:

 

FileList=" a.txt b.txt c.txt "

 

for file in $FileList

 

do

 

if [ ! -f $file ]

then

echo The file is not exit

exit 1  // this line should be deleted, otherwise, the second file will not be checked

 

else

 

echo File is found ,please go next step.

 

fi

 

done

 

 

2关于对文件内容的过滤,条件叠加的话,应把文件放在第一个就可以避免覆盖:

 

cat File | grep -v '^#' | grep -v '^$'  //功能是去掉以#开头的注释行和空行

 

注意不能写成:grep -v '^#' file| grep -v '^$'  file // This line is wrong

 

 

3:关于单引号和双引号的区别:

  一般区别不大,就是" " 在有$ / 等特殊字符时会有不同。

 

4:关于文件后加时间戳:

 

 Datestr=`date '+%Y%m%d-%H%M%S' ` // 注意单引号,反引号都用到了,还有%后的大小写

 cp $1 ./backup/$1$Datestr

 

 5:关于增加用户和组:

 

功能说明:建立用户帐号。

语  法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]

补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

参  数:
 -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。  
 -d<登入目录>  指定用户登入时的启始目录。 
 -D  变更预设值. 
 -e<有效期限>  指定帐号的有效期限。 
 -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。 
 -g<群组>  指定用户所属的群组。 
 -G<群组>  指定用户所属的附加群组。 
 -m  自动建立用户的登入目录。 
 -M  不要自动建立用户的登入目录。 
 -n  取消建立以用户名称为名的群组. 
 -r  建立系统帐号。 
 -s<shell>   指定用户登入后所使用的shell。 
 -u<uid>  指定用户ID。

 

 还是看我写的一个case:

 

要求:添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

 

groupadd sony

for i in `seq 1 30`
do
       
if [ $i -lt 10 ];then
                num
="0$i"
       
else
                num
=$i

  fi

    useradd -g sony -d /home/std${num} std${num}
       
chmod 754 /home/std${num}
done

注意:我试了一下,okay, 确实在/etc/passwd 下已经建立了30个用户,就是权限要设置一下,我会马上一下密码。

查看其中一个用户的组的情况:groups stu01

补充一下:看文件夹权限:ls -ald stu01

 

6:关于密码的增加和修改:

  超级用户root,下passwd stu01 ,输入两次密码就可以了完成设置 ,其他普通用户stu01 ,要是想切换到stu02, 用su stu02, 还非得要有密码。批量生成密码不成问题。

 

当然密码如果太复杂,也可以删除掉:在root用户下:passwd -d stu01 就可以啦,当然普通用户不能

 

 7:2010/07/07学习:

关于批量生成不同日期的空文件

 

read -p "Please input the file name :" filename

 

date1=$(date --date='2 days ago' +%Y%m%d)                                // 前两天的日期

date2=$(date --date='1 days ago' +%Y%m%d)

date3=$(date +%Y%m%d)

file1=${filename}${date1}

file2=${filename}${date2}

file3=${filename}${date3}

 

touch $file1

touch $file2

touch $file3

 

---------------------------------------------------------------------

 

8: 关于显示文件的全部时间:ls --full-time                      //可以用于截取不同的年份

 

 

9:今天又联系了一下cut ,用到它的几个参数: -b -c -f -d

 

先看源文件:

stu01:X:529:503::/home/stu01:/bin/bash

stu02:X:530:504::/home/stu02:/bin/bash

stu03:X:531:505::/home/stu03:/bin/bash

......

 

像截取有冒号的文件,可以指定域截取:

cut -f1 -d ':' /etc/passwd | head -10                    //-f1 是指定第一个域,-d ':' 以冒号为临界点

 

看一下执行结果:

stu01

stu02

stu03

......

stu10

 

在看一下:cut -f3 -d ':' /etc/passwd | tail -10

 

结果:

529

530

531

......

538

 

 留下一个问题,如果分割符是TAB,那怎么办?可以试试:cut -f1- -s --output-delimiter='/' a.txt

TAB被换成/

 

10 关于文件内容的替换,tr 的作用就大了:

将文本文件从小写转换为大写并将结果存入一个新文件,格式为:
cat file-to-translate | tr "[a-z]" "[A-Z]" > new-file-name


命令tr -cs "[a-z][A-Z]" "[/012*]"将文件每行所有不包含在[a-z]或[A-Z](所有希腊字母)的字符串放在字符串1中并转换为一新行。-s选项表明压缩所有新行, -c表明保留所有字母不动。


tr的第一个功能就是转换控制字符,特别是从dos向UNIX下载文件时,忘记设置ftp关于回车换行转换的选项时更是如此。
如果需要删除文件中^M,并代之以换行。使用命令:
tr -s "[/015]" "/n" < input-file
或者用下述命令得同样结果:
tr -s "[/r]" "[/n]" < input-file
也可以用下述命令:
tr -s "/r" "/n" < input-file

另一个一般的Dos到UNIX转换是命令:
tr -s "[/015/032]" "[/012*]" < input-file
将删除所有^ M和^ Z,代之以换行。

要删除所有的tab键,代之以空格,使用命令:
tr -s "[/011]" "[/040*]" < input-file

替换passwd文件中所有冒号,代之以tab键,可以增加可读性:
tr -s "[:]" "[/011]" < /etc/passwd
或者用下述命令得同样结果。这里使用tab键的速记符:
tr -s "[:]" "[/t]" < /etc/passwd

 

11:2010/07/08 学习

 

root用户给stu01增加一个附属组:usermod -G test stu01    //修改用户的附属组为test

 

参考usermod 的其他用法:

 

linux usermod 命令详解
  功能说明:修改用户帐号。
  语  法:usermod [-LU][-c ][-d ][-e ][-f ][-g ][-G ][-l ][-s ][-u ][用户帐号]
  补充说明:usermod可用来修改用户帐号的各项设定。
  参  数:
  -c  修改用户帐号的备注文字。
  -d登入目录>  修改用户登入时的目录。
  -e  修改帐号的有效期限。
  -f  修改在密码过期后多少天即关闭该帐号。
  -g  修改用户所属的群组。
  -G  修改用户所属的附加群组。
  -l  修改用户帐号名称。
  -L  锁定用户密码,使密码无效。
  -s  修改用户登入后所使用的shell。
  -u  修改用户ID。
  -U  解除密码锁定。

今天也学习了:chmod :练习了:chmod u+r file(or folder) , chmod u+w file(or folder) chmod u+x file(or folder)

还有g+r g+w g+x, o+r o+w o+x 

有些文件没有权限操作,是因为文件夹的权限不够。

 

还有改变file 的用户和组:

chown test1:test2 data       //data 的用户变为:test1 ,所属的组变为:test2,   我在root 用户可以执行的,其他用户要试试

 

12:删除用户:

  userdel -r stu01          // 具体的log 在/var/log/secure 上可以看的到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenghuiping2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值