Linux学习笔记:shell
程序员文章站
2024-01-11 23:07:52
本文更新于2019 06 12。 [TOC] 通配符 :0个至无穷多个任意字符。 ?:1个任意字符。 [AB]:枚举中任意一个字符。 [A B]:范围中任意一个字符。 [\^AB]:任意一个不在枚举中的字符。 [\^A B]:任意一个不在范围中的字符。 特殊符号 \ :注释符。该行其后的内容均视为注 ......
本文更新于2019-06-12。
通配符
- *:0个至无穷多个任意字符。
- ?:1个任意字符。
- [ab]:枚举中任意一个字符。
- [a-b]:范围中任意一个字符。
- [^ab]:任意一个不在枚举中的字符。
- [^a-b]:任意一个不在范围中的字符。
特殊符号
- #:注释符。该行其后的内容均视为注释。
- \:转义符,并可将命令扩展至下一行。
- |:管道符。将左侧命令的标准输出作为右侧命令的标准输入。右侧命令可以使用
-
来指代标准输入。 - ||:左侧命令执行不成功,则执行右侧命令。否则不执行右侧命令。
- ;:连续命令分隔符。
- ~:用户主目录。
- $:使用变量前导符。
- &:作业控制符。将命令变为在后台工作。
- $$:左侧命令执行成功,则执行右侧命令。否则不执行右侧命令。
- !:逻辑非。
- /:目录路径分隔符。
- >:输出流重定向,替换内容。1为标准输出,2为标准错误输出。如:
cat .bash_history &> /dev/null
表示以替换方式重定向标准输出和标准错误输出。 - >>:输出流重定向,追加内容。1为标准输出,2为标准错误输出。如
cat .bash_history >> /dev/null 2>&1
表示以追加方式重定向标准输出和标准错误输出。 - <:输入流重定向。0为标准输入。如:
cat > /dev/null < .bash_history
表示重定向标准输入。 - <<:输入流重定向,指定输入结束字符串。0为标准输入。如:
cat > /dev/null << ending
表示指定标准输入结束字符串。 - '':字符串。不能进行变量替换。
- "":字符串。能进行变量替换。
- ``:取执行命令内容。同
$()
。 - ():子shell的开始与结束。
- {}:命令块组合。
变量
变量的设置规则如下:
- 变量名与变量值以
=
连接,=
两侧不能有空格。 - 变量名只能是英文字母和数字,但不能以数字开头。
- 可使用转义字符
\
。 - 变量值如有空格可使用
""
或''
引起,但""
引起的特殊字符(如$
)会使用其对应的值,而''
引起的特殊字符仅为纯文本。 - 变量如需使用其他变量的值,可使用
$name
或${name}
(建议)。可使用${name[index]}
使用数组元素的值。 - 变量值如需使用其他命令执行的值,可使用`command`或
$(command)
(建议)。 - 变量值如需使用数值运算的值,可使用``$((calculation))。
- 如变量需在子进程使用,则需使用
export
将变量设置为环境变量。 - 变量类型默认为字符串。
- 通常大写变量为环境变量。
环境变量
- histsize:
history
历史记录的最大条数。 - home:用户主目录。
- hostname:主机名。
- hosttype:主机硬件类型。如:x86_64。
- lang:语系。
- machtype:机器内核类型。如:x86_64-redhat-linux-gnu。
- mail:
mail
读取的邮箱文件。 - ostype:操作系统类型。如:linux-gnu。
- path:可执行文件的查找路径。以
:
分隔顺序查找。 - ps1:命令提示符。
- random:随机变量。
- shell:shell可执行文件路径。
- user:用户名。
默认变量
- #:去掉第0个命令行参数或函数参数的其余参数个数。
- $:当前shell的pid。
- -:
set
的设置。 - 0,1,2,...:第n个命令行参数或函数参数。第0个参数为shell脚本文件名。
- ?:上一个命令的返回码。通常执行成功返回0。
- @:去掉第0个命令行参数或函数参数的其余参数。
shell script
第一行可使用#!
声明该script使用的shell。如:#!/bin/bash
。
case
case $var in "value1") do1 ;; "value2") do2 ;; *) do3 ;; esac
if
if condition; then do fi
if condition; then do1 else do2 fi
if condition1; then do1 elif condition2; then do2 else do3 fi
condition可为条件判断式[ optest ]
或使用&&
、||
连接的多个条件判断式。下同。
for
for ((init;condition;each)) do do done
((
和))
之间各值可以使用空格隔开,其中也可以使用i++
、i=i+1
这种表达式。
for var in value1 value2 do do done
value*序列可为命令执行结果。
until
当条件为真时,退出循环。
until condition do do done
while
当条件不为真时,退出循环。
while condition do do done
function
函数必须先定义,再调用。
函数定义:
function func () { do }
函数调用:
func param1 param2