现在的位置: 首页 > 综合 > 正文

Linux shell编程02 shell程序的执行 及文件权限

2018年03月21日 ⁄ 综合 ⁄ 共 1976字 ⁄ 字号 评论关闭

第一个shell脚本

1.       shell编程的方式

     交互式shell编程

     非交互式shell编程:执行的语句存放到一个文件

     shell脚本:可以任意文件名,建议扩展名为sh

2.       shell脚本的语法(algol语法:basic|pascl)

字word:字面值(word),标示字(name),保留字

   使用空格tab键 分隔

语句statement:

        使用;与newline键(回车)等分隔

块block:

        多种:流程控制块/函数块

元字符:容易歧义字符

   | ; & ( ) 空格 < > { } * 回车

实验:使用语句的多种形式

1.       分号分隔语句:

       命令行输入:ls ; echo “hello”

       两个命令都被执行

2.||分隔语句

         ls || date

  || 分隔语句两个语句中任意一个语句执行成功就返回

3.&&分隔语句

          ls && date

   &&分隔语句两个语句其中一个执行失败就终止

4.| 分隔语句:管道

       5. & 必须加在语句的最后:后天运行

       6. <newline> 必须在语句最后

实验:使用块

(语句列表)

        (ls ; date) 或者

         (

          ls

          date

          )

 

 {语句列表;}

     { ls;date; } 或者

     

 

{

 ls;

 date;

}

 

shell的执行:

1.  条件

没有语法错误

文件要具备执行权限

   chmod +x *.sh 或 chmod u+x *.sh

   或绝对模式: chmod 07777  *.sh

补充:

   文件权限   d(文件类型)  rwx rwx  rwx

                            u   g    o

   文件类型(7种):

-         普通文件

d  目录文件

c  字符设备文件

b 块设备文件     /dev/sda1

l 符号链接文件(软连接)

p 管道文件     mkfifo p.pipe 

s  socket文件

 

           特殊权限:

                  粘附位:禁止有读写权限的其他用户删除文件

                         例子:

                           p.pipe文件

                           prw-r—r-- …………….p.pipe

                           chmod 01777 p.pipe

                           prwxrwxrwt …………p.pipe   其他用户的最后一的执行权限x变为t  设置了粘附位

                           chmod 01000 p.pipe

                           p--------T…………..p.pipe   其他用户权限最后一位变为T

                    如果其他用户权限的执行权限位为t 表示设置了粘附位和有执行权限。如果其他权限的执行权限位为T 表示只设置粘附位,没有执行权限

 

                  用户设置位:其他用户在执行拥有者的执行文件时,其他用户临时拥有拥有者的所有权限。

                  chmod  04000  设置用户设置为

                  p—S------……………p.pipe    S表示用户权限没有执行权限,s表示设置了用户设置位,用户也有执行权限

                 用户设置位作用:设置了用户设置位后,即使有读写权限也不能删除文件

 

比如: passwd就是通过用户设置位允许任何执行者访问/etc/shadow

 

                  组设置位

                  chmod 02000 设置组设置位

                  p-----S---………….p.pipe    同理用户设置位

     

 

first01.sh

ls

date

 

 

chmod +x first01.sh

./first01.sh

 

 

执行shell脚本的方式

1.       方式1:

     ./shell文件:使用当前shell执行解释程序

2.       方式2:

     shell程序 ./shell文件

3.       在shell脚本中指定执行shell程序的解释程序

shell程序中 #为注释

在第一行使用:

#!/bin/bash   解释shell程序的程序

   问题:程序行与代码行中#!那个优先

   结论:命令行优先指定shell程序

        命令行没有,则代码中指定优先

        都没有,采用命令行的默认shell程序

 

抱歉!评论已关闭.