1. shell简介

shell是一个用C语言编写的程序,是用户使用Linux的桥梁。shell既是一种命令语言,又是一种程序设计语言。
shell脚本(shell script),是一种为shell编写的脚本程序。

2. shell环境

  • Bourne Shell(/usr/bin/sh 或/bin/sh)是unix最初使用的shell,而且在每种unix上都可以使用
  • Bourne Again Shell(/bin/bash)LinuxOS默认的,他是Bourne Shell的扩展。于Bourne Shell完全兼容,并且在Bourne Shell的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

3. 第一个shell脚本

3.1 编写脚本

```#log
#!/usr/bin/bash 告诉系统使用那种shell来执行脚本。
echo用于向窗口输出文本
```
```#shell
#!/usr/bin/bash #告诉系统使用那种shell来执行脚本。
echo "Hello World!" #出echo用于向窗口输出文本 结果:Hello World!
```

3.2 执行shell脚本

### 3.2.1直接执行,不需给予权限
```#shell
sh test.sh
source test.sh
```
### 3.2.2 ./需要给予可执行权限
```#shell
chmod +x ./test.sh #需要赋予可执行权限
./test.sh  #使用./ 执行脚本
```

4 其他

## 4.1 bash是一个进程
bash下还可以再重新启动一个shell,这个shell是sub shell,原shell会复制自身给它。
在sub shell中定义的变量,会随着sub shell的消亡而消失
* () 子shell中运行 (a=hello;echo $a) |echo $a #shell echo $a
* {} 当前shell中执行{ a=world;echo $a; } # world
* $$ 当前脚本执行的pid
* & 后台执行
* $! 运行在后台的最后一个作业的PID(进程ID)
```#shell
#!/bin/bash
(a="testhome";echo $a) #testhome
echo $a #子shell中定义的变量消失
{ a=world;echo $a; } #world
echo $a #world 当前shell的变量依然有效
```
## 4.2 通配符
bash可以自动扩展特定的关键词
```#shell
echo * #打印当前目录下的文件
echo ???? #匹配特定字符个数的文件
echo "*????" #输出字符串,避免被匹配
```

shell 1基础的更多相关文章

  1. 详细介绍Linux shell脚本基础学习

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

  2. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  3. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

  4. Shell的基础介绍和案例

    一.shell脚本基础 1.第一个脚本 vim  first.sh 分别使用三种方法可以执行脚本:   ./first.sh (需要有可执行的权限)   sh    first.sh   .  fir ...

  5. 【转】Shell编程基础篇-下

    [转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...

  6. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...

  7. shell编程基础(转载)

    Shell编程基础 原作者 Leal:请参阅页面底部的编者列表. 授权许可: 创作共享署名协议 GNU 自由文档许可证 注意:本文仍然在持续的修订之中,且错漏之处可能较多.如果能够阅读英语的话,可以考 ...

  8. Shell编程(二)——shell的基础知识及常用命令

    shell的基础知识 一.bash有以下特点: 1.记录命令历史 2.指令和文件名补全 3.别名 alias rm='rm -i' 4.通配符 * 0个或多个字符 ?​匹配一个字符 5 输入输出重定向 ...

  9. shell重温---基础篇(参数传递&echo命令)

    经过前两天的学习,关于shell的基础算是知道的一般般啦,最起码不算是小白了(纯属意淫).今天就来点干货哈.   首先是运行shell脚本时的参数传递.脚本内获取参数的格式为$n.n代表了一个数字,例 ...

随机推荐

  1. TV-B-Gone Kit - Universal v1.2

  2. C#读取Access数据表中某一列内容,保存至数组

    string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=product.mdb";OleDbConnecti ...

  3. Python 名称空间和作用域

    a = 10 # lst = [1,2,3,4] # # # 内置函数 print("你好啊,我叫赛利亚") # def chi(): a = 10 b = 20 # # # # ...

  4. Python mode_a

    f = open("葫芦小金刚", mode="a", encoding="utf-8") # a, append 追加, 在文件的末尾写入 ...

  5. 51Nod 1072:威佐夫游戏 (威佐夫博奕)

    1072 威佐夫游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数 ...

  6. hdu2085-2086

    hdu2085 模拟 #include<stdio.h> ][]; void fun(){ a[][]=; a[][]=; ;i<=;i++){ a[i][]=*a[i-][]+*a ...

  7. Mybatis的mapper文件中$和#的用法及区别详解

    https://www.2cto.com/database/201806/752139.html用了一段时间的Mybatis了,对于$和#的用法老是很迷糊,特此记下加深记忆. 简单来说 #{} 会在将 ...

  8. systemd学习笔记

    一.systemd介绍 systemd即为system daemon,是linux下的一种init软件与多数发行版使用的System V风格init相比,systemd采用了以下新技术: (1) 采用 ...

  9. leetcode:Reverse Words in a String【Python版】

    class Solution: # @param s, a string # @return a string def reverseWords(self, s): ss = s.split(&quo ...

  10. linux下 mysql主从备份

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/czh0423/article/details/26720539 一.准备 用两台server做測试: ...