外部过滤器,程序和命令--混杂命令
来源:互联网 发布:奚梦瑶天涯扒皮知乎 编辑:程序博客网 时间:2024/06/18 11:06
这个不大引人注意的命令可以创建一个命名管道,一些不好归类的命令.
jot, seq
这些工具用来生成一系列整数, 用户可以指定生成范围.
seq
seq命令用于产生从某个数到另外一个数之间的所有整数.
语法
seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数
选项
-f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同
实例
-f 选项:指定格式
bash$ seq -f "%3g" 9 11 9 10 11
%
后面是数字的位数,默认是%g
,%3g
数字位数不足部分是空格.
bash$ seq -f "str%03g" 9 11str009str010str011
数字位数不足部分是0,%前面制定字符串.
-w选项:指定输出数字同宽
bash$ seq -w 98 101098099100101
不能和-f一起用,输出是同宽的.
-s选项:指定分隔符(默认是回车)
bash$ seq -s "" -f "str%03g" 9 11str009 str010 str011
指定/t做为分隔符号:
bash$ seq -s "`echo -e "\t"`" 9 119 10 11
例:使用seq命令来产生循环参数.
#!/bin/bash# use_seq.sh: 使用seq命令来产生循环参数for a in `seq 100` # or for a in $( seq 100 ) do echo -n "$a "doneecho; echolimit=100for a in `seq $limit` # or for a in $( seq $limit ) do echo -n "$a "doneecho; echoBEGIN=80INTERVAL=5END=100for a in `seq $BEGIN $END`do echo -n "$a "doneecho; echofor a in `seq $BEGIN $INTERVAL $END`do echo -n "$a "doneecho; echoexit 0
一个简单的例子:
#!/bin/bash# touch file: 产生10个连续扩展名的文件,名字分别是file.1,file.2...file.10 COUNT=10PREFIX=filefor filename in `seq $COUNT` do touch $PREFIX.$filenamedoneexit 0
getopt
getopt命令将会分析以破折号开头的命令行选项. 这个外部命令与Bash的内建命令getopts作用相同.
通过使用 -l 标志, getopt可以处理超长(多个字符的)选项, 并且也允许参数重置.
run-parts
run-parts命令将会执行目标目录中所有的脚本, 这些脚本会以ASCII码的循序进行排列.当然, 这些脚本都需要具有可执行权限.
cron 幽灵进程会调用run-parts来运行 /etc/cron.* 下的所有脚本.
格式用法
run-parts [OPTION]... DIRECTORY
主要参数
--test 显示可以运行的脚本名称 --list 列出 符合 命名规范的文件名,注意可能不是可执行的命令或脚本 -v, --verbose 详尽输出模式,包括错误信息 --report 只打印输出. --reverse 字符逆序执行 --exit-on-error 只要命令或脚本执行的返回结果不是0,(一般为错误),就终止run-parts的执行 --lsbsysinit validate filenames based on LSB sysinit specs. --new-session 命令或脚本以新的会话执行,使之不受当前会话结束或异常终止的影响 --regex=PATTERN validate filenames based on POSIX ERE pattern PATTERN. -u, --umask=UMASK 设置 umask 值,默认是 022. -a, --arg=ARGUMENT 传递给脚本参数. -V, --version 显示版本信息 -h, --help 显示帮助信息
yes
yes命令在命令行中输出指定的字符串,直到yes进程被杀死。不带任何参数输入yes命令默认的字符串就是.
语法
yes(参数)
参数
字符串:指定要重复打印的字符串.
实例
bash$ yes Hello World!Hello World!Hello World!Hello World!... 一直重复打印 testline,按Ctrl+C结束.bash$ yes "Hello World!"Hello World!Hello World!Hello World!... 一直重复打印 testline,按Ctrl+C结束.
banner, figlet, toilet
banner
将会把传递进来的参数字符串用一个ASCII字符(默认是’#’)给画出来(就是将多个’#’拼出一副字符的图形), 然后输出到 stdout .
figlet
用大写方式把我们输入的字符串显示在标题栏,显示效果由ASCII字符组成。
toilet
用大写方式把我们输入的字符串显示在标题栏,显示效果由ASCII字符组成。
类似有趣的linux命令,点我 点我
printenv
显示某个特定用户所有的环境变量.
bash$ printenv | grep HOMEHOME=/home/liudezhi
lp
lp和lpr命令将会把文件发送到打印队列中, 并且作为硬拷贝来打印. 这些命令会记录它们名字的起点, 直到行打印机的另一个阶段.
语法
lp(选项)(参数)
选项
-E:与打印服务器连接时强制使用加密; -U:指定连接打印服务器时使用的用户名; -d:指定接收打印任务的目标打印机; -i:指定一个存在的打印任务号; -m:打印完成时发送E-mail; -n:指定打印的份数; -t:指定打印任务的名称; -H:指定打印任务开始的时间; -P:指定需要打印的页码。
参数
文件:需打印的文件.
退出状态
0:所有输入文件成功处理。
>0:没有输出设备可用,或者出现一个错误。
还有一些相关的命令, 比如lpq, 可以用来查看打印队列, 而lprm, 可以从打印队列中删除作业.
详细信息
tee
tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin. 简单的说就是把数据重定向到给定文件和屏幕上.
语法
tee (选项)(参数)
选项
-a:向文件中重定向时使用追加模式; -i:忽略中断(interrupt)信号.
参数
文件:指定输出重定向的文件.
例:在终端打印stdout同时重定向到文件中:
bash$ ls | tee out.txt...bash$ ls... out.txt
bash$ ls | tee out.txt | cat -n1 ...2 ...n ...ls ... out.txt
mkfifo
创建一个命名管道, 并产生一个临时的先进先出的buffer, 用来在两个进程之间传递数据.
典型的应用是一个进程向FIFO中写数据, 另一个进程读出来.
pathchk
pathchk命令用来检查文件中不可移植的部分.
用来检查文件名的有效性. 如果文件名超过了最大允许长度(255个字符), 或者它所在的一个或多个路径搜索不到, 那么就会产生一个错误结果
语法
pathchk(选项)(参数)
选项
-p:检查大多数的POSIX系统;-P:检查空名字和“-”开头的文件; --portability:检查所有的POSIX系统,等同于“-P-p”选项; --help:显示帮助; --wersion:显示版本号。
参数
* 文件:带路经信息的文件
* 后缀:可选参数,指定要去除的文件后缀字符串.
dd
dd命令用于复制文件并对原文件的内容进行转换和格式化处理. dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果. 用的比较多的还是用dd来备份裸设备. 但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便.
语法
dd(选项)
选项
bs=<字节数>:将ibs(输入)与obs(输出)设成指定的字节数; cbs=<字节数>:转换时,每次只转换指定的字节数; conv=<关键字>:指定文件转换的方式; count=<区块数>:仅读取指定的区块数; ibs=<字节数>:每次读取的字节数; obs=<字节数>:每次输出的字节数; of=<文件>:输出到文件; seek=<区块数>:一开始输出时,跳过指定的区块数; skip=<区块数>:一开始读取时,跳过指定的区块数; --help:帮助; --version:显示版本信息
# 将一个文件转换为大写:dd if=$filename conv=ucase > $filename.uppercase# lcase 转换为小写.
例:一个拷贝自身的脚本.
#!/bin/bash# self-copy.shfile_subscript=copydd if=$0 of=$0.$file_subscript 2>/dev/nullexit $?
运行:
bash$ lsself-copy.shbash$ ./self-copy.shbash$ lsself-copy.sh self-copy.sh.copy
od
od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符.
语法
od (选项)(参数)
选项
-a:此参数的效果和同时指定“-ta”参数相同; -A:<字码基数>:选择以何种基数计算字码; -b:此参数的效果和同时指定“-toC”参数相同; -c:此参数的效果和同时指定“-tC”参数相同; -d:此参数的效果和同时指定“-tu2”参数相同; -f:此参数的效果和同时指定“-tfF”参数相同; -h:此参数的效果和同时指定“-tx2”参数相同; -i:此参数的效果和同时指定“-td2”参数相同; -j<字符数目>或--skip-bytes=<字符数目>:略过设置的字符数目; -l:此参数的效果和同时指定“-td4”参数相同; -N<字符数目>或--read-bytes=<字符数目>:到设置的字符树目为止; -o:此参数的效果和同时指定“-to2”参数相同; -s<字符串字符数>或--strings=<字符串字符数>:只显示符合指定的字符数目的字符串; -t<输出格式>或--format=<输出格式>:设置输出格式; -v或--output-duplicates:输出时不省略重复的数据; -w<每列字符数>或--width=<每列字符数>:设置每列的最大字符数; -x:此参数的效果和同时指定“-h”参数相同; --help:在线帮助; --version:显示版本信息.
参数
文件:指定要显示的文件.
实例
bash$ echo abcdef g > tmpbash$ cat tmpabcdef gbash$ od -b tmp # 使用单字节八进制解释进行输出.0000000 141 142 143 144 145 146 040 147 0120000011bash$ od -c tmp # 使用ASCII码进行输出,包括转义字符.0000000 a b c d e f g \n0000011bash$ od -t d1 tmp # 使用单字节十进制进行解释.0000000 97 98 99 100 101 102 32 103 100000011bash$ od -A d -c tmp # 设置地址格式为十进制.0000000 a b c d e f g \n0000009bash$ od -A x -c # 设置地址格式为十六进制000000 a b c d e f g \n000009bash$ od -j 2 -c tmp # 跳过开始的两个字节.0000002 c d e f g \n0000011bash$ od -N 2 -j 2 -c tmp # 跳过开始的两个字节,并且仅输出两个字节.0000002 c d0000004bash$ od -w1 -c tmp # 每次仅输出一个字节.0000000 a0000001 b0000002 c0000003 d0000004 e0000005 f0000006 0000007 g0000010 \n0000011bash$ od -w2 -c tmp # 每次输出两个字节.0000000 a b0000002 c d0000004 e f0000006 g0000010 \n0000011bash$ od -w3 -b tmp # 每行输出3个字节,并使用八进制单字节进行解释.0000000 141 142 143 a b c0000003 144 145 146 d e f0000006 040 147 012 g \n0000011
hexdump
对二进制文件进行 16进制, 8进制, 10进制, 或者ASCII码的查阅动作. 这个命令大体上与上边的od命令的作用相同, 但是远没有od命令有用.
objdump
显示编译后的二进制文件或二进制可执行文件的信息, 以16进制的形式显示, 或者显示反汇编列表(使用 -d 选项).
bash$ objdump -d /bin/ls...Disassembly of section .fini:0000000000413c8c <_fini@@Base>: 413c8c: 48 83 ec 08 sub $0x8,%rsp 413c90: 48 83 c4 08 add $0x8,%rsp 413c94: c3 retq
mcookie
这个命令会产生一个”magic cookie”, 这是一个128-bit(32-字符)的伪随机16进制数字, 这个数字一般都用来作为X server的鉴权”签名”
格式用法
mcookie[options]
主要参数
-f, --file <file> 设定种子文件.-v, --verbose 显示详细运行信息.-V, --version 显示版本信息.-h, --help 显示帮助信息.
random=$(mcookie)
units
这个工具用来在不同的计量单位之间互相转换. 当你在交互模式下正常调用时, 会发现在脚本中units命令也是非常有用的.
m4
m4是一个强大的宏处理过滤器,差不多可以说是一种语言了.
例:使用m4.
#!/bin/bash# m4.sh: 使用m4宏处理器.# 字符串操作.string=abcdA01echo "len($string)" | m4 # 7echo "substr($string,4)" | m4 # A01echo "regexp($string,[0-1][0-1],\&Z)" | m4 # 01Z# 算术操作.echo "incr(22)" | m4 # 23echo "eval(99 / 3)" | m4 # 33exit 0
doexec
doexec命令允许将一个随便的参数列表传递到一个 二进制可执行文件中.
比较特殊的, 甚至可以传递 argv[0] (相当于脚本中的$0), 这样就可以使用不同的名字来调用这个可执行文件, 并且通过不同的调用名字, 还可以让这个可执行文件执行不同的动作. 这也可以说是一种将参数传递到可执行文件中的比较绕圈子的做法.
dialog
dialog工具集提供了一种从脚本中调用交互对话框的方法. dialog更好的变种版本是 –gdialog, Xdialog, 和kdialog – 事实上是调用X-Windows的界面工具集.
sox
sox命令, 也就是” sound e x change”命令, 可以进行声音文件的转换. 事实上, 可执行文件 /usr/bin/play (现在不建议使用)只不过是 sox 的一个shell包装器而已.
sox soundfile.wav soundfile.au#将会把一个WAV文件转换成(Sun音频格式)AU声音文件.
- 外部过滤器,程序和命令--混杂命令
- 外部过滤器,程序和命令--基本命令
- 外部过滤器,程序和命令--复杂命令
- 外部过滤器,程序和命令--通讯命令
- 外部过滤器,程序和命令--时间/日期 命令
- 外部过滤器,程序和命令--文本处理命令
- 外部过滤器,程序和命令--终端控制命令
- 外部过滤器,程序和命令--数学计算命令
- 内部命令和外部命令
- Java调用外部程序命令
- java程序执行外部命令
- MySQL 实现调用外部程序和系统命令
- shall 内部命令 和 外部命令
- shell内建命令和外部命令
- 3. Redhat内部命令和外部命令
- shell的内部命令和外部命令
- Linux内建命令和外部命令
- shell内部命令和外部命令
- 输出最高分数的学生姓名
- 【CUGBACM15级BC第23场 A】hdu 5146 Sequence
- Lua 模拟面向对象
- python下双星号的意义
- MapReduce 的格式输入----NLineInputFormat
- 外部过滤器,程序和命令--混杂命令
- TCPNIOSocket通道
- 【CUGBACM15级BC第23场 B】hdu 5147 Sequence II
- 文件的上传与下载
- python中reshape的负参数
- js中事件绑定,$("body").on("click")与$("").click()区别
- MapReduce 的格式输入----MultipleInputs多个输入
- show()和exec()的区别
- 操作系统:进程管理(概念)