标签:bash
命令引用
$(command)
`command` `` 反引号 ~符号键
[root@localhost ~]# mkdir `date +%H-%M-%S`
[root@localhost ~]# mkdir $(date +%H-%M-%S)
命令行展开
~自动展开为用户的家目录,或指定用户的家目录(管理员可以)
{}可以承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
[root@localhost ~]# mkdir -pv /tmp/x/{y1/{a,b},y2}
[root@localhost ~]# tree /tmp/x
/tmp/x
├── y1
│ ├── a
│ └── b
└── y2
[root@localhost ~]# mkdir /tmp/{a,b}-{c,d}
分别生成四个目录a-c,a-d,b-c,b-d
查看命令的执行结果,成功/失败
成功为0
失败1-255
echo $?
bash的基本特性引用
强引用:··内部字串直接显示不做任何替换
弱引用:“”内部的变量会进行变量替换
globbiing:文件名通配,(整体文件名匹配)而非部分匹配
匹配模式:元字符
*:匹配任意长度的任意字符
?:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[a-z],[A-Z],[0-9],[a-z0-9]
[[:upper:]] 大写字母
[[:lower:]] 小写字母
[[:alpha:]] 所有字母
[[:digit:]] 所有数字
[[:alnum:]] 所有字母和数字
[[:space:]] 所有空白字符
[[:punct:]] 所有的标点符号
[^]:匹配指定范围外的任意单个字符
[^[:upper:]]
[^[:digit:]]
练习
[root@localhost test]# ls /dev/t*[[:digit:]]
[root@localhost test]# ls /dev/t*[^[:digit:]]
bash快捷键
ctrl+a光标回到行首
ctrl+e光标回到行首
ctrl+u删除光标至行首的内容
ctrl+k删除光标至行尾的内容
ctrl+l清屏(同clear命令)
命令补全
路径补全
路径缓存(hash):
每次输入命令后都会缓存该命令的完整路径,以后不再重新在shell $PATH的路径列表中查找
hash -r 删除所有缓存
-d 删除指定命令的路径
--------------------------------------------------------------------------------
IO重定向及管道
程序也有IO 来源很多
标准输入:键盘
标准输出:显示器
错误标准输出:显示器
输出重定向:
>
特性:覆盖输出
[root@localhost test]# ls /tmp > /tmp/test/devdir
输出至的文件可以不存在自动创建
>>
特性:追加输出
[root@localhost test]# ls /dev >> /tmp/test/devdir
输出至的文件可以不存在自动创建
错误输出重定向
2>
特性:覆盖输出
[root@localhost test]# cd /tmp/bin 2> /tmp/test/erro
/tmp/bin该目录不存在
2>>
[root@localhost test]# ls /tmp/bin 2>> /tmp/test/erro
追加输出错误
特性:追加输出
合并正常输出和错误输出
合并正常输出
&> 覆盖
[root@localhost test]# ls /tm/p &> /tmp/test/stand_err
&>> 追加
[root@localhost test]# ls /tm/p &>> /tmp/test/stand_err
合并错误输出
COMMAND > /PATH/TO/SOMEFILE 2>&1
COMMAND >> /PATH/TO/SOMEFILE 2>&1
慎用:使用set -c 设置(+c关闭设置)shell取消覆盖输出重定向至已存在的文件
>|强行覆盖输出
set仅对当前shell有效
特殊设备 /etc/dev/null
输入重定向:
<
tr命令: tr [OPTION].....SET1 [SET2]
把输入的数据当中的字符,凡事在SET1中出现的字符对位替换为SET2字符
用法1
tr SET1 SET2 < /PATH/TO/SOMEFILE
用法2
tr -d SET1 /PATH/TO/SOMEFILE
注意tr只输出显示修改结果,不修改原文件。可以将修改结果输出重定向至其他位置
<<
here doucument 创建文档
cat << EOF EOF为结束符
输入什么输出什么。
cat > /PATH/TO/SOMEFILE << EOF
输入的内容保存到/PATH/TO/SOMEFILE
管道
连接程序,实现将前一个命令的标准输出(正确的,错误输出不会输出到后一个程序)直接定想到后一个程序当输入
COMMAND1|COMMAND2|COMMAND3
[root@localhost test]# cat test.txt 2> /dev/null | tr yangyouwei YANGYOUWEI
错误输出到null,正确的输出到tr转换字符
--------------------------------------------------------------------------------
bash特性:变量
程序:指令+数据
指令:由程序文件提供
数据:IO设备,文件,管道,变量
程序:算法+数据结构
变量名+指向内存空间中某一段空间的起始地址-----变量(命名的内存空间)
变量赋值:name=vlaue
变量是命名的内存空间,赋值写入数据
规定了变量的类型--决定了变量存储格式,表示范围,参与的运算
字符型:shell默认都为字符型
数值型:shell不支持浮点型
bash是弱类型变量编程语言
bash把所有的变量视作字符型,不支持浮点数据除非借助工具
bash中的变量无需事先声明,相当于把声明和赋值同时实现
变量替换:取得一个变量名所指向内存空间中的数据,把变量名出现的位置替换为所指向的内存空间中的数据
变量引用
${value-name},$value-name
变量名的命名规范:变量名只能包含数字和字母,下划线,不能以数字开头
见名知意,命名机制遵循某种法则,不能使用程序保留字列如if,else,then,while
bash变量类型:
1本地变量 仅对当前shell有效
2环境变量 作用域为当前shell进程及其子进程
3局部变量 作用域为某代码片段(函数上下文)
4位置参数变量 向执行脚本的shell进程传递的参数
5特殊变量 shell内置的有特殊功用的变量
本地变量
变量赋值 name=value (变量操作)
命令历史:
每次关机或用户登出系统保存到家目录下.bash_history
history 内嵌命令
设置history命令的功能,通过设置环境变量实现
$HSITSIZE shell进程可保留的命令历史条数
$HSITFILE 保持持久的历史文件
history -c 删除所有条目从而情况历史列表(内存中的表)
-d 偏移量,从指定位置删除历史列表
-a 把当前shell的历史列表保存到文件中
-w 将当前历史写入到历史文件中
n 显示最近第n条
调用
!#再一次执行历史列表中的第#条命令
!STRING再一次执行命令历史列表中以string开头的命令
调用上一条命令的最后一个参数 ESC ,.=!$
Alias别名
alias 显示当前shell的命令别名
unalias command 取消别名
alias newname=‘command [option]‘ COMMAND中间无空格可不加引号
\COMMAND使用命令的原始命令运行。不以别名运行
别名优先级高于原始命令,优先运行
Cenos7支持命令 选项补全(长格式)
----------------------------------------------------------------------------------------------------------
``命令引用
[root@localhost ~]# echo `echo $USER`
Root
""弱引用
[root@localhost ~]# echo "echo $USER"
echo root
‘‘强引用
[root@localhost ~]# echo ‘ehco $USER‘
ehco $USER
----------------------------------------------------------------------------------------------------------
标签:bash
原文地址:http://yangyouwei.blog.51cto.com/114816/1829346