Linux13-bash脚本编程基础及配置文件
编程语言的分类
- 根据运行方式分为两类
【1】编译运行:源代码需要有编译器编译转换为程序文件
【2】解释运行:源代码,运行时启动解释器,由解释器边解释边运行 - 编译运行速度更快
- 根据其编程过程中功能的实现是调用库还是调用外部的程序文件分为两类:
【1】shell脚本编程:利用系统上的命令及编程组件进行编程
【2】完整编程:利用库或编程组件进行编程 - 根据编程模型分为两类,程序=指令+数据
【1】过程式编程语言:以指令为中心来组织代码,数据服务于代码
顺序执行
选择执行
循环执行
C语言、bash shell是面向过程的编程语言
【2】面向对象的编程语言:以数据为中心来组织代码,指令服务于数据,围绕数据来组织指令
类(class):实例化对象,method(能够对对象所额外施加的操作);
代表:Java、C++、Python
C++和Python既支持过程式也支持对象式的编程语言
shell脚本编程
特性
- 过程式编程
- 解释运行
- 依赖于外部程序文件运行
shell脚本是什么
整个shell脚本就是堆起来的命令,但很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足以避免其运行中发生错误
单个运行命令,命令出错可以人工判断,但在脚本运行过程中出错则不会修正,即如果遇到一个命令错误,整个脚本就终止了
如何写shell脚本
- 脚本文件的第一行,顶格写,给出shebang,解释器路径,用于指明解释执行当前脚本的解释器程序文件
常见解释器:
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
补充:文本编辑器分为两类:
【1】行编辑器:sed
【2】全屏幕编辑器:nano、vi、vim
要想执行,【1】给明绝对路径【2】放在PATH环境变量中
运行脚本
shell脚本的运行是通过运行一个子shell进程实现的
【1】赋予执行权限,并直接运行此程序文件
chmod +x /PATH/TO/SCRIPT_FILE
/PATH/TO/SCRIPT_FILE
【2】直接运行解释器将脚本以命令行参数传递给解释器程序
bash /PATH/TO/SCRIPT_FILE
注意:脚本中的空白行会被解释器忽略;脚本中,除了shebang,余下的所有以#开头的行都会被视作注释行而被忽略;
练习:写一个脚本,实现如下功能:
【1】显示/etc目录下所有以大写p或小写p开头的文件或目录本身
【2】显示/var目录下的所有文件或目录本身,并将显示结果中的小写字母转换为大写字母后显示
【3】创建临时文件/tmp/myfile.XXXX
nano test.sh#!/bin/bash
echo "Show some under /etc"
ls -d /etc/[pP]*
echo "Translate lower to upper"
ls -d /var/* | tr 'a-z' 'A-Z'
echo "Create a temp file"
mktemp /tmp/myfile.xxxx
bash test.sh
bash的配置文件
bash的配置文件分为两类:
【1】profile类:为交互式登录的shell进程提供配置
【2】bashrc类:为非交互式登陆的shell进程提供配置
登录类型
【1】交互式登录shell进程:
- 直接通过某终端输入账号和密码后登录打开的shell进程
- 使用su命令:su -USERNAME,或者使用su -| USERNAME执行的登陆切换
【2】非交互式登录shell进程:
- su USERNAME执行的登陆切换
- 图形界面下打开的终端
- 运行脚本
配置文件特性
profile类
分类
【1】全局:对所有用户都生效
/etc/profile
/etc/profile.d/*.sh
【2】用户个人
~/.bash.profile
功用
【1】用于定义环境变量
【2】运行命令或脚本
bashrc类
分类
【1】全局:/etc/bashrc
【2】用户个人:~/.bashrc
功用
【1】定义本地变量
【2】定义命令别名
注意仅管理员可修改全局配置文件
配置文件读取次序
用户个人定义的可覆盖全局强行塞给他的
- 对于交互式登录shell进程:
/etc/profile→/etc/profile.d/*→ ~/.bash.profile→ ~/.bashrc → /etc/bashrc
注:登陆系统在运行时取决于以上文件,而且依次加载 - 非交互式登录shell进程:
~/.bashrc→/etc/bashrc→etc/profile.d/*
注:自己编写的脚本在运行时其环境是取决于这三个文件
注意: - 在命令行中定义的不会永久有效,但在配置文件中定义的不会立即有效,对于配置文件中定义的只对下一次新登陆的shell进程有效,对老shell进程无效
- 命令行中定义的特性,例如变量和别名作用域为当前shell进程的生命周期;配置文件定义的特性仅仅对随后启用的shell进程有效
- 如何通过配置文件定义的特性立即生效???
【1】通过命令行重新定义一次
【2】让shell进程重读配置文件
source /PATH/FROM/CONF_FILE
. /PATH/FROM/CONF_FILE #.相当于source命令
练习:如何定义别名,cls=clear,且定义后想让他永久有效
nano .bashrc #只对当前用户生效,bashrc主要用来定义别名
alias cls='clear'
. .bashrc #source一下立即生效
Linux13-bash脚本编程基础及配置文件相关推荐
- SHELL 脚本编程基础
目录 前言 一. shell 概述 1.1 shell 和 shell 脚本 1.1.1 什么是shell 1.1.2 shell的作用 1.1.3 shell脚本是什么 1.1.4 shell脚本能 ...
- Linux基础篇--shell脚本编程基础
Linux基础篇–shell脚本编程基础 本章内容概要 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 7.1 编程基础 程序:指令+数据 程序编程风格: 过程式:以指令为 ...
- linux基础—课堂随笔_03 SHELL脚本编程基础
shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then 条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then 条件为 ...
- bash脚本编程入门_Bash编程入门
bash脚本编程入门 对Unix的最初希望之一是,它将使日常的计算机用户能够微调其计算机以适应其独特的工作风格. 在过去的几十年中,对计算机定制的期望已经降低,许多用户将他们收集的应用程序和网站视为他 ...
- Linux Shell脚本编程基础
2 Linux Shell脚本编程基础 发表于: Linux, Shell, UNIX, 资源分享 | 作者: 谋万世全局者 标签: Linux,Shell,编程基础,脚本 本文作者:Leal 授权许 ...
- 高级Bash脚本编程指南《Advanced Bash-Scripting Guide》 in Chinese
<Advanced Bash-Scripting Guide> in Chinese <高级Bash脚本编程指南>Revision 10中文版 在线阅读链接:http://ww ...
- cmd脚本编程基础命令
cmd脚本编程基础命令 1.外部命令 调用system32/64 目录下的应用程序. 2.内部命令 2.1. 显示.设置或删除环境变量. command des set /? 查询set用法 set ...
- Bash脚本编程之算术运算
简介 Bash所支持的算术运算和C语言是一样的,这里指的是操作符(operator)以及它们的优先级(precedence).结合性(associativity)和值,详见Shell Arithmet ...
- linux内核与bash脚本接囗,Bash脚本编程之脚本基础和bash配置文件
脚本基础 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成机器可运行的二进制程序文件后,方可运行.例如C语言和Java语言. 解释运行:需要一个 ...
最新文章
- sqlserver 自增ID插入指定数据
- windows 程序员电脑设置
- Java常见问题汇总
- 广东第二师范学院计算机网络试题,韩山师范学院期末计算机考题2.doc
- Winform中实现Excel导入、表格展示、多选获取值、生成二维码、打印流程(附代码下载)
- [initandlisten] connection refused because too many open connections: 819 of 819
- ubuntu rsync
- Java String indexOf(int ch)方法与示例
- lucene学习5----Field类及辅助类说明
- VS返回到上次编辑和进入到下次编辑的位置快捷键
- centos7启用EPEL Repository
- phpexcel 导出到xls文件的时候出现乱码解决
- python修饰器_python修饰器
- 有人用语音识别写作吗,如果没有,为什么?
- Linux周立功CAN驱动安装指导
- Nacos视频教程分享
- 超详细设置Idea类注释模板和方法注释模板
- Mac上如何完美的转换epub至mobi供kindle观看
- Write a program that gives count of common characters presented in an array of strings..(or array of
- 史上最全Java面试题全集(上)
热门文章
- 项目协作和团队管理难的问题,智办事都帮你解决
- java线程的状态及状态间的切换
- 团队实践,我们是怎么用敏捷开发工具Leangoo的
- OKR为何要跟绩效考核脱离关系?
- 使用python3 实现将网页或者文件导出至pdf 文件
- 计算机二级c常用函数,计算机等级考试二级C语言的常用库函数试题
- matlab length_《Matlab - Robotics System Toolbox》学习笔记(2)
- 明机器人孔尧是哪里人_明我创始人孔尧:未来办公,始于聚点
- 资料 | 开源! ICCV 2021 最佳学生论文pixsfm
- C++计算程序耗时函数用法汇总