目录

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. unity3d 嵌入iOS的 In App Purchase 应用程序内购买

    Unity做东西是快,但是有些功能是需要额外开发的,比如 IAP (In App Purchase,应用程序内购买) 还好unity提供了灵活的扩展功能,允许嵌入原生代码来做一些unity未实现的功能 ...

  2. webdriver(chrome无头浏览器)

    '''chrome无头浏览器''' from selenium.webdriver.chrome.options import Options # 导入相应的类 from selenium impor ...

  3. Python随笔日记(1)

    Python学习 1.安装python .之后在Windows中配置环境变量(计算机\属性\高级系统设置\环境变量\系统变量\path后加入 :路径) 2.注意变量的命名的规则 字母.数字.下划线 p ...

  4. 搭建IIS CA DC Exchange TMG SQL (CA DC篇)

    搭建IIS CA DC Exchange TMG SQL (CA DC篇)   步骤 1: 在“下一步(N) > (按下按钮)”(位于“添加角色向导”中)上用户左键单击   步骤 2: 在“Ac ...

  5. SIFT学习笔记之一 下载和调用

     下面给出了多个参考地址,挑个能用的吧: vs2010+Rob Hess SIFT: http://blog.csdn.net/lanbing510/article/details/8507341 R ...

  6. 【ARM-Linux开发】内核3.x版本之后设备树机制

    内核3.x版本之后设备树机制 Based  on  Linux  3.10.24  source  code  参考/documentation/devicetree/Booting-without- ...

  7. 一文带你了解babel-preset-env

    参考链接:https://www.jianshu.com/p/000c2670672b

  8. poj 2362:square

    题目大意:给你T组数据,每组数据有n个棍子,问你能不能用这些棍子拼成一个正方形(所有都要用上,而且不能截断棍子). Sample Input 34 1 1 1 15 10 20 30 40 508 1 ...

  9. golang的定时器NewTimer、NewTicker使用

    package main import ( "fmt" "sync" "time" ) /** *ticker只要定义完成,从此刻开始计时, ...

  10. 如何使用RedisTemplate访问Redis数据结构之字符串操作

    Redis 数据结构简介 Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集 ...