首页 > 代码库 > Bash编程入门

Bash编程入门

一、编程语言分类

二、shell编程特性

三、bash配置文件profile&bashrc

四、面向对象和面向过程

一、编程语言分类:

1.编程语言分类:根据运行方式

编译运行:源代码-->编译器(编译)-->程序文件

运行速度快,但是拍错效率低

C语言:通过调用函数库,或者类库来完成

解释运行;源代码-->运行时启动解释器,由解释器边解释边运行

完全借助于外部的程序来完成

2.根据其编程过程功能的实现是调用库还是调用外部的程序文件:

shell脚本编程

利用系统上的命令及编程组件进行编程

完整编程:

利用库和编程组件进行编程

编程:过程式编程语言,面向对象的编程语言

程序=指令+数据

过程式:以指令为中心来组织代码,数据是服务于代码

//一步一步来,一个时间顺序

顺序执行

选择执行

循环执行

代表:C,bash,

对象式:以数据为中心来组织代码,围绕数据来组织指令

//根据不同的功能来实现

类:(class):实例化对象,method

    代表:java,C++,Python //C++和Python同时支持面向对象和过程

二、shell脚本编程:特性

过程式编程、解释执行依赖于外部程序文件运行

如何写shell脚本:

脚本文件的第一行:顶格:给出shebang,解释器路径,用于指明解释当前脚本的解释器程序文件

常见的解释器:

#!/bin/bash

#!/usr/bin/python

#!/usr/bin/perl

文本编辑器:

行编辑工具:sed

全屏编辑工具:vim,vi,nano

运行脚本:

1.赋予执行权限呢,并直接执行此程序

chmod +x a.sh

./a.sh

2.使用解释器运行

bash a.sh

注意:脚本中的空白行会被解释器忽略

 脚本中,除了shebang,余下的所有以#开头的行,都会被视为注释行

  //shell脚本是通过运行一个子shell进程中执行的

三、bash的配置文件

两类:

profile类:为交互式登录的shell进程提供配置

bashrc类:为非交互式登录的shell进程提供配置

登录类型:

交互式登录shell进程:

直接通过某终端输入账号和密码后登录打开的shell进程

使用su命令,su - USERNAME,或者使用su -l USERNAME执行的登录切换

非交互式的登录:

su USERNAME执行的登录切换

在图形界面下打开的终端:

运行脚本

profile类://登录的时候执行

全局:对所有用户都生效

/etc/profile

/etc/profile.d/*.sh

局部的:对单个用户生效

~/.bash_profile

功用:

1.用于定义环境变量

2.运行命令或者脚本

bashrc类://运行命令的时候使用

全局:对所有用户生效

/etc/bashrc

局部的:对单个用户生效

~/.bashrc

功用:

1.定义本地变量

2.定义命令别名

注意:仅仅管理员可以修改全局配置文件


交互式登录shell进程:

/etc/profile---> /etc/profile.d/*.sh --->~/.bash_profile

//假如冲突的话,后读取的生效

非交互式的登录shell进程:

~/.bashrc--->/etc/bashrc-->/etc/profile.d/*

命令行中定义的特性:例如变量和别名仅对当前shell进程的生命周期;

配置文件定义的特性,只对随后重新启动的shell进程有效

让通过配置文件定义的特性立即生效;

(1)通过命令行重复定义一次

(2)让shell进程重读配置文件

#source /PATH/FROM/CONF_FILE

. /PATH/FROM/CONF_FILE

~]#.  .bashrc //第一个 . 是引用,第二个是文件名


四、面向对象和面向过程

    面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 
    面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
    例如五子棋,面向过程的设计思路就是首先分析问题的步骤:
1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。
    
    而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 
1、黑白双方,这两方的行为是一模一样的,
2、棋盘系统,负责绘制画面,
3、规则系统,负责判定诸如犯规、输赢等。
    第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

附件一:bashrc和profile的区别

bashrc是shell的环境配置文件

profile是登录系统用的配置文件

     让所有用户登录时都显示信息

vim /etc/profile.d/welcome.sh

echo "hello welcome"


Bash编程入门