几个shell小技巧

来源:互联网 发布:玻璃碗哪个品牌好 知乎 编辑:程序博客网 时间:2024/04/27 16:10

1. expr 命令

 

由于bash 是功能有限的解释器,所以自身并没有支持太多的算术运算,一切都是字符串。所以如果涉及到算术运算,需要借助其他的工具,比如bc(功能比较强大的小工具),expr 和$(())算术扩展.

 

expr 支持几个常见的算术运算+ ,--, * , /, %(取模),.

 

expr还支持常见的关系运算,比如 = ,!= , >, >= , <, <=:

 

 

题外话:如果要想计算指数,如何做呢?给出两种方案:

 

 

2. $() 扩展和``扩展

这两个扩展,按照我的经验,没有什么本质的区别,都是迫使命令执行,

 

3. 在平时工作中,会遇到要向一些只有root才能有权限进入的目录里放入一些文件,比如/var/www目录里放一些音乐,但又不想破坏文件原有的属性。这时可以使用sudo(我讨厌sudo),或者cp的一个选项 -p

 

 

4.xargs

 

手册页中,对于xargs是这样描述的:

 

       xargs 从 标准 输入 读入 参数. 参数 用 空格(可以 用 双引号  单引号  或
       反斜杠  转意)  或者 回车 隔开.  然后 一次 或者 多次 执行 命令 command (默认 是 /bin/echo), 其 参数 是
       initial-arguments 后面 再 加上 从 标准 输入 读入 的 参数. 标准 输入中 的 空格 被 忽略.

 

再来看看xargs的参数,

   xargs [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]] [-n max-
       args]  [-s  max-chars]  [-P   max-procs]   [--null]   [--eof[=eof-str]]
       [--replace[=replace-str]]   [--max-lines[=max-lines]]   [--interactive]
       [--max-chars=max-chars]  [--verbose]  [--exit]  [--max-procs=max-procs]
       [--max-args=max-args] [--no-run-if-empty] [--version] [--help] [command
       [initial-arguments]]

 

简单的说,xargs 从标准输入得到参数,然后执行command (由于command是可选的,所以如果不提供的话,默认是执行/bin/echo命令)

command参数一方面是标准输入,另一方面是command位置提供.