创建Shell脚本

本文对比了脚本语言与编译型语言的特点,重点介绍了Shell脚本语言的基本用法,包括如何创建和执行Shell脚本,以及一些常用的Shell命令。

原创地址: http://blog.youkuaiyun.com/camlot_

1. 脚本语言和编译型语言

什么是编译型语言?

编译型语言指一些从源代码(Source Code)转换成目标代码(Object Code)后便能直接通过计算机(Java通过虚拟机)来执行的语言,一些比较常见的语言包括C, C++, Java, Fortran, Pascal等都是编译型语言。 
编译型语言的优点高效,他们多半运作与底层,擅长处理字节、整型、浮点型或其他机器层级的对象。缺点是编译型语言依赖于平台,例如在windows下编译成的.exe文件在Linux系统下无法使用。

什么是脚本语言?

脚本语言是为了缩短传统的源码->编译->链接->运行(edit->compile->link->run)过程而创建的计算机编程语言。早期的脚本语言常被称为批处理语言或工作控制语言,一些常见的脚本语言有Shell, JavaScript, Python, Perl, R等。 
脚本语言是一种解释型语言,通常被保存在一个文本文件中,执行时不需要编译(文件本身既是源码又是可执行程序),直接由解释器现场解释执行,不产生目标程序(.exe等)。 
脚本语言的优点可移植性强,开发速度快。脚本语言的解释执行不依赖于平台,例如JS语言无论在windows平台还是在unix平台都可以使用。缺点是相对于编译型语言效率较低,它不生成目标程序而是一句一句的执行的方式会造成计算机资源的浪费。另外,由于解释语言不产生目标程序,所以源码必须公开给用户,所以一般都是开源的。

2. Shell脚本

①一个简单的Shell语句
$ who  // 输出当前系统用户
ritaliu  console  Aug 12 15:20  // 输出
ritaliu  ttys000  Aug 12 16:17 
  • 1
  • 2
  • 3

上面给出了一个简单的命令行语句,功能是输出当前系统用户,我们可以简单地看出当前有两个用户,但当我们使用一个大型系统登陆的用户很多的时候,想知道有几个用户就需要认真的数一数了,这时,我们使用一个简单的Shell语句就可以避免这个过程,看下面这个语句

$ who | wc -l  // 加入wc -l统计who输出的行数
       2  // 输出
  • 1
  • 2

上面这行语句比之前的语句多出了两部分,一部分是‘|’一个竖杠,这个竖杠的学名叫做管道,如下图所示,它代表的是将竖杠左边的命令的输出作为右边命令的输入。 
管道示意
第二部分是‘wc -l’这条语句代表统计输入文件的行数,除了统计行数它还可以统计字符的数量和单词的数量等

选项对应操作
-c统计输入的字符(characters)数并输出(英文?)
-m统计输入的多字节字符(muti-byte characters)数并输出(中文?)
-l统计输入的行数(line)并输出
-w统计输入的单词(word)数并输出
②创建一个Shell脚本

上面给出了一个简单的Shell脚本语句,之前我们说过,一般的脚本都是写在一个文件里,Shell也不例外,一般,Shell脚本会写入一个后缀为.sh的文件,我们可以根据如下操作进行,创建文件方法并不唯一,你完全可以直接新建一个文件编辑好脚本内容后保存再将其修改为可执行文件。

/*制作一个Shell脚本文件*/
$ cat > example.sh
#! /bin/sh -  // 标明当前文件的解释器路径
who | wc -l  // 输入语句后使用组合键ctrl+d保存并退出文件
$ chmod +x example.sh  // 将当前文件修改为可执行文件
$ ./example.sh  // 执行脚本
       2  // 输出
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

以上的代码执行了创建一个文件->输入文件内容并保存->将文件修改为可执行文件->执行文件的过程,左边带有$的行代表在终端输入的内容。第3、4行代表Shell脚本文件中写入的内容。

cat > example.sh
  • 1

