目录

1 什么是Shell

2 Linux的启动过程

3 怎样编写一个Shell脚本

4 Shell脚本的执行方式

5 内建命令和外部命令的区别

6 管道和重定向

7 变量赋值

8 环境变量配置文件

1 什么是Shell

Shell是命令解释器,用于解释用户对操作系统的操作

2 Linux的启动过程

BIOS-MBR-BootLoader(grub)-kernel-systemd-系统初始化-Shell

3 怎样编写一个Shell脚本

  • UNIX的哲学:一条命令只做一件事

  • 为了组合命令和多次执行,使用脚本文件来保存需要执行的命令

  • 赋予该文件执行权限(chmod u+rx filename)

文件名:2.sh

#!/bin/bash # demo 2 cd /tmp pwd

执行2.sh,输出/tmp的路径

4 Shell脚本的执行方式

执行命令共四种

(1) bash ./filename.sh
(2)./filename.sh
这两种方式,Shell脚本产生一个新的bash子进程,脚本执行过程中,是子进程切换到新的目录,当子进程执行完毕后,回到父进程,当前目录不会发生变化。
执行命令
(3)source ./filename.sh
(4). filename.sh

这两种方式,Shell脚本不会产生新的子进程,脚本执行过程中,直接在父进程中进行操作。所以当前目录发生变化。

5 内建命令和外部命令的区别

内建命令不需要创建子进程

内建命令对当前Shell生效

6 管道和重定向

管道与管道符

  • 管道和信号一样,也是进程通信的方式之一

  • 匿名管道(管道符)是Shell编程经常用到的通信工具

  • 管道符是“|”,将前一个命令执行的结果传递给后面的命令

ps | cat echo 123 | ps

重定向符号
一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符
输入重定向符号“<”
read var < /path/to/a/file

从/etc/passwd文件中读取有多少行,输出显示有33行

通过var2变量读取a.txt中的数据,输出var2即显示a.txt中的数据

输出重定向符号“>”“>>”“2>”“&>”
echo $var_2 > a.txt
把变量var_2的值输出到a.txt,会覆盖a.txt原有内容。
echo $var_3 >> a.txt
把变量var_3的值追加到a.txt,不会覆盖a.txt原有内容。
如果希望把错误信息保存到文件,可以使用“2>”“&>”
nocmd 2> b.txt
把错误信息保存到b.txt中,查看b.txt文件,即显示错误信息。
nocmd &> c.txt
把所有的输出结果(正确和错误)都保存下来。
输入和输出重定向组合使用

在3.sh中新建/home/zopen/test/a.sh,并把echo "hello bash."写入a.sh中

7 变量赋值

变量的定义

变量名的命名规则
(1)字母、数字、下划线
(2)不以数字开头
变量的赋值
为变量赋值的过程,称为变量替换
变量名=变量值,比如:a=123
使用let为变量赋值,比如:let a=10+20
将命令赋值给变量,比如:l=ls
将命令结果赋值给变量,使用$()或者'',比如:letc=$(ls -l /etc)
变量值有空格等特殊字符可以包含在""或''中
变量的引用
  • ${变量名}称作对变量的引用

  • echo ${变量名}查看变量的值

  • ${变量名}在部分情况下可以省略为 $变量名

变量的作用范围
  • 变量的默认作用范围

  • 变量的导出 export

  • 变量的删除 unset

新启动一个bash,echo $a,输出为空,退出bash,echo $a,输出1

export可以把变量从子Shell传递给父Shell

如果想删除变量,则使用:unset 变量名

8 环境变量配置文件

配置文件

  • /etc/profile

  • /etc/profile.d/

  • ~/.bash_profile

  • ~/.bashrc

  • /etc/bashrc

带etc的是系统层次,所有用户共同使用的环境变量。

非etc的是特定用户使用的环境变量。

