别名 {#别名}
格式 {#格式}
在Linux中,别名的命令为 alias
,其使用方法为: alias 别名="表达式"
- 别名通常只包含一个或多个简单的命令
- 默认定义的是临时别名,只需要在终端输入
unalias 别名
或关闭当前终端即可撤销 - 如需设置永久别名,则需要修改并生效环境变量文件,其位于
/etc/profile
举例 {#举例}
将 test
定义为 ls -l
的别名
|-----------|------------------------------|
| 1
| alias test =" ls -l"
|
将 remove
定义为 rm -i
的别名
|-----------|-------------------------------|
| 1
| alias remove= "rm -i"
|
函数 {#函数}
格式 {#格式-1}
-
Shell的函数格式与JavaScript、Python相似,也是解释性语言的共性啦;其格式如下:
|---------------------|-----------------------------------------------------------------------------------------------| |
1 2 3 4 5 6
|function_name () { # 函数的命令和操作 # 可以使用参数和局部变量 # 可以使用 return 语句来返回值 # 必须在调用函数地方之前先声明函数 }
| -
要调用一个Shell函数,只需使用函数名称后面加上括号,可以传递参数作为函数的输入
基本调用:
函数名
带参调用:
函数名 参数
-
除此之外,还有些特殊字符,如下所示:
| 符号 | 解释 | |:------------------------:|:---------------------------------------:| |
$0
| 脚本的名称 | |$1
$2
$3
... | 函数或脚本的参数,$1
表示第一个参数,以此类推 | |$#
| 参数的数量 | |$@
| 以列表形式展示所有参数 | |$*
| 将所有参数作为单个字符串展示 | |$?
| 上一个命令的退出状态; 用于检查命令是否成功执行(0 表示成功,非零表示失败) | |$$
| 当前脚本或进程的PID(进程号) | |$!
| 最后一个在后台启动的命令或进程的PID(进程号) |
举例 {#举例-1}
|------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #!/bin/bash # 定义一个函数,计算两个数的和并返回结果 add_numbers () { local num1= $1 local num2= $2 local sum =$((num1 + num2)) echo $sum # 返回结果 } # 调用函数并获取返回值 result=$(add_numbers 5 3) echo "总和: $result " echo "脚本名: $0 " echo "参数数量: $# " echo "脚本参数: $@ " echo "最后一条命令的返回值: $?" echo "进程号: $$"
|
返回值 {#返回值}
说明 {#说明}
在Linux Shell中,返回值分为: 状态返回值 和 结果返回值 ;本文讲的是前者,用于判断命令执行的状态。
-
函数的返回值,可通过
$?
系统变量获得 -
需要自定义返回值时,可使用:
return N
(其中 N 的取值范围为:0-255
)如果不加,将以最后一条命令运行结果,作为返回值
-
通常情况下,返回值为
0
为无错误返回,处于1-255
内为有错误返回
?提示:返回值是一组状态码;如果需要自定义输出(如特定文本),请使用 echo
。
举例 {#举例-2}
写一个输出返回值的函数
|-----------------------|---------------------------------------------------------------------------|
| 1 2 3 4 5 6 7
| #!/bin/bash msg () { echo "Done!" return 32 } msg echo "返回值: $? "
|
如果返回值大于255时,需要将返回值放入一个变量中(作为中转),避免溢出
|-----------------------|----------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7
| #!/bin/bash msg2 () { read -p "输入一个数字:" num echo $[num*5] } result=`msg2` echo "返回值: ${result} "
|
内部命令 {#内部命令}
(1)内部命令是Shell程序的一部分,执行速度快且不需要创建子进程,但相应的功能简单。
(2)外部命令是Linux系统中的实用程序,需要额外安装,功能丰富、随取随用。
- 可以通过
type 命令名
查看该命令是否为内部还是外部 - 还可以通过
echo $PATH
查看外部命令的存储路径