• 学习Shell编程


    目录

    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的是特定用户使用的环境变量。

  • 相关阅读:
    java8
    Python isinstance()
    Python3 File next()
    np.array() 与 np.mat() 比较
    np.nonzero()
    np.dot()
    算法之归并排序的应用 —— 小和问题以及逆序对问题
    递归过程以及递归master公式
    算法之异或运算及其应用
    算法之二分法及其应用
  • 原文地址:https://www.cnblogs.com/zkfopen/p/11461748.html
Copyright © 2020-2023  润新知