IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Linux13-bash脚本编程基础及配置文件 -> 正文阅读

[开发工具]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一下立即生效

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:30:38  更:2021-09-29 10:31:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:18:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码