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


    第一个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程序

  • 相关阅读:
    C++基于范围的for循环性能测试(针对std::vector)
    C++ 中std::function 、std::bind的使用和lambda的使用
    C++ auto 关键字的使用
    C++内存管理解析
    c++类内存分布解析
    Windows上编译GRPC
    在从1到n的正数中1出现的次数
    POJ 1009 解题报告
    Cheat Engine 笔记
    Cheat Engine 教程 Step 9
  • 原文地址:https://www.cnblogs.com/riskyer/p/3341568.html
Copyright © 2020-2023  润新知