zoukankan      html  css  js  c++  java
  • bash脚本编程基础及配置文件

    (一)shell脚本编程

    • 编程语言的分类:
      • 根据运行方式:
        • 编译运行
        • 解释运行
      • 根据编程过程中功能的实现是调用库还是调用外部的程序文件:
        • shell脚本编程:利用系统上的命令及编程组件进行编程
        • 完整编程:利用库或编程组件进行编程
      • 根据编程模型:
        • 过程式编程:C,bash
        • 面向对象编程:Java,C++
    • shell脚本编程特性
      • 过程式编程
      • 非完整编程
      • 解释运行
    • 如何写shell脚本
      • shell脚本一般以“.sh”结尾
      • 文本编辑器
        • 类型:
          • 行编辑器:sed
          • 全屏编辑器:nano,vi,vim
        • nano:
          • 打开文件方式:nano FileName,如果文件不存在会创建
          • 快捷键的使用中,“^”表示control键
      • shell脚本是什么
        • 命令的堆积
        • 由于很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足,以避免其运行中发生错误,例如:id NewUser || useradd NewUser
      • 脚本文件的第一行,顶格写:给出shebang/解释器路径,用于指明解释执行当前脚本的解释器程序文件
        • 常见的解释器:
          • #!/bin/bash  -->bash脚本
          • #!/bin/python  -->python脚本
          • #!/bin/perl  -->perl脚本
          • #!是shebang的固定开头格式
      • 脚本中的空白行会被解释器直接忽略,可以使用单独的echo显示空白行
      • 脚本中以#开头的行,除了shebang,其它的行都会被视为注释行
      • shell脚本的运行是通过运行一个子shell进程实现的
      • 运行脚本
        • 赋予执行权限,并直接运行此程序文件
          • chmod +x FileName
          • FileName
        • 直接运行解释器,将脚本以命令行参数传递给解释器程序
          • 此时脚本不需要执行权限,因为做为参数使用
          • bash FileName

    练习:写一个脚本,完成以下功能:

    1,显示/etc目录下,以p或者P开头的所有文件和目录本身

    2,显示/var目录下的所有文件和目录本身,以大写字母格式输出

    3,创建临时文件/tmp/tmpfile.XXXXX

    答案:

    #!/bin/bash

    echo "show files in /etc"

    ls -d /etc/[pP]*

    echo

    echo "show files in /var"

    ls -d /var/* | tr 'a-z' 'A-Z'

    echo

    echo "create a temp file in /tmp"

    mktemp /tmp/tempfile.XXXXX

    • bash的配置文件,分为两类
      • 交互式登录的shell进程:
        • 直接通过某终端输入账号和密码后登录打开的shell进程
        • 使用su命令:su - UserName,或者su -l UserName执行的登录切换
      • 非交互式登录的shell进程
        • su UserName执行的登录切换
        • 图形界面下打开的终端
        • 运行脚本
      • profile类:
        • 为交互式登录的shell进程提供配置(说法不十分准确)
        • 全局类profile:
          • 对所有用户都生效
          • /etc/profile
          • /etc/profile.d/*.sh
        • 用户个人类profile:
          • 仅对当前用户有效
          • ~/.bash_profile
        • 配置文件读取次序:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc,后读的配置会覆盖之前的配置
        • 功用
          • 定义环境变量
          • 运行命令或者脚本,比如用户一登录就运行一个初始化脚本
      • bashrc类:
        • 为非交互式登录的shell进程提供配置(说法不十分准确)
        • 全局类bashrc:
          • 对所有用户都生效
          • /etc/bashrc
        • 用户个人类bashrc:
          • 仅对当前用户有效
          • ~/.bashrc
        • 配置文件读取次序:~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh,后读的配置会覆盖之前的配置
        • 功用
          • 定义本地变量
          • 定义命令别名
      • 仅管理员可以修改全局配置文件
      • 配置文件中新增的特性,只对下次登录有效,对当前shell进程无效/命令行中定义的特性,仅对当前shell进程有效,对下次登录的shell进程无效
      • 为了让配置文件中新增的特性立即生效
        • 通过命令行重复定义一次
        • 强制bash重新读取配置文件
          • 方式一:source ConfigFileName
          • 方式二:. ConfigFileName
  • 相关阅读:
    Postman使用教程
    CAD和ArcGIS转换 矢量配准
    SAP CRM Advanced search和Simple search里Max hit表现行为的差异
    SAP CRM Product simple search的启用步骤
    如何快速定位SAP CRM订单应用(Order Application)错误消息抛出的准确位置
    如何动态修改SAP CRM WebClient UI表格栏的宽度
    如何在SAP CRM WebClient UI里创建web service并使用ABAP消费
    如何处理SAP CRM Web Service错误
    如何使用SAP CRM WebClient UI实现一个类似新浪微博的字数统计器
    如何开启SAP CRM基于WORD模板创建附件的功能
  • 原文地址:https://www.cnblogs.com/jacky1982/p/7633741.html
Copyright © 2011-2022 走看看