Chinaunix首页 | 论坛 | 博客
  • 博客访问: 259949
  • 博文数量: 54
  • 博客积分: 1761
  • 博客等级: 上尉
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-17 23:30
文章分类

全部博文(54)

文章存档

2013年(4)

2012年(7)

2011年(15)

2010年(28)

分类: LINUX

2011-02-21 16:22:18

在shell 中, 大部分外部命令,需要使用man来查看其帮助。除非,这些外部命令不提供man手册,否则man总是能返回你想要得东西。
这点道理相信用过linux或者unix的人都知道。

help
但来一些shell内部命令,使用man 是得不到任何帮助的。man getopts, man set? 这个时候,我们需要依赖help.
例如
help getopts
help set
等等。

xargs
经常用于根据pipe传入的参数来创建命令。
比如,搜索目录下的某些文件,然后执行命令。
find ./ -name *.csv | xargs gzip
不同于
find ./ -name *.csv | gzip
后者是将字符串压缩,但gzip没有这个功能,所有会失败。而前者是每当传入一个文件名时,xargs创建一个gzip adfa.csv这样的名字。
除了这些最基本的应用外,xargs还提供一些而外的参数来提高效率。
-n x
每次后面的命令最多接受x个参数
-ireplace
替换每个后面命令中特定字符串为寻找到的文件名。如果replace为

set
set常用来设置shell环境变量和默认行为。
set -o adfad 设置这个选项
set +o adfad 关闭这个选项
$-里面保存了当前的set值。


gdb
当应用程序以外推出,留下core 文件在/var/tmp/cores时,如何察看这个core文件呢?
找到core文件后,需要确认文件类型
$file tds*
tdsTDB17.10013.8873.core: ELF 64-bit LSB core file AMD x86-64, version 1 (SYSV), SVR4-style, from 'tdsTDB17'
然后需要gdb启动二进制文件并载入core文件。
$gdb  tdsTDB17 tdsTDB17.10013.8873.core
然后在 gdb中,输入bt来获得backtrace


getopts
用于获取命令行输入的参数获取,常结合while使用。
比如
while getopts ":f:d:?h" OPT
第一个: 是指 getopts工作在安静模式下,不会马上报错
在安静模式下,
getopts会区分invalid option错误和miss option argument错误。

invalid option时,varname会被设成?,$OPTARG是出问题的option;

miss option argument时,varname会被设成:,$OPTARG是出问题的option。

如果optstring不以”:“开头,invalid option错误和miss option argument错误都会使

varname被设成?,$OPTARG是出问题的option。



大括号的秘密

大括号? 常用于限制变量被取情况。 例如
$ab='hiro'
如果你想获得hiros
那么$abs显然是不行的,需要通过大括号来限制变量名称的长度。
${ab}s === hiros

另外我们还可以在大括号中作一些替换等行为
  • ${var:-value} 如果var有值了那么就用原本的值,不然用value的值
  • ${var:+value} 如果var有值就用value的值
  • ${var:%pattern} 如果pattern与var后面的部份吻合,传回剩下沒有 吻合部份给var
  • ${var:#pattern} 如果pattern与var前面的部份吻合,传回剩下沒有 吻合部份给var
  • ${var/pattern/substitute} 如果var有pattern吻合就替换成substitute



阅读(2564) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~