学习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)
#!/bin/bash # demo 2 cd /tmp pwd

执行2.sh,输出/tmp的路径
4 Shell脚本的执行方式
执行命令共四种




这两种方式,Shell脚本不会产生新的子进程,脚本执行过程中,直接在父进程中进行操作。所以当前目录发生变化。
5 内建命令和外部命令的区别
内建命令不需要创建子进程
内建命令对当前Shell生效
6 管道和重定向
管道与管道符
管道和信号一样,也是进程通信的方式之一
匿名管道(管道符)是Shell编程经常用到的通信工具
管道符是“|”,将前一个命令执行的结果传递给后面的命令
ps | cat echo 123 | ps



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

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




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

7 变量赋值
变量的定义
${变量名}称作对变量的引用
echo ${变量名}查看变量的值
${变量名}在部分情况下可以省略为 $变量名

变量的默认作用范围
变量的导出 export
变量的删除 unset

新启动一个bash,echo $a,输出为空,退出bash,echo $a,输出1
如果想删除变量,则使用:unset 变量名
8 环境变量配置文件
配置文件
/etc/profile
/etc/profile.d/
~/.bash_profile
~/.bashrc
/etc/bashrc
非etc的是特定用户使用的环境变量。
学习Shell编程的更多相关文章
- Linux学习——shell编程之环境变量配置文件
小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...
- Linux学习——shell编程之运算符
shell编程之运算符 一:shell中常见算术运算符号和优先级 二:算术运算符 Shell 变量:是弱类型!不能进行加减乘除!比较麻烦! 例子 :shell变量弱类型 a=11 b=22 echo ...
- Linux学习——shell编程之正则表达式和字符处理命令
shell编程之正则表达式 一 正则表达式 1 什么是正则表达式 正则表达式用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分隔.匹配.查找及替换操作. 2 shell编程之正则表达式 ...
- Linux学习——shell编程之变量
shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...
- 大数据学习——shell编程
03/ shell编程综合练习 自动化软件部署脚本 3.1 需求 1.需求描述 公司内有一个N个节点的集群,需要统一安装一些软件(jdk) 需要开发一个脚本,实现对集群中的N台节点批量自动下载.安装j ...
- 开个帖,开始学习shell编程
恩,就这么开始了 首先说一下这个小小的插曲...写着写着,它就崩溃了,然后我也崩溃了...崩溃的我到处找一个不会让我崩溃的工具,然后找来找去就找到了scribefire. 1. 关于从Command ...
- Linux学习 -- Shell编程 -- 流程控制
if语句 单分支 if [ 条件判断式 ]; then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 例子: 双分支 if [ 条件判断式 ] then 程序 else 程序 fi ...
- Linux学习 -- Shell编程 -- 条件判断
按照文件类型进行判断 两种格式 test -e /root/install.log [ -e /root/install.log ] 注意空格 适合用于脚本中 echo $?可以看到结果 [ - ...
- Linux学习 -- Shell编程 -- 字符处理命令
sort排序命令 sort [选项] 文件名 -f 忽略大小m写 -n 按数值型,默认字符串型 -r 反向 -t 指定分隔符 -k n[,m] 指定字段范围,默认行尾 eg. sort -n -t & ...
随机推荐
- unity3d 触屏多点触控(旋转与缩放)
unity3d 触屏多点触控(旋转与缩放) /*Touch OrbitProgrammed by: Randal J. Phillips (Caliber Mengsk)Original Creati ...
- Ubuntu 14.04安装vim8
本文介绍两种方法安装 VIM8.1 方法一:GitHub下载源码手动安装 1.查看系统是否有安装vim:如果有,先删除 dpkg -l | grep vim 2.从git上下载 git clone h ...
- 【ARM-LInux开发】如何运行wayland
Running Wayland 原文:https://jan.newmarch.name/Wayland/RunningWayland/ skip table of contents Show tab ...
- 最新 东方明珠java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.东方明珠等10家互联网公司的校招Offer,因为某些自身原因最终选择了东方明珠.6.7月主要是做系统复习.项目复盘.Leet ...
- 「JOISC 2019 Day3」穿越时空 Bitaro
「JOISC 2019 Day3」穿越时空 Bitaro 题解: 不会处理时间流逝,我去看了一眼题解的图,最重要的转换就是把(X,Y)改成(X,Y-X)这样就不会斜着走了. 问题变成二维平面上 ...
- 如何创建spring web 工程(maven工程)
1.在项目资源管理器右键,New-Spring Starter Project 2.设置一些参数 3.点击Next,然后勾选两个选项 4.点击finish
- mysql导入问题
今天在导入数据库的时候,发现此问题: 后来一查,是因为GTID_EXECUTED有值,而导出的文件中包含了SET @@GLOBAL.GTID_PURGED的操作,所以导入报错. 我们有两种方法解决 ...
- ubuntu配置kvm服务
虚拟化第一弹,lei了lei了~ 首先,简单介绍一下KVM服务. KVM 全称是 Kernel-Based Virtual Machine,它是一种常用的虚拟化工具.是基于linux内核所开发的虚拟平 ...
- Django soft-delete软删除
在django中,实现这个功能很简单,我们采用一个字段用来保存删除的时间.若记录没有被删除,那么设置该值为None,如果被删除,那么设置时间为删除的时间. class BaseSchema(model ...
- CSP/NOIP c++常用模板
蒟蒻目前还是提高组选手,模板将会持续更新! 目录: 线段树 对拍 exgcd st 树状数组 树剖 dijsktra spfa tarjan 匈牙利 埃筛 差分树状数组 dinic 快速幂取余 Exg ...