bash教程摘要

若想知道您的操作系统支持哪些 Shell 类型,可在终端中输入命令:$ cat /etc/shells显示当前目录名 pwd我们可以使用ls -l命令来罗列出所有文件和目录使用cd命令移动至目标目录。---------------------------------------------------------Bash 文件系统及权限在正式进入 Bash 教程之前,我们需要来了解一下 Linux 的文件系统及文件权限。文件系统Linux 文件系统中的所有文件都可以被称为目录,这些文件的类别可划分为以下三种:普通文件(数据、文本、图像、程序指令)特殊文件(用于访问硬件设备)目录(包含普通文件和特殊文件的文件夹)我们可以使用ls -l命令来罗列出所有文件和目录

上图共有七列,其意如下:代表文件类型及权限,每个文件均以类型开头,接着指定访问权限。以特定字符表示:常规文件(-)特殊档案(c)命名管道(p)块设备(b)套接字(s)目录(d)链接(l)代表存储块的数量。代表文件的所有者或具有管理权限的超级用户。代表所有者、超级用户组代表文件大小代表文件的最后修改日期(具体到分钟)代表文件或目录的名称文件权限Linux 通过以下两个授权属性来保护其文件系统:权限阅读权限(r),该权限允许查看文件内容。写入权限(w),该权限允许修改文件内容。执行权限(x),该权限允许运行编程文件或脚本。在调用权限的情况下会提供(-)所有权所有者是创建文件的超级用户,具有访问与文件关联的任何权限。用户组是超级用户创建的一或多用户,与超级用户一样具有访问与文件关联的任何权限。其他用户是排除在超级用户和用户组之外的用户,只具有前两者创建或拥有的任何文件或目录关联的权限。举个例子

在上图红色框体内的第一列共有十个字符,我们先排除第一个字符(文件类型),往后的九个字符均表示权限。 第2-4个字符(rw-)指定了超级用户的读取和写入权限。 第5-7个字符(r--)指定了用户组的读取权限。 第8-10个字符(r--)指定了其他用户的读取权限,但在这里,读写均被拒绝。更改权限使用chmod命令可以更改用不同用户类型的文件权限。添加或删除任何用户类型的任何权限的基本形式:chmod [class][operator][permission] file_namechmod [ugoa][+or-][rwx] file_nameclass由u(超级用户),g(用户组),o(其他用户),a(所有类型)表示。operator(+或-)表示添加或删除权限。permission由指示符r(读取),w(修改),x(运行)表示。为所有类型添加运行权限

以上内容是-----------------------------------------------------------入门指南打开终端,使用cd命令移动至目标目录。使用touch命令创建一个空文件命名为bash_script.sh作为shell脚本的容器。查看bash_script.sh文件的所有权限属性,在下图中可以看到该文件没有运行权限。

