shopt设置参数 glob通配符扩展 alias设置别名 多行单条命令 文件覆盖策略

2015-06-03 21:37:00
admin
原创 3717
摘要:shopt设置参数 glob通配符扩展 alias设置别名 多行单条命令 文件覆盖策略

一、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操作,但有以下区别:

创建压缩包时,会先删除原有压缩包,再创建一个全新压缩包。

解压时强制复制,如果不能复制,会先删除再进行复制。所以跨类型操作允许,目录和文件双向。

发表评论
评论通过审核之后才会显示。