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

2023-11-29 13:48
文章标签 学习 shell 07 2010 sony

本文主要是介绍在Sony的shell 学习(2010/07开始),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 上可以看的到

这篇关于在Sony的shell 学习(2010/07开始)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/433067

相关文章

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S