使用任意编辑器打开bash_script.sh,此处以gedit作为例子:$ gedit bash_script.sh编写脚本代码,打印Hello World!。#!/bin/bash# This is the basic bash scriptecho " Hello World!"第一行是#!(SheBang)指定Ball Shell的路径第二行是注释行第三行是echo命令执行打印输出内容将运行权限添加到文件。$ chmod +x bash_script.sh使用./执行脚本,打印输出。$ ./bash_script.shHello World!以上内容是否Bash 脚本在编程中,脚本是用于控制软件应用程序的一组命令,这些命令在被调用时自动执行任务。Bash脚本Bash Shell脚本是用Bash编写的计算机程序,它是一个包含了自定义数量命令的纯文本文件,用于在Linux系统上自动循环执行重复性任务。Bash脚本的创建使用cd命令进入将要保存脚本的目录。使用文本编辑器(如gedit/vi/vim命令),并键入shell命令使用touch命令创建脚本touch file_name在文本编辑器中打开脚本,键入以下命令(编辑器命令可根据个人更改)gedit file_name.sh脚本的第一行一般如下:#!/bin/bashecho "Hello World!"注:#!(SheBang)是一个约定的标记(解释器指令),它告诉系统这个脚本使用哪一种Shellecho是Bash中的内置命令,用于通过传递参数来显示标准输出,将文本或字符串打印到屏幕上。Bash脚本的运行作为可执行程序chmod +x ./file_name.sh./file_name.sh注:第一行给予脚本执行权限第二行执行脚本作为解释器参数/bin/sh file_name.sh注:该方式不需要在第一行指定解释器信息以上内容是否Bash 变量变量的定义变量是一个容器,用于临时存储数据(整数、浮点数、字符串等类任意类型的数据)变量名可包含字母,数字,下划线,并且只能以字母和下划线开头。Bash 变量声明语法:Variable_name=valueBash 变量的定义规则:变量名区分大小写,a和A为两个不同的变量。变量名可以使用大小写字母混编的形式进行编写。变量名与值之间的=两侧都不能有空格。在读取或打印变量时,需使用$+变量名。变量可以写在Bash脚本中的任何地方,在运行时,Bash会自动将其替换为变量值。Bash 数据类型在 Bash 中声明变量后赋值,它会自动判断数据类型,不必在声明的同时去定义变量的数据类型。 如果您将数字值赋值给变量,它将会自动转换为整数工作;如果您将字符串赋值给该变量,那么它将会转换为字符串类型。Bash 变量类型Bash 变量有两种类型:1. 系统定义的变量 由 Linux 操作系统本身创建和维护的预定义变量。它们的命名标准通常是以大写字母对变量进行命名。BASH 表示 Shell 名称,示例:BASH=/user/bin/bashBASH_VERSION 指定 Bash 持有的 shell 版本,示例:BASH_VERSION=4.2.46(2)COLUMNS 指定编号,屏幕的列数,示例:COLUMNS=80HOME 为用户指定主目录,示例:HOME=/home/W3CschoolLOGNAME 指定日志记录用户名,示例:LOGNAME=W3Cschool若要了解更多的系统定义变量,您可以在终端输入命令set,env,printenv以获取这些变量的列表。2. 用户定义的变量 由用户自行创建和维护的变量。这些类型的变量多数以小写字母参与命名,但不具有大小写强制性规定。#!/bin/bashsay=Hello userComment=welcome to W3Cschoolecho "$say,$Comment!"执行结果:Hello user,welcome to W3Cschool!Bash 变量使用我们通常对 Bash 中的变量执行两个操作:为变量赋值comment=Welcome to W3Cschool读取变量的值comment=Welcome to W3Cschoolecho $comment注意:如果通过单引号将变量或字符串进行任意拼接组合,那么将无法成功读取它们。命令行参数命令行参数通过将数据输入传递给代码功能块,使脚本更具动态性,如下示例:./bash_script.sh parameter1 parameter2...注:脚本名称与所有传递的参数之间不能存在空格,本处使用空格便于阅读。如何使用命令行参数在 Bash 中,命令行参数与以下默认参数或特殊变量的引用一同使用。$0 ——指定要调用的脚本名称。$1-9 ——存储前9个自变量的名称,或可用作自变量的位置。$# ——指定传递给脚本的参数总数。$* ——将所有命令行参数连接在一起来存储它们。$@ ——将参数列表存储为数组。$? ——指定当前脚本的进程 ID 。$$ ——指定最后一个命令或最近执行过程的推出状态。$! ——显示最后一个后台作业的 ID 。传递命令行参数的两种方法:使用位置编号 使用默认参数($1-9)来访问命令行参数。#!/bin/bashecho $0 '> echo $0'echo $1 $2 $3 $4 $5 $6 $7 $8 $9'> echo $1 $2 $3 $4 $5 $6 $7 $8 $9'执行结果:$ chmod +x bash_script.sh$ ./bash_script.sh Here is the W3Cschool./bash_script.sh > echo $0Here is the W3Cschool >echo $1 $2 $3 $4 $5 $6 $7 $8 $9使用数组 将参数作为数组传递,按照给定的算法来应用此方法。声明变量名,将值分配为$@。variable_name=("$@"```)通过指定数组索引来显示参数的值。${variable_name[i]}保存脚本,并通过传递参数来执行脚本。#!/bin/bashparameter=("$@")echo ${parameter[0]} ${parameter[1]} ${parameter[2]}命令替换在 Bash 中,命令替换允许命令的输出替换命令本身。 命令替换是指Bash执行的扩展,它获取Bash命令的输出,存储在一个变量中并显示回显。 命令替换在脚本和变量分配方面增强了数据的灵活性。语法:将命令替换为变量(命令替换的经典形式)是使用反引号,如下示例:variable_name=`command_name`variable_name=`command_name [option...] argument1 argument2...`variable_name=`/path/to/command`以$开头,将命令放在方括号内进行命令i换,如下示例:variable_name=$(command_name)variable_name=$(command_name [option...] argument1 argument2...)variable_name=$(path/to/command)以上内容是否Bash 引号字符串当您输入的内容为简单的字符串或文本时,单引号和双引号的作用没有任何区别。请仔细阅读以下示例:#!/bin/bashecho 'Hello World!'echoecho "Welcome to W3Cschool!"执行结果:$ ./bash_script.shHello World!Welcome to W3Cschool!变量当您想打印输出一个已定义的变量,则需要使用双引号。这时若使用单引号不会将其视为变量。请仔细阅读以下示例:#!/bin/bashcomment="Welcome to W3Cschool!"echo "$comment"echo '$comment'执行结果:$ ./bash_script.shWelcome to W3Cschool!$comment复合示例请仔细阅读以下示例,以帮助您更好的理解在 Bash 中,引号的概念及使用。$ ./bash_script.shechoecho "Hello World!"comment='Welcome to W3Cschool!'echo $commentechoecho "Hello World!"comment="Welcome to W3Cschool!"echo $commentechoecho "Hello World!"remark="Hello User, $comment"echo $remarkechoecho "Hello World!"remark='Hello User, $comment'echo $remark执行结果:$ ./bash_script.shHello World!Welcome to W3Cschool!Hello World!Welcome to W3Cschool!Hello World!Hello User, Welcome to W3Cschool!Hello World!Hello User, $comment以上内容是否对您有帮助​

(0)

相关推荐