Bash基础
2015-10-03 18:10
393 查看
Bash基础
基本命与操作符
#注释,用于一行行首(
#!除外)或本行空白的后边。
;命令分隔符,可以在一行中写多个命令。
;;终止case选项。
.等价于source命令,这是一个bash内建命令。
.作为文件名的前缀时,则该文件为隐藏文件。作为目录名的一部分
.表示当前目录,
..表示上一级目录。用于字符匹配中,作为正则表达式的一部分,用来匹配任何单个字符。
“部分引用,”STRING”阻止了一部分特殊字符。
'全引用,’STRING’阻止了全部特殊字符。
,逗号连接了一系列算术操作,虽然里面的内容都被运行了,当只有最后一项被返回。
\转义字符
/文件名路径分隔符,或用来作除法。
`后置引用,命令替换。
:空命令
!取反操作符。
*万能匹配符,用于文件名匹配或正则表达式中。注意:
*在正则表达式匹配中与文件名匹配中是不同的。数学运算。
**幂运算。
?测试操作,或在正则表达式中匹配任意单个字符。
$变量替换,或在正则表达式中作为行结束符。
\$$变量的间接引用。
^正则表达式中表示行首。
${}参数替换。
$*, $@位置参数。
$?退状态变量。
$$进程ID变量,保存了运行脚本进程ID。
()命令组。注意:在()中的命令列表将作为一个子shell来运行。
{xxx, yyy, ...}大括号扩展。
{}代码块,又称为内部组。事实上,这个结构创建了一个匿名函数,但是与函数不同的是,在其中声明的变量,对于脚本其它部分的代码来说还是可见的。
{}\;路径名
[]test
[[]]test
[]数组元素,或正则表达式中作为字符匹配的一个范围。
(())算术扩展和赋值,以及允许C风格的变量处理机制。
> &> >> >&重定向。
\<,\>正则表达式中的单词边界。
|管线。
>|强制重定向。
+,-,*,/,**,%算术操作符
||逻辑或
&&逻辑与
!逻辑非
<<左移一位
<<=n左移n位
>>右移一位
>>=n右移n位
&按位与
&=按位与赋值
|按位或
|=按位或赋值
~按位非
^, XOR按位异或
^=异或赋值
&后台运行命令。
整数比较
操作符 | 描述 |
---|---|
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-ge | 大于等于 |
-lt | 小于 |
-le | 小于等于 |
< | 小于(需要双括号) |
<= | 小于等于(需要双括号) |
> | 大于(需要双括号) |
= | 大于等于(需要双括号) |
操作符 | 描述 |
---|---|
= | 等于 |
== | 等于 |
!= | 不等于 |
< | 小于,ASCII值 |
> | 大于,ASCII值 |
-z | 字符串为null |
-n | 字符串不为null |
操作符 | 描述 |
---|---|
-e | 文件存在 |
-f | file是一个普通文件 |
-s | 文件长度是0 |
-d | 文件是个目录 |
-b | 文件是个块设备 |
-c | 文件是个字符设备 |
-p | 文件是个管道 |
-h | 文件是个符号链接 |
-L | 文件是个符号链接 |
-S | 文件是个Socket |
-t | 关联到一个终端设备的文件描述符,可以用来测试一个给定脚本中的stdin[-t0]或[-t1]是一个终端 |
-r | 文件具有读权限 |
-w | 文件具有写权限 |
-X | 文件具有执行权限 |
-g | ? |
-u | ? |
-k | ? |
-O | 是否为文件的拥有者 |
-G | 文件组id是否与文件拥有者的组id相同 |
-N | 从文件最后一次打开到现在,是否被修改 |
f1 -nt f2 | 文件f1是否比f2新 |
f1 -ot f2 | 文件f1是否比f2旧 |
f1 -ef f2 | f1和f2是否都硬连接到一个文件 |
! | 取反上面的测试结果 |
Bash内建变量
$BASH:Bash可执行文件的路径/bin/bash。$BASH_ENV:该变量指向一个Bash启动文件,这个启动文件将在调用一个脚本时被读取。
$BASH_VERSION:Bash版本号,如:4.3.11(1)-release
$BASH_VERSINFO:Bash版本信息,是一个6元素的数组。内容分别是主版本号、次版本号、Patch次数、Build version、release status、Architecture。
$DIRSTACH:目录栈中栈顶的值。
$EDITOR:调用默认编辑器。
$EUID:有效用户ID号。
$FUNCNAME:当前函数的名字。
$GROUPS:当前用户所属的组。
$HOME:用户的home目录。
$HOSTNAME:系统名字
$HOSTTYPE:系统类型,如i686
$IFS:内部域分割符。
$LINENO:记录shell脚本中该变量所在的行号。
$MACHTYPE:系统类型。
$OLDPWD:所在的之前的目录。
$OSTYPE:操作系统类型。
$PATH:系统搜索路径。
$PIPESTATUS:保存管道的退出状态。
$PPID:当前进程的父进程的进程ID。
PS1:第一提示符,PS1:第一提示符,PS2:第二提示符,以此类推。
$PWD:当前工作目录。
$RANDOM:产生随机整数。注意:它是Bash的内建函数,而不是常量。
特殊参数 | 描述 |
---|---|
0,0,1,2...|位置参数,2...|位置参数,0表示脚本名,$1表示第一个参数,以此类推 | |
$# | 命令行或者位置参数的个数 |
∗|所有的位置参数,被作为一个字符串,* |所有的位置参数,被作为一个字符串,* 必须被 “” 引用 | |
@|与@| 与 * 同义,但是每个参数都是一个独立的 “” 引用的字串,$@ 也必须被 “” 引用 | |
$! | 在后台运行的最后的工作的进程ID |
$_ | 保存之前执行的命令的最后一个参数 |
$? | 函数或脚本的退出状态 |
$$ | 脚本自身的进程ID |
字符串操作
字符串长度${#string} expr length $string expr "$string":'.*'
提取子字符串
${string:position} ${string:position:length}
删除子字符串
#从string的左边删除第一个匹配的substring ${string#substring} #从string的左边删除最后一个匹配的substring ${string##substring}
子串替换
#使用replacement替换第一个匹配的substring ${string/substring/replacement} #使用replacement替换所有匹配的substring ${string//substring/replacement}
参数替换
${parameter} #如果参数没有设置具体值,就使用默认值 ${parameter-default},${parameter:-default} ${parameter=default},${parameter:=default} #如果paramerter被设置了,那就使用alt_value,否则就使用null字符串 ${parameter+alt_value},${parameter:+alt_value} #如果parameter被设置了,那就使用设置的值,否则print err_msg ${parameter?err_msg}, ${parameter:?err_msg}
declare或者typeset内建命令允许指定变量的具体类型,两个命令是等价的。参数选项如下:
declare/typeset参数选项 | 描述 |
---|---|
-r | 只读 |
-i | 整型 |
-a | 数组 |
-f | 函数 |
-x | export |
循环
for arg in [list] do command(s) ... done #C风格 for ((initialization; condition; change)) do command(s) ... done while [condition] do command(S) ... done #C风格 while ((condition)) do command(s) ... done until [condition-is-true] do command(s) ... done #同样也有循环控制命令 break continue break N #跳出N重循环 continue N #跳过本层N次循环 #测试与分支 case "$variable" in "condition1") command(s) ... ;; "condition2") command(s) ... ;; ... esac select variable [in list] do command(s) ... break done
函数
function function_name { command(s) ... [return](可选) } function_name() { command(s) ... [return](可选) }
参考文档
Advanced Bash-Scripting Guide
相关文章推荐
- linux中shell脚本中的break|continue
- Linux Shell学习笔记4:使用Linux环境变量
- 快速排序——PowerShell版
- Linux Shell学习笔记3:更多的bash shell命令
- Linux Shell学习笔记2:基本的bash shell命令
- 系统管理员常用的Powershell命令
- Linux Shell学习笔记1:Linux入门
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课
- linux,shell后台启动一个死循环程序不停输出信息,当关闭shell后重新打开为嘛没输出了
- <四>初识Bash
- [Linux.Shell] My Shell Tool - Support for UI CheckBox
- linux 几个简单shell脚本demo
- 常用 shell 脚本
- Putty和SSH Secure Shell简单设置
- Git windows下git bash显示中文
- 收集的55个Linux系统管理中常用的一些shell命令
- 使用Xshell连接Linux连接不上
- [Linux.Shell] 变量提取
- 冒泡排序——PowerShell版
- 不一样的命令行 – Windows PowerShell简介