shellb编程 之 实践出真知
1、查询file1 里面空行的所在行号
纯空行:awk ‘{if($0~/^$/)print NR}’ file
空行和带空格,制表符等的行:awk '$0~/^\s*$/' file
2、查询file1 以abc 结尾的行(是行的结尾,不是行内某个字段的结尾)
grep abc$ file1
3、打印出file1 文件第1 到第3 行
sed -n ’1,3p’ file1
head -3 file1 #-3中的短横必不可少
4, 在11 月份内,每天的早上6 点到12 点中,每隔2 小时执行一次/usr/bin/httpd.sh 怎么 实现?
0 6-12/2 * 11 * /usr/bin/httpd.sh
5,用shell编程中的while写1+2+3...+100:
#!/bin/bash i=1
total=0
while (($i<=100)) #while后的条件语句是整体,计算i是否小于等于100优先级比较高 ,此处用[$i -le 100]也是可以的
do
total=$(($total+$i)) #实际上shell编程不靠缩进来显示语句等级,故而缩进不如done有用。
i=$(($i+1))
done #done是必须的,不然会输出5050次“结果是xxx。”
echo "结果是$total"
6 shell文件操作
当前目录下创建四个文件m1.txt,m2.txt,m3.txt,m4.txt,用Shell编程,实现自动创建m1,m2,m3,m4四个目录,并将m1.txt ,m2.txt,m3.txt,m4.txt 四个文件分别拷贝到各自相应的目录下。
个人版:
#!/bin/bash
#创建四个文件和目录
touch m{1..4}.txt
mkdir m{1..4} for i in {1..4}
do
cp m$i.txt ./m$i
done
答案版:
#!/bin/bash
touch m1.txt m2.txt m3.txt m4.txt
I=1
while [ $I -le 4 ]
do
mkdir m$I
cp m$I.txt m$I
I=$((I+1))
done
7 账户和用户操作
编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50
#! /bin/bash
i=1
while [ $i -le 50]
do
if [ -n "`ls /etc/passwd | grep stud$i`" ] #个人觉得此处应该使用cat /etc/passed |grep stud$1
then
userdel -r stdu$i
else
echo "No find stdu$i"
i=$(($i+1))
done
8 判断文件类型,主要看test用法
判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下 。
echo -e "pls input filename \n" #-e其实没特别的用处,echo的目的是让read完成获得信息的工作
read FILENAME #相当于从键盘上获取应得的,
if [ -c $FILENAME ] #这个是test用法,意思是判断FILENAME是否是字符设备,方括号必须跟着空格
then
cp $FILENAME /dictionary1
else
echo "not charactor device file"
fi
补充,关于test的一些用法,可以直接写在方括号中,不加“test”
-d file 检查file是否存在并是一个目录 #-d测试会检查指定的文件名是否在系统上以目录形式存在
-e file 检查file是否存在
-f file 检查file是否存在并是一个文件
-r file 检查file是否存在并可读
-s file 检查file是否存在并非空
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-O file 检查file是否存在并属当前用户所有
-G file 检查file是否存在并且默认组与当前用户相同
-c file 检查file是否是字符设备文件
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧
9 创建目录批量设置权限
目录下建立10个目录,即user1~user10,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行
我的答案:
#!/bin/bash #批量创建目录并且设置权限(默认当前文件位置下)
for i in {1..10}
do
mkdir user$i
chmod 754 user$i
done
官方解答:
#! /bin/bash
i=1
while [ $i -le 50 ] #个数多少不影响
do
if [ -d /userdata ] #首先判断一下userdata是不是一个目录
then
mkdir -p /userdata/user$i #如果是一个目录,直接在其下创建user目录就可以了
else
mkdir /userdata #如果不存在或者不是目录格式文件,那就先创建,再开始创建user目录
mkdir -p /userdata/user$i
fi
chmod 754 /userdata/user$i #设置目录权限
i=$(($i+1)) #迭代条件
done
注意,查看某个目录的权限的情况需要用:ls 的-d参数,意思是查看这个目录本身的权限。
10 用户和用户组的问题
添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30
答案:
#!/bin/sh
i=1
groupadd class1 #创建群组
while [ $i -le 30 ]
do
if [ $i -le 9 ] ;then #个位数的时候添加0凑够两位数
USERNAME=stu0${i}
else #两位数的时候直接用就行了
USERNAME=stu${i}
fi
useradd $USERNAME #添加用户,此时没有指定用户的根目录,所属的组等信息,唯一指定的是账户名
mkdir /home/$USERNAME
chown -R $USERNAME /home/$USERNAME #把文件夹的所属改为USERNAME变量代表的名称
chgrp -R class1 /home/$USERNAME
#把所有/home/$USERNAME文件夹下的子文件或者子文件夹改变属于为class1这个组的
i=$(($i 1))
done
shellb编程 之 实践出真知的更多相关文章
- shell编程 之 实践出真知(代码实例)
1,在任意一个文件夹里,新建10个空文件,文件名为t1.txt-t10.txt ,文件内容分别是11-20 ,就一行,然后把这个10个文件命名成t1.sh-t10.sh. 老司机版: $ for (( ...
- 万事开头难 && 实践出真知
实践出真知,真是千古不变的真理. 前几天在顺手做一个万年历项目,实现了用TFT屏显示实时时间,日期,温度,和按键设置时间,能在特定时间显示特定的话语在显示屏上面.其实这个项目现在想想还是挺简单的.我的 ...
- python练习 之 实践出真知 中心扩展法求最大回文子串 (leetcode题目)
1 问题,给定一个字符串,求字符串中包含的最大回文子串,要求O复杂度小于n的平方. 首先需要解决奇数偶数的问题,办法是:插入’#‘,aba变成#a#b#a#,变成奇数个,aa变成#a#a#,变成奇数个 ...
- 【朝花夕拾】Android自定义View篇之(九)多点触控(下)实践出真知
前言 在上一篇文章中,已经总结了MotionEvent以及多点触控相关的基础理论知识和常用的函数.本篇将通过实现单指拖动图片,多指拖动图片的实际案例来进行练习并实现一些效果,来理解前面的理论知识.要理 ...
- Jfinal——实践出真知
什么是Jfinal? JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所 ...
- 实践出真知-所谓"java没有指针",那叫做引用!
java没有指针,那我们如何实现动态数组呢? 上篇评论提及 ”不仅有vector,还有ArrayList,还有List,可做选择“. "java没有指针",那叫做引用! 今天尝试了 ...
- 实验5 Spark SQL编程初级实践
今天做实验[Spark SQL 编程初级实践],虽然网上有答案,但都是用scala语言写的,于是我用java语言重写实现一下. 1 .Spark SQL 基本操作将下列 JSON 格式数据复制到 Li ...
- [04] C# Alloc Free编程之实践
C# Alloc Free编程之实践 上一篇说了Alloc Free编程的基本理论. 这篇文章就说怎么具体做实践. 常识 之所以说是常识, 那是因为我们在学任何一门语言的时候, 都能在各种书上看到各种 ...
- 实验 2 Scala 编程初级实践
实验 2 Scala 编程初级实践 一.实验目的 1.掌握 Scala 语言的基本语法.数据结构和控制结构: 2.掌握面向对象编程的基础知识,能够编写自定义类和特质: 3.掌握函数式编程的基础知识,能 ...
随机推荐
- 面试遇到两个稍显变态的题目,mark一下
一. 答案: 二. 这个实际上就是删掉了最大的元素之后,再找一次max,于是就是第二大的元素了. 我也这么想过,但是我基础不好,忘了有max方法,于是就想着两次遍历,但是就不符合题意了 图中的答案甚好 ...
- day15-ajax和jquery
回顾: 分页: 将数据按照页码划分,提高用户的体验度. 分类: 逻辑分页:一次性将内容加载到内存(list),获取自己想要的数据 sublist截取.缺点:维护起来麻烦 物理分页:(经常使用) 每次只 ...
- 常用的一些cmd命令
常用的一些cmd命令总结 ----------- 1.ping主机名字,类似于ping机子的IP地址 2.查看当前用户的dos命令 3.查看机器名 调出计算器命令:calc 调出远程桌面的命令:mst ...
- USB_4大描述符
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aaa6695798/archive/2009/11/06/4776202.aspx 在USB描述符中,从上到下分为四个 ...
- 运维监控-Zabbix Server 使用微信 WeChat 告警
运维监控-Zabbix Server 使用微信 WeChat 告警 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 微信公众号告警每个一天只支持1000次告警,如果超出这个次数了就不 ...
- Hadoop生产环境配置文件
前提: ①已经搭建好zk ②已经安装好JDK 正文开始: 首先从官网下载hadoop 2.7.3 (虽然官网3.0都出了.但是目前还没经过完全的测试..待测试后...) 一.hadoop-env.sh ...
- Java Web之表单重复提交问题
上篇文章讲了验证码的制作,提及到了一个问题,就是表单重复提交的问题,可能在上次那个验证码中感觉不是那么的重要 现在我新写一个例子,转钱.通过这个例子你就知道表单重复提交有多恐怖了. 先来简单的介绍一下 ...
- springboot 日志【转】【补】
市面上的日志框架 日志门面 (日志的抽象层) 日志实现 JCL(Jakarta Commons Logging)(2014) SLF4j(Simple Logging Facade for Java) ...
- 前端基础之JQuery - day15
写在前面 上课第15天,打卡: 张国臂掖,以通西域: ########### # 课上简书 # ########## http://jquery.cuishifeng.cn/index.html JQ ...
- C# string 保留数字英文字母
using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressi ...