外部过滤器,程序和命令--混杂命令

来源:互联网 发布:奚梦瑶天涯扒皮知乎 编辑:程序博客网 时间: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结束.

  将会把传递进来的参数字符串用一个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声音文件.

原创粉丝点击