bash扩展
来源:互联网 发布:tomcat连不上数据库 编辑:程序博客网 时间:2024/06/07 10:58
一、bash扩展的类型
在命令执行前,会先对整个命令进行处理或者扩展。扩展共有7种类型,分别是花括号扩展、波浪线扩展、参数和变量扩展、算术扩展、命令替换、单词分割、路径名扩展。当存在多种类型扩展时,这个顺序也是扩展的执行顺序。只有花括号扩展、单词分割、路径名扩展会改变单词的数量。而其他扩展是一一替换。
二、花括号扩展
花括号扩展主要用于生成任意的字符串。其格式是:
前缀{整数..整数}后缀前缀{单个字母..单个字母}后缀前缀{单词,单词,单词,单词...}后缀
对于前面两个命令,还可以添加..整数,作为递增或递减的间隔,默认的间隔是1或-1。正常情况下,该扩展用于创建不存在的文件或者目录。而且花括号扩展是可以嵌套的,前缀后缀是可选的。可以通过echo看扩展情况。
例子:
三、波浪线扩展
这个比较简单,也就是~的使用。经常用来表示当前用户的主目录。如
cd ~/dir
表示切换到当前主目录的dir目录下。
四、参数和变量扩展
通常,通过${parameter}的方式引用变量,获取变量的值。但还有更多的变量扩展,下面word可以是某个变量或者命令替换或者算术扩展或者字符串:
五、算术扩展
算术扩展主要是进行数学运算。格式如下:
$((expression))$[expression]
第二种方法已经过时,不建议使用。expression会经历参数变换、命令替换和引号移除。算术扩展页支持嵌套。基本上C语言里面的操作符都可以使用,优先级大体一致,但要注意幂函数是**。可以使用括号来改变优先级。0开头或者0x(0X)开头来表示一个8进制数或者16进制数。参数扩展可以把$去掉,也就是里面引用的变量的$可以去掉,当名字有对应的变量时会利用变量的值,不存在的变量会用0替代。但是如果加了$,则变量必须存在,否则会出错。另外只能进行整数运算,浮点数不支持。
示例:
注意,在使用有赋值符号的操作符时,把$去掉,否则出错。
六、命令替换
命令替换主要是执行命令,并替换为命令执行的输出结果。有两种格式:
$(command)`command`
其中,第二个是比较旧的格式。在第一个中的字符全部不会特别对待,会被当成命令的一部分。而第二个可以有特殊的符号。
从上文可以发现,当字符串含有多个连续的空格或者tab键时,单词分割会去掉多余的空白。这时如果在引用的命令外加上”“,空白就不会被去掉,而是保持原样。
七、单词分割
在经过其他扩展后,会利用环境变量IFS中的字符对扩展的结果进行分割,从而去掉多余的IFS字符。不会分割双引号里面的字符串。不管IFS是什么,会去掉字符串开头和结尾的空白,然后使用IFS中的任何字符对字符串进行分割。
八、路径名扩展
在单词分割过后,会对每个单词进行扫描。如果有包含*,?和[,则认为是一个模式,会对其进行特殊的解释。要使用这些特殊的字符作为字面字符,可以用\或者引号进行转义,这样就不会进行特殊处理了。匹配这些模式的是已经存在的文件名。注意与花括号扩展的区别,花括号扩展没有模式的概念,不会匹配已经存在的文件名。
我们可以通过echo命令来查看扩展后的内容,需要注意的是这里必须是完全匹配才行。示例
echo [[:upper:]]*
输出当前以大写开头的任意文件或目录。
ls [[:upper:]]*
这时将列出所有大写开头的文件或者大写开头的目录下的所有文件或目录。同时如果用[A-Z]替代[[:upper:]]将会列出所有的子项,这说明[A-Z]代表的不止大写字母,而取决于你本地化设置。
九、引号对扩展的影响
- bash扩展
- bash扩展
- man bash 7 扩展
- Linux bash 扩展
- bash简单命令扩展
- bash 历史扩展
- bash扩展功能总结
- Bash 参数和参数扩展
- bash shell 大括号扩展
- cp 快速备份 bash{} 扩展
- Bash 参数和参数扩展
- bash变量扩展(字符串操作)
- Linux 技巧: Bash 参数和参数扩展
- Linux 技巧: Bash 参数和参数扩展
- Linux 技巧: Bash 参数和参数扩展
- Linux 技巧: Bash 参数和参数扩展
- bash 之命令替换与算术扩展
- 【Bash百宝箱】shell变量及扩展
- java EE开发之Servlet第一课
- C语言常用的一些(慢慢补充)
- Fragment在生命周期中是如何走到onCreateView的(二)
- NYOJ243 - 交换输出
- work bench 建表时PK/NN/ UQ等的含义
- bash扩展
- Note7燃损原因真相大白三星加强安全检查保障未来产品安全
- java学习资料免费下载(持续更新ing)
- CSS3 循环跳跃起伏的竖线(类似于语音助手动画)
- 恢复HDFS中删除的文件
- linux_C_file
- 9.3.5
- UVa 1584 Circular Sequence 【数组和字符串】
- TableLayout