目录

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 2cd /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 export path_学习Shell编程相关推荐

  1. linux shell概述,Linux学习 -- Shell基础 -- 概述

    Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 ...

  2. Linux shell的简单学习

    Linux shell的简单学习 shell script 其实就是纯文本档,我们可以编辑这个档案,然后讥这个档案来帮我们一次执行多个指令, 戒者是刟用一些运算不逡辑刞断来帮我们达成某些功能. Lin ...

  3. 今天开始学习shell编程!!!

    已经入职一个月了. 经过这一个月重复的工作每天都是做一些环境配置的事. 对环境配置已经很熟练了.也不需要再通过每一步的安装来学习新的知识了. 所以我想写一个shell脚本让程序自己安装. 昨天晚上都凌 ...

  4. 零基础学习Shell编程

    一:起因 (0)也许由于一时的冲动使得你开始关注并学习shell编程:亦许由于是"道听途说"shell的威力很大:亦许由于shell编程的魅力:亦许由于作为一个coder的偏好:亦 ...

  5. (1)Shell 编程学习 Shell是什么?Shell的浅显原理 为什么要学Shell 及其第一个Shell脚本 CTF角度学习Shell

    最近刷CTF题目的时候经常要用到Shell语言,但是自己并没有系统的学习,所以最近花了点时间学习一下,所以重新来梳理一下.对于稍微有一点编程语言基础的同学,能上手Shell其实不需要半小时(甚至更短) ...

  6. (2)shell编程学习 Shell中的变量(预设变量表)及变量定义与特殊变量 (脚本小子的进阶之路)

    这里尽量以较简略的篇幅讲解,如果之前有Python PHP语言基础的话,学习应该非常快.当然文章篇幅有限,只能讲一些主要的地方,一些偏的知识可能不讲. 目录 变量 局部变量 环境变量 自定义环境变量 ...

  7. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  8. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  9. Linux shell脚本基础学习详细介绍(完整版)

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  10. 详细介绍Linux shell脚本基础学习(一)

    2019独角兽企业重金招聘Python工程师标准>>> Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础 ...

最新文章

  1. 大数据可视化技术面临的挑战及应对措施
  2. C# 类中继承接口的属性
  3. 实现AJAX的基本步骤
  4. java内存分配空间大小,JVM内存模型及内存分配过程
  5. 地铁 java_怎么用Java编写一个地铁售票机的程序?
  6. Windows 2000安装和配置RIS服务
  7. 【福利】BAT架构师分享最全Java架构师学习技能图谱:包含Java编程+网络+设计模式+数据库+分布式等
  8. turbo c 2.0 官方下载_iMyFone MintPDF英文版官方下载2.0.10
  9. java copyfile失败_如何修复CopyFile()错误5 - 访问被拒绝错误
  10. C# Wke使用例子 (KyozyWke)
  11. Win7系统自带 计算器 详细使用方法
  12. mysql 保存富文本的类型_富文本编辑器内容在mysql数据库以什么类型保..._网络编辑_帮考网...
  13. CC1310直接操作寄存器编程
  14. 实验四 201421440038 徐凤娇
  15. OA(二)编写基本的CURD
  16. 基于有道翻译的英翻中微信小程序
  17. nats streaming订阅
  18. 三、Redis在SpringBoot中使用案例
  19. UINO优锘ThingJS-X让数字孪生技术零门槛入门
  20. C++面向对象程序设计习题1:分数相加

热门文章

  1. LINUX进程内存占用查看
  2. 116. cURL 简介(2)
  3. info index.php,真 · nginx配置php文件解析(PATH_INFO支持与index.php隐藏)
  4. 【转】linux kernel 网络协议栈之GRO(Generic receive offload)
  5. WPF之HierarchicalDataTemplate(转)
  6. 【转】腾讯云-解决Winscp permission denied的问题
  7. Elasticsearch报错:NodeDisconnectedException[[][IP:9300][cluster:monitor/nodes/liveness] disc
  8. 带标签的 break 和 continue (Java)
  9. VirtualBox - 虚拟机下主机与虚拟机、虚拟机与虚拟机之间通信配置
  10. 2011-9-11 凌晨00:46