• 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
  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    小程序之scroll-view用法
    uni-app解决小程序圆角样式不生效
    MAC设置允许任何来源
    小技巧:使用命令行打开vscode 以及 sublime 工具
  • 原文地址:https://www.cnblogs.com/jacky1982/p/7633741.html
Copyright © 2020-2023  润新知