Shell脚本编程

Shell脚本编程

脚本本质:

  • /bin/bash
  • /usr/bin/python

chmod赋权方式

当前文件必须为可执行文件, 绿色为可执行文件,白色为不可执行文件
由不可执行文件变为可执行文件: chmod +x 文件名
指令名称 : chmod
使用权限 : 所有使用者
使用方式 : chmod mode file…
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。
mode : 权限设定字串,格式如下 : [u g o a][[+ - =][r w x X]…][,…],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

chmod也可以用数字来表示权限 如 chmod 777 file

语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
在这里插入图片描述
执行文件方式:

  • 当前Shell: source / .
  • 新建子Shell: 1. /bin/bash 文件名 2. ./文件名

重定向

< //标准输入重定向
//标准输出重定向 清空原先的内容后添加新的内容

//标准输出重定向 在原来内容换行下方添加新的内容
n >& m 表示:将输出文件 m 和 n 合并,而且n重定向到m。
n <& m 表示:将输入文件 m 和 n 合并,而且n重定向到m。
/dev/null 文件
//例子:
./test.exe >/dev/null 2
//结果知道把屏幕上比显示错误信息。这可是自欺欺人哦,一般还是不要这样做的好哦。
/dev/null是一个特殊的文件,写入到它的内容想到与被丢弃,像极了windows的回收站,可是如果我们从null找文件可是什么都赵不到的哦

  • 程序自身都有I/O
    0 – 标准输入
    1 – 标准输出
    2 – 错误输出

  • 控制程序I/O(输入/输出)位置

  • Linux中一切皆文件

  • 程序是否处理I/O

  • 绑定顺序: 从左到右

  • 重定向有顺序

  • 重定向操作符
    左侧与文件描述符不能有空格,
    右侧,如果也是文件描述符,需要搭配&。同时与&符号不能有空格
    例: ls -l / /tmp 1 > out.txt 2>& 1 1代表 / 的输出, 2 代表/tmp的输出。 把 / 下的文件的内容输入到out.txt中, 然后吧/tmp的内容追加到 / 的输出文件的后面

    引用

     双引号: 弱引用,参数扩展
     单引号: 强引用,不可嵌套
    

    退出状态与逻辑判断

     echo  $?     0为执行成功  其他为失败
     a || b           a为错误执行b,a正确不执行b
     a && b		   a为真执行b,a为假不执行b
    

    算数表达式

     let 算数运算表达式
     	let  c = $A + $B
     $((算数表达式))
     	c = $(($A+$B))
    

    流程控制表达式

  • if

  • while

  • for

练习:

用户给定路径, 输出文件大小最大的文件 递归子目录

#! /bin/bash
oldIFS=$IFS
IFS=$'\n'
for i in `du -a $1 | sort -nr`;do
        filename=`echo $i | awk '{print $2}'`
        if [ -f $filename ];then
                echo $filename
                break
        fi
done
IFS=$oldIFS

在linux中添加用户

#! /bin/bash
[ ! $# -eq 1 ] && echo "args error!!!" && exit 2
id $1 >&/dev/null && echo "user exist" && exit 3
useradd $1 >&/dev/null  && echo $1 | passwd --stdin $1 >&/dev/null && echo "user add success" && exit 4
echo "I don`t know, user add fail" && exit 5


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值