Shell脚本

https://blog.51cto.com/zero01/2046242

在shell编程中,如果使用了系统命令就要使用`

例.编写一个名为chname的程序,将当前目录下所有的.txt文件更名为.doc文件

(4)basename命令格式:

  • basename [pathname] [suffix]
  • basename [string] [suffix]
  • suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

例.

basename /usr/bin/sort                     输出"sort

basename ./include/stdio.h .h          输出"stdio"

为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来。

 

例.编写一个名为chuser的程序,执行中每隔5分钟检查指定的用户是否登录系统,用户名从命令行输入;如果指定的用户已经登录,则显示相关信息。 

(1)who命令

打印当前都有谁登录到系统中的相关信息 。who命令只会显示真正登录到系统中的用户。它不会显示那些通过su命令切换用户的登录者。

 

(2)grep命令格式:

  • grep pattern files            在files中查找pattern字符串(然后显示带有该字符串的行?)
  • grep -i pattern files         不区分大小写地搜索。默认情况区分大小写
  • grep -w pattern files       只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)

这里还有些用于搜索的特殊符号:\< 和 \> 分别标注单词的开始与结尾。 

例.

grep man * 会匹配 ‘Batman’、‘manic’、‘man’等, 
grep '\<man' * 匹配‘manic’和‘man’,但不是‘Batman’, 
grep '\<man\>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。

更多grep用法

(3)|  运算符

  • command 1 | command 2

他的功能是把第一个命令command 1执行的结果作为command2的输入传给command 2

(4)> 运算符

  • echo “ff" > 文件                   将输出的内容输入到指定文件,内容不显示到屏幕
  • echo "hvkjvk" >/dev/null      将输出内容删除

采用重定向到 /dev/null 空文件的目的是不显示查找到的用户的其他信息

 

例.使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html

(1)seq

  • seq  尾数
  • seq  首数 尾数
  • seq  首数 增量 尾数
  • -w    在列前添加0 使得宽度相同
  • -f      --format=格式

以指定增量从首数开始打印数字到尾数,如果省略了首数或者增量,则默认其值为1。当首数小于尾数时增量一般为正值,
相反在首数大于尾数时增量一般为负数。

例.

要求宽度为3位,不足补零

seq -f "%03g" 98 101

输出:

seq -w 98 101

结果是一样的

(2)RANDOM

Linux的系统随机变量,是一个5位的随机数。

可用 RANDOM%一个数 来产生一个自己想要范围的随机数

在网上看到有人用       $RANDOM | md5sum | cut -c 1-10      生成一个10位的数字与a-f的随机串

  • md5sum:用于生成和校验文件的md5值。md5值是一个128位的二进制数据,转换成16进制则是32(128/4)位的进制值。
  • cut:文件内容查看,显示行中的指定部分,删除文件中指定字段。-c:仅显示行中指定范围的字符。

 

例.批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机8位字符串)。

(1)关于用户相关的shell语句

(2)--stdin

这个选项用于从标准输入管道读入新的密码。 

使用 echo 方式来重置Linux 系统用户密码:

echo “新密码” | passwd --stdin 用户名

(3)tee

  • tee [OPTION]... [FILE]...
  • [command] | tee -a [file]      -a表示追加到文件,并不覆盖之前的内容
  • [command] | tee [file1] [file2] [file3]     写入多个文件

​​​​​​​从标准输入中复制到每一个文件,并输出到标准输出。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值