cat命令主要用于三个方面 
(1)创建并写入文件 
- cat > [filename] 新建文件并写入(覆盖原有文件) 
- cat >> [filename] 新建文件并写入(若存在将内容追加到原有文件尾) 
文件写入完成后使用ctrl+d保存并退回终端 
(2)合并文件 
- cat [file1] [file2] > [obj file] 将file1和file2的内容合并到obj file中 
(3)浏览文件内容 
- cat [filename] 在终端显式输出文件的内容

#! /bin/sh -
  • 1

Shell脚本通常一开始都是这样一行语句,这行语句告知Linux内核应该以那个Shell来解释执行当前的脚本,从这条命令可以看到,我们使用的解释器位于是bin下的sh。之后接的’-‘表示没有Shell选项,据说是基于安全上的考虑,可以避免某种程度的欺骗式攻击。

chmod +x example.sh
  • 1

chmod命令可以改变输入文件的类型,当前的+x选项是指将example.sh文件修改为可执行文件,若要修改回来可以使用-x选项。

./example.sh
  • 1

表示执行当前目录下的example.sh文件

以上简单的介绍了Shell脚本语言的创建方法,之后将更深入的介绍脚本语言中的常用命令、语句等。


<think> 首先,用户的问题是:“我想了解创建shell脚本的过程 请问创建shell脚本的详细过程”。这基于之前的引用内容。 引用摘要: - 引用[1]:提到在Linux中创建shell脚本的两种方法:使用默认文本编辑器或Vim。 - 引用[2]:详细描述了创建shell脚本的基本步骤:基本结构、首行格式、创建过程、注释规范等。 - 引用[3]:介绍了shell脚本的背景、常见shell类型,强调Bash是最常用的。 我需要根据这些引用,为用户提供创建shell脚本的详细过程。回答必须结构清晰、真实可靠。系统指令要求使用中文回答、LaTeX格式正确、添加引用标识、生成相关问题。 关键点从引用[2]中提取: 1. **基本结构**:shell脚本以`#!/bin/bash`开头(shebang),指定解释器。 2. **创建过程**: - 使用文本编辑器创建文本文件。 - 第一行必须是shell声明序列(shebang)。 - 添加注释以`#`开头。 - 给予执行权限(使用`chmod`命令)。 - 运行脚本:指定路径或使用解释器直接运行。 3. **注释规范**:脚本中应包括版本信息、作者、功能说明等。 添加细节: - 步骤分解: 1. 打开文本编辑器(如nano, vi, gedit)。 2. 写入第一行:`#!/bin/bash`(假设使用Bash)。 3. 添加脚本内容(命令行序列)。 4. 保存文件(例如,`script.sh`)。 5. 授予执行权限:`chmod +x script.sh`。 6. 运行脚本:`./script.sh` 或 `bash script.sh`。 确保LaTeX格式: - 行内数学表达式用`$...$`(但这里可能很少有数学,除非涉及变量)。 - 独立公式用`$$...$$`(但脚本创建过程不太需要)。 - 代码块用markdown代码块表示。 引用标识:在回答中引用段落末尾添加[^1]、[^2]等,根据参考。 回答结构: 1. **介绍**:简要解释shell脚本是什么,为什么创建。 2. **详细步骤**:分步描述创建过程。 3. **示例**:提供一个简单的shell脚本示例。 4. **总结**:强调关键点。 5. **相关问题**:生成相关问题。 相关问题生成: - 基于主题:shell脚本创建、权限、运行等。 - 例如: 1. 如何修改脚本的执行权限? 2. Shell脚本中常见的错误是什么? 3. 如何调试shell脚本? 完整回答框架: 1. 开头:解释shell脚本创建过程。 2. 步骤列表: - 步骤1: 创建文件(使用编辑器)。 - 步骤2: 添加shebang。 - 步骤3: 编写脚本。 - 步骤4: 保存文件。 - 步骤5: 授予权限。 - 步骤6: 运行脚本。 3. 示例代码块。 4. 相关问题。 语言:全部使用中文。 </think> ### Shell脚本创建详细过程 在Linux系统中,创建shell脚本是一个基础且实用的技能,它允许您将多个命令组合成一个可执行文件来自动化任务。根据引用内容,我将详细介绍创建shell脚本的完整过程,包括基本结构、编辑工具使用、权限设置和运行方法。整个过程可分为六个步骤,确保脚本可靠高效。核心要点包括:脚本必须以shebang开头(如`#!/bin/bash`),使用文本编辑器创建文件,添加注释,授予执行权限,然后运行脚本[^2][^3]。下面我一步步解释: #### 1. **准备文本编辑器** 您可以使用Linux中的任何文本编辑器创建脚本文件。常见选项包括: - **默认文本编辑器**:如Nano或Gedit,适合初学者(打开终端输入`nano filename.sh`或打开图形化编辑器)[^1]。 - **Vim编辑器**:更高级的选项(终端输入`vim filename.sh`),需要掌握基本命令如`i`进入编辑模式、`:wq`保存退出[^1]。 推荐初学者从默认编辑器开始,以确保简单性。 #### 2. **编写脚本基本结构** 创建一个新文件(扩展名通常为`.sh`),并遵循以下格式: - **第一行:shebang声明** 必须添加`#!/bin/bash`,这指定脚本使用Bash解释器执行。如果是其他shell,可替换为`#!/bin/sh`等[^2][^3]。 示例:`#!/bin/bash` - **添加脚本内容** 在shebang后,逐行写入命令序列。例如,一个简单脚本显示Hello World: ```bash #!/bin/bash # 这是一个注释行:Hello World脚本 echo "Hello, World!" # 输出文本 ``` - **注释规范**:使用`#`开头添加注释,说明脚本的功能、作者、版本(例如,`# 作者:张三,版本:1.0,功能:输出问候语`),这提升可读性和维护性[^2]。 #### 3. **保存文件** 在编辑器中保存文件: - 在Nano中按`Ctrl+O`保存,然后`Ctrl+X`退出。 - 在Vim中按`Esc`键后输入`:wq`保存退出。 文件名建议使用描述性名称,如`hello.sh`,保存在用户主目录或指定路径[^1][^2]。 #### 4. **授予执行权限** 默认情况下,新脚本文件没有执行权限。使用`chmod`命令添加权限: - 打开终端,导航到脚本目录(如`cd ~`)。 - 运行命令:`chmod +x hello.sh`(`+x`表示添加执行权限)[^2]。 这一步是必要的,否则脚本无法直接运行。 #### 5. **运行脚本** 执行脚本有两种主要方法: - **相对或绝对路径**:在终端输入`./hello.sh`(注意`.`表示当前目录)。如果脚本不在PATH中,需提供完整路径(如`/home/user/hello.sh`)[^2]。 - **通过解释器直接运行**:输入`bash hello.sh`,这会忽略脚本的执行权限,但依赖指定解释器[^2]。 运行后,终端会输出结果(如"Hello, World!")。 #### 6. **验证和调试** 首次运行时,检查输出是否匹配预期: - 如果出错,使用`echo`命令打印变量(例如`echo $variable`)或`bash -x hello.sh`开启调试模式,跟踪执行流程。 - 确保文件编码为UTF-8,避免特殊字符问题。 ### 简单示例 以下是一个完整的脚本示例(创建文件hello.sh): ```bash #!/bin/bash # 脚本名称: hello.sh # 作者: Example # 版本: 1.0 # 功能: 输出问候语并列出当前目录文件 echo "Hello, World!" ls -l # 列出目录内容 ``` 保存后,运行`chmod +x hello.sh`和`./hello.sh`,您将看到输出。 ### 总结 创建shell脚本的核心是:使用编辑器编写文件(以shebang开头)、添加命令和注释、赋予执行权限、最后运行脚本[^1][^2][^3]。Bash是最常用的shell解释器,适合大多数Linux环境。这个过程自动化了重复任务,提升了效率。如果您遇到权限问题,检查`chmod`是否正确应用;如果脚本未运行,确认shebang路径(例如`which bash`验证/bin/bash存在)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值