shopt设置参数 glob通配符扩展 alias设置别名 多行单条命令 文件覆盖策略
- 2015-06-03 21:37:00
- admin
- 原创 3717
一、shopt命令使用
1、shopt相比set更加强大,推荐使用;
2、子shell不继承父shell的参数配置,比如errexit、xtrace;
3、普通条件语句不影响shell返回值,短路条件语句影响shell返回值;
shopt设置或者取消shell选项,不带参数显示所有选项状态:
-s enable (set) each OPTNAME,设置选项;
-u disable (unset) each OPTNAME,取消选项;
-p 打印所有选项;
常用选项:
expand_aliases,是否使用aliases;
login_shell,是否登陆shell;
cdspell,cd命令时细微的目录错误自动更正;
set命令使用:
set -e,如果脚本执行命令返回非零,脚本立即退出;
set -u,如果使用未定义变量则报错;
set -o history,开启命令记录;
set +o history,关闭命令记录;
set -o xtrace,显示执行的命令,每个加号表示一次调用深度;
set +o xtrace,不显示执行的命令;
set -x,等价于set -o xtrace;
set -o,显示所有选项;
二、glob通配符扩展
如果扩展成功则扩展后传递给命令,否则直接传递给命令,当然有些命令禁止扩展,注意事项:
1、不匹配以点号开始的文件,即隐藏文件;
2、find不做匹配,如find . -name *.sh,*.sh直接传递给find;
匹配规则:
*匹配0或多个字符
?匹配1个字符
[abc]匹配括号里的任意一个字符
[!abc]或者[^abc]匹配非括号里的任意一个字符
[a-z]配置a到z的所有字符
{log,gz}匹配log或者gz
示例:
ls *.gz,输出openssl-0.9.8zf.tar.gz
ls *.g?,输出openssl-0.9.8zf.tar.gz
ls *.tar.[a-z][a-z],输出openssl-0.9.8zf.tar.gz
ls *.{log,gz},输出install.log openssl-0.9.8zf.tar.gz
三、alias设置别名
功能说明:设置命令的别名,alias [别名]=[指令名称];
参 数:若不加任何参数,列出当前所有的别名设置;
特别说明:非交互式shell扩展别名选项默认关闭,非交互式shell不继承别名,单条命令禁止别名使用双引号;
[root@ebs-19233 ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
四、多行单条命令
shell支持多行单条命令,对称符号自动识别,或者使用强制换行符号。
[root@ebs-19233 ~]# echo "a
b
c"
输出:
a
b
c
[root@ebs-19233 ~]# echo a\
b\
c
输出:
abc
五、文件覆盖策略
mkdir tmp,如果目录或者文件存在直接返回失败。
mkdir -p tmp,如果目录存在,不进行创建返回成功,p参数自动创建父目录。
cp、mv、rm:i参数优先级高于f参数。
dd:等价于强制复制,dd if=/dev/zero of=myfile bs=512K count=1。
tar类似cp操作,但有以下区别:
创建压缩包时,会先删除原有压缩包,再创建一个全新压缩包。
解压时强制复制,如果不能复制,会先删除再进行复制。所以跨类型操作允许,目录和文件双向。