RHCE认证辅导:bash shells 和标准输入输出

bash shells 和标准输入输出
 
去除特殊的字符或扩展
/……  去除下一个字符的特殊含义
'……'  禁止单引号里面所有的扩展
"……" 禁止双引号里面的所有的扩展,除去 ($ 变量扩展 、` 反引号,命令扩展 、\反斜杠,但个字符扩展禁止 、!历史记录替换)
 
系统用到的shell可以在/etc/shells里面查询,cat  /etc/shells

不同的shell之间可能语法不一样,因此一些脚本语言中都会首先写一些脚本使用的shell声明。如: #!/bin/bash
 
通配符
*匹配零个或多个字符串
?仅匹配一个任意字符串
[]匹配某个范围的任意一个字符。[0-9]、[abc]、[^abc]、[:alpha:]
^反向选择,
[:……:]匹配预定字符类中的字符。有alpha、upper、lower、digit、alnum、punct、space。
~波浪线,引用主目录
$(一条命令)、'一条命令'  将一条命令执行的结果当作另一条命令的参数打印。
{}引用一个组。
 
bash变量
使用VARIABLE=VALUE来设置变量,使用${VARIABLE}来引用变量。
 
变量与生存周期
本地变量:只在本地有效的变量,本shell和其子shell里面。  VARIABLE=BALUE
环境变量 :在所有子shell中有效的变量。export VARIABLE=BALUE
查看变量:
set|grep XXXX 查询系统中的所有变量,包括本地变量和环境变量。
env|grep XXXX 仅查询系统中的环境变量。
 
which fdisk command 查看系统中某个命令的位置。
 
alisa 和 unalisa 别名取消别名
 
全局变量、用户变量、登录shell、非登陆shell
/etc/profile 全局变量、登录shell
/etc/bashrc 全局变量、全局
~/.bashrc 用户变量、 登录shell
~/bash_profile 用户变量、 全局
登陆脚本:  登录shell属于登陆脚本,只有在用户再次登陆之后才会有效。 登录shell和非登陆shell之间的区别就是读取的环境变量不同。eg: su - userX ; su userX
可以使用sourcing file来让变量修改之后立即生效。如: sourcing ~/.bsdhrc
开机脚本: ~/qnaconda-ks.cfg
注销脚本: ~/.n=bash.logout
历史命令: ~/.bash_history
 
STDIN标准输入,默认键盘
STDOUT标准输出,默认是终端
STDERR标准错误输出,默认是终端
输出重定向、输入重定向   command operator filename
> STDOUT  2>STDERR  &> STDOUT&STDERR  >>append  2>/dev/null drop error
2>&1 错误输出当作正确输出。
<<讲多次输入的结果一次输出。   <输入重定向
 
管道连接(piping)
command 1 | command 2 将命令1执行的结果给命令2 作为输入
eg:  ps aux %cpu,%men,comm,pid|sort -r|head -n 11|mail -s "cup process" root
tee(redirecting to multiple target)重定向至多个目标
for loops 循环语句

从userlist.txt的标准输入中设置密码
在do……done之间是循环。

相关推荐