9—混杂命令
一些不好归类的命令
9.1 jot, seq 这些工具用来生成一系列整数, 用户可以指定生成范围.
每个产生出来的整数一般都占一行, 但是可以使用-s选项来改变这种设置.
bash$ seq -s : 5
1:2:3:4:5
jot和seq命令经常用在for循环中.
9.2 getopt
getopt命令将会分析以破折号开头的命令行选项. 这个外部命令与Bash的内建命令getopts作用相同. 通过使用-l标志, getopt可以处理超长(多个字符的)选项, 并且也允许参数重置.
9.3 run-parts
run-parts命令 [1] 将会执行目标目录中所有的脚本, 这些脚本会以ASCII码的循序进行排列. 当然, 这些脚本都需要具有可执行权限.
cron 幽灵进程会调用run-parts来运行/etc/cron.*下的所有脚本.
9.4 yes
yes命令的默认行为是向stdout连续不断的输出字符y, 每个y单独占一行. 可以使用control-c来结束输出. 如果想换一个输出字符的话, 可以使用yes different string, 这样就会连续不断的输出different string到stdout. 那么这样的命令究竟能用来做什么呢? 在命令行或者脚本中, yes的输出可以通过重定向或管道来传递给一些命令, 这些命令的特点是需要用户输入来进行交互. 事实上, 这个命令可以说是expect命令(译者注: 这个命令本书未介绍, 一个自动实现交互的命令)的一个简化版本.
yes | fsck /dev/hda1将会以非交互的形式运行fsck(译者注: 因为需要用户输入的y全由yes命令搞定了)(小心使用!).
yes | rm -r dirname 与 rm -rf dirname 效果相同(小心使用!).
当用yes命令的管道形式来使用一些可能具有潜在危险的系统命令的时候一定要深思熟虑, 比如fsck或fdisk. 可能会产生一些令人意外的副作用.
yes命令也可用来分析变量. 比如:
bash$ yes $BASH_VERSION
3.00.16(1)-release
3.00.16(1)-release
3.00.16(1)-release
3.00.16(1)-release
3.00.16(1)-release
. . .
这个"特性"估计也不会特别有用.
阅读(408) | 评论(0) | 转发(0) |