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
9
10
     面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 
     面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
     例如五子棋,面向过程的设计思路就是首先分析问题的步骤:
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"






本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1942835,如需转载请自行联系原作者

相关文章
|
5月前
|
机器学习/深度学习 Unix Shell
Shell编程基础入门(Bash|变量与输入输出重定向2&1)
Shell编程基础入门(Bash|变量与输入输出重定向2&1)
72 0
|
11月前
|
Shell
【Shell编程】Shell中Bash变量-数值运算、运算符变量、测试和内容替换
【Shell编程】Shell中Bash变量-数值运算、运算符变量、测试和内容替换
56 0
|
11月前
|
Shell
【Shell编程】Shell中Bash变量-预定义变量
【Shell编程】Shell中Bash变量-预定义变量
75 0
|
11月前
|
Shell
【Shell编程】Shell中Bash变量-环境变量
【Shell编程】Shell中Bash变量-环境变量
58 0
|
11月前
|
机器学习/深度学习 Shell
【Shell编程】Shell中Bash变量-位置参数变量
【Shell编程】Shell中Bash变量-位置参数变量
55 0
|
11月前
|
Shell
【Shell编程】Shell中Bash变量-用户自定义变量
【Shell编程】Shell中Bash变量-用户自定义变量
50 0
|
11月前
|
缓存 Shell 开发工具
【Shell编程】Shell中Bash基本功能
【Shell编程】Shell中Bash基本功能
62 0
【Shell编程】Shell中Bash基本功能
|
Ubuntu Shell Linux
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)、采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)、在脚本的路径前加上“.”或者 source(了解)原因: 前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。第三种,也就是使用在脚本路径前加“.”或者 source 的方式,`可以使脚本内容在当前 shell 里执行,而无需打开子 shell!`这也是为什么我们每次要修改完
595 1
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
|
Ubuntu Shell Linux
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
|
机器学习/深度学习 存储 Shell
Linux Shell编程(2) - Bash 变量
1. Bash 变量的命名规则 变量名只能包含字母、数字、下划线 变量名不能以数字作为开头 变量名区分大小写 变量名长度不超过255个字符 变量名在有效范围内必须唯一