【Shell教程】一----什么是Shell
1.1 什么是脚本语言
脚本语言是像剧本一样教计算机办某个事情的语言,通过脚本指令,让计算机自动化完成一系列工作的程序,脚本程序通常可以用文本编辑器修改,不需要编译,通常是解释运行的。
比如你想让计算机执行复制某个文件的操作,如:cp ~/Desktop/*.txt ~/text
你可以在文本编辑器写入上边的代码并且保存此文件,然后你通过执行这个文本文件来执行上面的代码,并不需要重复手动输入上边的代码。
脚本解释器: 脚本解释器是把脚本代码翻译成计算机看的懂得二进制语言 ,就好像你写了一段中文,要给别人解释,需要参照新华字典,写一段英文,需要参照牛津字典解释,脚本解释器就是这个功能。
1.2 什么是Sell
Shell 是一个命令行解释器,它接收应用程序/用户指令。然后调用操作系统内核
Shell 是 linux 命令解释器。当我们向 linux 的命令行输入一个命令时,比如:pwd、ls 等,shell 负责将该命令翻译成机器可以识别的二进制语言,并把机器的反馈输出出来,供我们识别阅读
shell 脚本(shell script),是一种为 shell 编写的脚本程序。我们所说的 shell 通常都是指 shell 脚本编程
我们正常的设备。首先内部是硬件,然后外部是操作系统或者内核,在此基础上有了外层应用程序。
而应用程序想要操作内核,需要通过编写Shell程序(命令行解释器),然后来操作内核程序。也就是Shell给用户提供了访问操作系统内核的服务
Shell 是一种解释型的高级语言。它像其它高级语言一样,定义了变量和参数、提供了分支、循环等控制语句,能够完成一个系列动作,简化我们对系统的管理与应用的部署。
1.3 扩展名
Shell 程序不要求有扩展名,任何扩展名都可以作为Shell脚本,你可以用 .txt 来编写shell脚本,也可以用.c来写,但是为了方便我们分辨,我们一般用.sh 来做扩展名
1.4 注释
Shell用#做为单行注释。与 c 语言的//相当。(#!除外。)
多行注释:
:<<!
# 注释内容块
!
举例:
#!/bin/bashecho "hello"
:<<!
echo "1"
echo "2"
!
echo "3"
1.5 Shell脚本环境
运行Shell需要两个东西:一个能编写代码的文本编辑器和一个能解释执行的脚本解释器
在编写好shell脚本之后,需要脚本解释器把shelll脚本转换成机器可以识别的二进制语言
Linux的Shell解释器有很多种:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
我们应该在程序的第一行,指明用哪个脚本解释器。如不指明的话,使用默认的 shell:/bin/bash。 Bash 也是大多数Linux 系统默认的 Shell。
Shell脚本以 #! 开头(#!
指定bath解析器) ,
#!/bin/bash 表示用bath解析器来解析Shell脚本
1.6 执行Shell脚本
执行Shell脚本,可以采用以下几种方式
1.sh、bash命令
sh FileName.sh
或
bash FileName.sh
2 绝对路径或者相对路径运行
首先要 chmod +x file.sh
或 chmod 777 file.sh
加上执行权限,否则会提示无执行权限。
#相对路径
./FileName.sh
#绝对路径
/home/zzx/FileName.sh
注意执行脚本时候或者绝对路径,或者 ./file.sh ,如果不加的话,linux 默认会从PATH 里去找该 file.sh。
就是不能 FileName.sh 直接运行Shell脚本。
# 错误
FileName.sh
1.7 编写一个Shell脚本
要求:
在/home/zzx目录下创建一个hello.txt文件,在hello.txt文件中添加,"Hello,World"
1.4.1 创建 batch.sh 脚本文件
zzx@zzx-t:~$ touch batch.sh
zzx@zzx-t:~$ vim batch.sh
1.4.2 编写Shell脚本
#!/bin/shellcd /home/zzx
touch hello.txt
# >>重定向 把echo输出的内容重定向到hello.txt
echo "Hello,World" >> hello.txt
1.4.3 运行Shell脚本
bash batch.sh
1.4.4 打开文件,输出Hello,World
2. Shell变量
Shell中有三种变量 用户变量,系统变量和特殊变量
2.1 Shell常用系统变量
使用 env 可以显示全部的系统变量
- &HOME
获取用户当前的家目录
- &PWD
获取当前的工作路径/绝对路径
- &SHELL
获取Shell脚本的解析器
- &USER
获取当前用户名
2.2 自定义变量(用户变量)
Shell 中的变量,不用声明,直接定义使用就可以。
Shell 中变量都是字符串型,如果需要用整形,要特殊声明。
基本语法:
- 定义变量: 变量名=值
- 撤销变量 unset 变量名
- 声明静态变量 readonly 变量名 PS:静态变量不能unset撤销
- 声明环境变量 export 变量名
命名规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 等号两侧不能有空格 这个是区别于其他语言的一点
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
用$符号,就可以得到变量的值
echo 输出函数 等于C语言的printf
2.3 特殊变量
$#:传给 shell 脚本参数的数量。
$*:传给 shell 脚本参数的内容。
$1、$2、$3、$4、$5:运行脚本时,传给程序的参数,用空格分开。
$?:命令执行的返回的状态。0 表示正确,非 0 表示出错。
$0:当前执行的进程名。
$$:当前进程的进程号。
变量详细内容在第二节
【Shell教程】一----什么是Shell相关推荐
- linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解
在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...
- 技能篇:shell教程及脚本编写
前言 我们常时不会见到shell脚本,但是需要阅读开发linux脚本时,这又是一项必不可少的技能.本文在于提供基础的shell编程语法和简单的实例,帮助同学快速开发,可当做shell手册使用也非常善 ...
- linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...
摘要 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高. 高级语言都支持函数,Shell也不例外.今天就为大家介绍下Shell中函数相关用法. 函数可以将一个复杂功能划 ...
- Xamarin.FormsShell基础教程(9)Shell相关类体系
Xamarin.FormsShell基础教程(9)Shell相关类体系 在Shell中,最为主要的类是Shell类.Shell类实现了大多数应用程序所需的基本UI功能的页面.除此以外,常用的类还有Sh ...
- Xamarin.FormsShell基础教程(8)Shell的模版构成
Xamarin.FormsShell基础教程(8)Shell的模版构成 Shell模版创建的页面包含内容页.标签栏.侧滑菜单.搜索框四部分.下面依次介绍这几个部分. 内容页:内容页就是为用户呈现内容的 ...
- Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍
Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍 轻拍标签栏中的About标签,进入关于页面,如图1.8和图1.9所示.它是对应用程序介绍的页面. 该页面源自Views文 ...
- Xamarin.FormsShell基础教程(6)Shell项目内容详情页面
Xamarin.FormsShell基础教程(6)Shell项目内容详情页面 轻拍内容列表页面中的任意一项内容后,进入内容详情页面,如图1.6和图1.7所示.该页面中显示了内容项的标题和具体内容.该页 ...
- Xamarin.FormsShell基础教程(5)Shell项目内容新建页面
Xamarin.FormsShell基础教程(5)Shell项目内容新建页面 轻拍内容列表页面中的Add按钮后,进入内容新建页面,如图1.4和图1.5所示.在该页面中,用户可以设置新建内容的标题和具体 ...
- Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果
Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果 在创建好Shell解决方案后,就可以运行程序了.本小节将讲解运行后的效果. 内容列表页面 运行程序,初始效果如图1 ...
- Xamarin.FormsShell基础教程(3)Shell项目构成
Xamarin.FormsShell基础教程(3)Shell项目构成 在创建的ShellDemo解决方案中,有3个子项目,分别为ShellDemo.ShellDemo.Android和ShellDem ...
最新文章
- Winform开发的界面处理优化
- 商汤科技总裁张文谈人工智能: 未来10年到20年会有巨大爆发 下一个井喷是AI+教育
- 简单的3个SQL视图搞定所有SqlServer数据库字典
- shell中数组基础语法
- Java数据结构——有序链表
- tomcat https 配置
- 白话算法(6) 散列表(Hash Table)从理论到实用(中)
- JVM(三)——对象的访问定位
- 训练神经网络的一些技巧(包括激活和损失函数的选择、调参、过拟合等)
- 那些在一家公司呆了 10 年的程序员,最后都怎么了?
- 我的地盘我做主—玩转Python函数和变量
- 编译原理 自顶向下分析
- IE8的模式修改优化Windows7
- C语言--《C专家编程》C语言申明的优先级规则
- php hprose,基于 hprose/hprose-php开发的Laravel扩展:laravel-hprosed的介绍
- 构建微服务技术中台,SpringCloud和Kubernetes该如何选型?
- stm32时钟和通信方式及stm32cubemx 配置usart通信
- Arcanist用法简介
- 渗透测试RECON-NG介绍
- PEI-NaYF4:Yb/Er上转换发光纳米材料,树状水溶性聚合物,45nm粒径纳米粒