学习Shell编程的更多相关文章

  1. Linux学习——shell编程之环境变量配置文件

    小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...

  2. Linux学习——shell编程之运算符

    shell编程之运算符 一:shell中常见算术运算符号和优先级 二:算术运算符 Shell 变量:是弱类型!不能进行加减乘除!比较麻烦! 例子 :shell变量弱类型 a=11 b=22 echo ...

  3. Linux学习——shell编程之正则表达式和字符处理命令

    shell编程之正则表达式 一 正则表达式 1 什么是正则表达式 正则表达式用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分隔.匹配.查找及替换操作. 2 shell编程之正则表达式 ...

  4. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  5. 大数据学习——shell编程

    03/ shell编程综合练习 自动化软件部署脚本 3.1 需求 1.需求描述 公司内有一个N个节点的集群,需要统一安装一些软件(jdk) 需要开发一个脚本,实现对集群中的N台节点批量自动下载.安装j ...

  6. 开个帖,开始学习shell编程

    恩,就这么开始了 首先说一下这个小小的插曲...写着写着,它就崩溃了,然后我也崩溃了...崩溃的我到处找一个不会让我崩溃的工具,然后找来找去就找到了scribefire. 1. 关于从Command ...

  7. Linux学习 -- Shell编程 -- 流程控制

    if语句 单分支 if [ 条件判断式 ]; then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 例子: 双分支 if [ 条件判断式 ] then 程序 else 程序 fi ...

  8. Linux学习 -- Shell编程 -- 条件判断

    按照文件类型进行判断 两种格式 test -e /root/install.log [ -e /root/install.log ]   注意空格  适合用于脚本中 echo $?可以看到结果 [ - ...

  9. Linux学习 -- Shell编程 -- 字符处理命令

    sort排序命令 sort [选项] 文件名 -f 忽略大小m写 -n 按数值型,默认字符串型 -r 反向 -t 指定分隔符 -k n[,m] 指定字段范围,默认行尾 eg. sort -n -t & ...

随机推荐

  1. 4.1 python类的特殊成员,偏函数,线程安全,栈,flask上下文

    目录 一. Python 类的特殊成员(部分) 二. Python偏函数 1. 描述 2. 实例一: 取余函数 3. 实例二: 求三个数的和 三. 线程安全 1. 实例一: 无线程,消耗时间过长 2. ...

  2. 2019-10-20 李宗盛 spss作业

    SPSS: 1.有关SPSS数据字典的说法,正确的是 A.SPSS数据集的数据字典可以复制到其他数据集中 B.SPSS数据集的数据字典是不能复制的 C.SPSS的数据字典可以通过“复制”和“粘贴”在不 ...

  3. 破周三,前不着村后不着店的,只好学pandas了,你该这么学,No.9

    如果图片无法观看,请移步 https://blog.csdn.net/hihell 周三了,一个星期最难的一天 大中间的,今天还这么热 5月份,36度的高温 天空飘过几个字 屋里学pandas最得劲 ...

  4. docker入门2--生命周期

      容器的概念: 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发.交付和部署. 容器镜像是轻量的.可执行的独立软件包 ,包含软件运行所需的所有内容:代码.运行时环境.系统工具.系统库和设置 ...

  5. Scala当中parallelize并行化的用法

    [学习笔记] parallelize并行化集合是根据一个已经存在的Scala集合创建的RDD对象.集合的里面的元素将会被拷贝进入新创建出的一个可被并行操作的分布式数据集.例如:val rdd03 = ...

  6. SQLite进阶-16.索引

    目录 索引 创建索引 查看索引 删除索引 创建索引的注意项 索引使用(Indexed By) 索引 索引(Index)是一种特殊的查找表,数据库搜索引擎用来加快数据检索.简单地说,索引是一个指向表中数 ...

  7. EffectiveC++

    宁可以编译器替换预处理器 define 不被视为语言的一部分,因此也就有可能在预处理阶段被优化掉,导致相关变量出现错误. #define ASPECT_RATIO 1.63 //可以尝试将其替换为 c ...

  8. php gd实现简单图片验证码与图片背景文字水印

    1.让水印文字铺满图片: 大致效果: 代码: <?php function appendSpreadTextMark($imageDir, $markText) { $fontFile = &q ...

  9. OPENCV运行的问题,自带的程序可以运行,但是自己制作的QT报错

    在PC上跑没问题 qmake 交叉编译后出来的文件 将OPCV和QT的镜像挂载后,在板子上运行程序, 能够出来这个界面,一点击按钮,提示如下错误. . 然而,百度网盘下载的代码.跟上面一样的操作,在板 ...

  10. Iedis - Redis 在IDEA中的可视化工具破解

    2.如何破解 // 如果你没有改动IDEA的话,IDEA的插件库在这个目录下C:\Users\Administrator\.IntelliJIdea2017.3\config\plugins\Iedi ...