在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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件