打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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_name
class由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)是一个约定的标记(解释器指令),它告诉系统这个脚本使用哪一种Shell
echo是Bash中的内置命令,用于通过传递参数来显示标准输出,将文本或字符串打印到屏幕上。
Bash脚本的运行
作为可执行程序
chmod +x ./file_name.sh./file_name.sh注:
第一行给予脚本执行权限
第二行执行脚本
作为解释器参数
/bin/sh file_name.sh注:
该方式不需要在第一行指定解释器信息
以上内容是否Bash 变量
变量的定义
变量是一个容器,用于临时存储数据(整数、浮点数、字符串等类任意类型的数据)
变量名可包含字母,数字,下划线,并且只能以字母和下划线开头。
Bash 变量声明
语法:
Variable_name=value
Bash 变量的定义规则:
变量名区分大小写,a和A为两个不同的变量。
变量名可以使用大小写字母混编的形式进行编写。
变量名与值之间的=两侧都不能有空格。
在读取或打印变量时,需使用$+变量名。
变量可以写在Bash脚本中的任何地方,在运行时,Bash会自动将其替换为变量值。
Bash 数据类型
在 Bash 中声明变量后赋值,它会自动判断数据类型,不必在声明的同时去定义变量的数据类型。 如果您将数字值赋值给变量,它将会自动转换为整数工作;如果您将字符串赋值给该变量,那么它将会转换为字符串类型。
Bash 变量类型
Bash 变量有两种类型:
1. 系统定义的变量 由 Linux 操作系统本身创建和维护的预定义变量。它们的命名标准通常是以大写字母对变量进行命名。
BASH 表示 Shell 名称,示例:
BASH=/user/bin/bash
BASH_VERSION 指定 Bash 持有的 shell 版本,示例:
BASH_VERSION=4.2.46(2)
COLUMNS 指定编号,屏幕的列数,示例:
COLUMNS=80
HOME 为用户指定主目录,示例:
HOME=/home/W3Cschool
LOGNAME 指定日志记录用户名,示例:
LOGNAME=W3Cschool
若要了解更多的系统定义变量,您可以在终端输入命令set,env,printenv以获取这些变量的列表。
2. 用户定义的变量 由用户自行创建和维护的变量。这些类型的变量多数以小写字母参与命名,但不具有大小写强制性规定。
#!/bin/bashsay=Hello user
Comment=welcome to W3Cschoolecho "$say,$Comment!"
执行结果:
Hello user,welcome to W3Cschool!
Bash 变量使用
我们通常对 Bash 中的变量执行两个操作:
为变量赋值
comment=Welcome to W3Cschool
读取变量的值
comment=Welcome to W3Cschool
echo $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.sh
Hello World!
Welcome to W3Cschool!
变量
当您想打印输出一个已定义的变量,则需要使用双引号。这时若使用单引号不会将其视为变量。请仔细阅读以下示例:
#!/bin/bashcomment="Welcome to W3Cschool!"echo "$comment"echo '$comment'
执行结果:
$ ./bash_script.sh
Welcome 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.sh
Hello World!
Welcome to W3Cschool!
Hello World!
Welcome to W3Cschool!
Hello World!
Hello User, Welcome to W3Cschool!
Hello World!
Hello User, $comment
以上内容是否对您有帮助
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Shell脚本从入门到大神的必备文章
Linux 中执行Shell 脚本的方式(三种方法)
source、sh、bash、./执行脚本的区别
shell中的点命令与source命令的区别
Linux——Shell管理脚本(基础详解--精)
从学习export命令理解到的Shell环境和变量生存期(转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服