一个完整的程序的组成部分:
一个完整的应用程序,一般包括四类文件;
二进制文件:
头文件和库文件:
帮助文件:
配置文件:
bash——CLI中的一种:命令行界面(Command Line Interface for batch scripting)
bash同样属于一种完整的应用程序,上述四类文件,bash都有; 二进制文件:/bin/bash 头文件和库文件:/bin64/ 帮助文件:/usr/share/man/man1/bash.1.gz 配置文件: 三类: 1.profile类 为交互式登录的shell进程实现功能初始化的配置文件; 2.bashrc类 为非交互式登陆的shell进程实现功能启动配置的配置文件; 3.logout类 为交互式登录的shell进程提供终止及清理类功能的配置文件; bash的类型: 1.交互式登录的bash 1)直接通过某个终端输入账户信息和密码之后打开的bash数据; 2)su -|-l USERNAME 执行登录打开的bash进程; 配置文件的加载顺序: /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc -->/etc/bashrc 2.非交互式登录的bash 1)在图形机界面下,通过菜单项或右键菜单打开的终端所启动的bash进程; 2)使用su USERNAME执行切换登录打开的bash进程; 配置文件的加载顺序: ~/.bashrc -->/etc/bashrc -->/etc/profile.d/*.sh bash的配置文件 : 1.profile类: 全局配置文件: /etc/profile /etc/profile.d/*.sh 注意:在RHEL或CENTOS系列的发行版linux操作系统中,通常会存在这样的情况:如果一个配置文件的内容很多,格式很复杂,将会尝试将此配置文件切割拆分为多个片段配置文件,往往把最核心最主要的配置留在主配置文件中,将一些附属的或者扩展的配置内容分散存放到各个片段配置文件中;而被切分出来的片段配置文件一般会统一保存在"程序名称.d"命名格式的目录中,而我们约定,在这类目录中保存的片段配置文件的后缀会是统一的字符串; 个人配置文件: ~/.bash_profile profile类配置文件的作用: 1.用与定义用户的环境变量; 2.用于运行脚本或执行命令; 2.bashrc类: 全局配置文件: /etc/bashrc 个人配置文件: ~/.bashrc bashrc类配置文件的作用: 1.用于定义本地变量; 2.用于定义命令别名; 3.用于定义umask; 注意:只有root用户能够修改全局类的bash配置文件,普通用户只能修改其家目录中属于其个人的配置文件; 为什么要为bash使用配置文件? 所有利用bash命令行完成的命令操作,只要没有涉及到文件修改的,一般都只是针对当前的shell生效,一旦shell进程结束,则此前所有的操作的生命周期就走到尽头,即配置失效; 配置文件的作用: 1.能够使用户赖以生存的配置信息长期有效; 2.能够让用户保存此前的配置内容; 让你配置文件中新进修改的内容生效: 1.注销重新登录,打开新的shell进程; 2.source命令; 3.exec命令; 3.logout类: 个人配置文件: ~/bash_logout 作用:在关闭shell进程之前,清楚某些用户自定义的配置,删除某些临时文件或目录,以及撤销用户此前定义的变量,清理某些可能会引发安全问题的隐患等操作;bash的变量中存放的字符串的处理方式: bash变量: 弱变量: 1.无需事先定义即可应用; 2.变量没有数据类型的硬性要求,默认是字符型; 1.字符串切片: ${#VAR}:返回字符类型变量的变量值的长度; ${VAR:offset}:返回字符型变量中第"offset"之后的内容,不包括第"offset"位置的内容;offset取值范围为:0-$[${#VAR}-1] ${VAR:offset:number}:返回字符型变量中从第"offset"个字符后开始长度为"number"的字符内容; ${VAR: -length}:去字符型变量字符串最右侧的"length"长度的内容; 注意:在"length"之前要留有空格; 2.基于模式(PATTERN)取字符串 ${VAR#*PATTERN}:自左而右,查找VAR变量所存储的字符串中,第一次被PATTERN匹配的字符,删除从字符串开始到第一个被PATTERN匹配的字符之间的所有字符; ${VAR##*PATTERN}:自左而右,查找VAR变量所存储的字符串中,所有被PATTERN匹配的字符,删除从字符串开始到最后一次PATTERN匹配的字符之间的所有字符; ${VAR%PATTERN*}:自右向左,查找VAR变量所存储的字符串中,第一次被PATTERN匹配的字符,删除从字符串结尾到第一个被PATTERN匹配的字符之间的所有字符; ${VAR%%PATTERN*}:自右向左,查找VAR变量所存储的字符串中,所有被PATTERN匹配的字符,删除从字符串结尾到最后一个被PATTERN匹配的字符之间的所有字符; 3.查找替换: ${VAR/PATTERN/SUBSTRING}:在VAR变量中,自左而右查找能够被PATTERN匹配的内容,将其中第一个匹配到的结果更换成SUNSTRING; ${VAR//PATTERN/SUBSTRING}:在VAR变量中,自左而右查找能够被PATTERN匹配的内容,将其中所有被PATTERN匹配到的结果更换成SUNSTRING; ${VAR/#PATERN/SUNSTRING}:在VAR变量中查找行首匹配PATTERN的内容,将匹配的结果更换成SUNSTRING; ${VAR/%PATERN/SUNSTRING}:在VAR变量中查找行尾匹配PATTERN的内容,将匹配的结果更换成SUNSTRING; 4.查找删除 ${VAR/PATTERN}:在VAR变量中,自左而右查找能够被PATTERN匹配的内容,将其中第一个匹配到的结果删除; ${VAR//PATTERN}:在VAR变量中,自左而右查找能够被PATTERN匹配的内容,将其中所有匹配到的结果删除; ${VAR/#PATERN}:在VAR变量中查找行首匹配PATTERN的内容,将匹配的结果删除; ${VAR/%PATERN}:在VAR变量中查找行尾匹配PATTERN的内容,将匹配的结果删除; 5.字符串的大小写转换: ${VAR^^}:将变量中的所有的小写字母转换成大写字母; ${VAR,}:将变量中的所有的大写字母转换成小写字母; 6.变量赋值: ${VAR:-value}:如果变量VAR为空值或者变量未被定义,那么直接返回value中的值,否则返回变量VAR的值; ${VAR:+value}:如果变量VAR已经定义且不为空,则返回value的值; ${VAR:=value}:如果变量VAR为空值或变量未被定义,那么直接返回value中的值,并且将value的值赋给变量VAR;否则返回变量VAR的值; 7.变量的间接引用: 如果第一个变量的值恰好是第二个变量的变量名,从第一个变量引用第二个变量的值的方法,就称为变量的间接引用,也称为简介变量引用; 如: VAR1=VAR2, VAR2=hello bash提供了这样的简介变量引用的方法: echo MYVAR =\$$VAR1
原文链接:https://www.f2er.com/bash/389551.html