管道命令总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了管道命令总结相关的知识,希望对你有一定的参考价值。

管道命令

概念

         管道命令只会处理stdout,忽略stderr

         管道命令后面接的第一个数据必定是命令,这个命令必须能够接收stdin

选取命令

         作用:取出我们想要的数据

         cut

                   用途:将一行信息的某一段切出来

                   缺点:处理多空格相连的数据比较差

                   cut -d ‘分隔字符‘ -f fields

                            -d               后面接分割字符,与-f一起使用

                            -f                依据-d将一段信息切割成数段,用-f取出第几段

                            例

                                     取出PATH的第五个路径

                                               echo $PATH | cut -d ‘:‘ -f 5

                                     取出PATH的第三个和第五个路径

                                              echo $PATH | cut -d ‘:‘ -f 3,5

                   cut -c 字符范围

                            -c               以字符为单位取出固定字符区间

                            例

                                     取出每一行12个字符之后的所有字符

                                               export|cut -c 12-

                                     取出每一行第12~20之间的所有字符

                                               export|cut -c 12-20

         grep

                   用途:分析一行信息,如果当中有我们需要的信息,就将该行拿出来

                   grep [-acinv] [--color=auto] ‘查找字符串‘ filename

                            a                将binary文件以text文件的方式查找数据

                            c                 计算找到‘查找字符串‘的次数

                            I                 忽略大小写

                            n                输出行号

                            v                 反向选择,即查找没有‘查找字符串‘的那一行

                            --color-auto               将找到的关键字颜色显示

排序命令

         sort

                   用途:依据不同的数据类型来排序

                   sort [-fbMnrtuk] [file or stdin]

                            f                 忽略大小写的差异

                            b                忽略最前面的空格符部分

                            M               以月份的名字来排序

                            n                以纯数字排序

                            r                 反向排序

                            t                 分隔符,默认使用[Tab]分隔

                            u                unique,相同的数据只出现一行代表

                            k                 以那个区间来进行排序

                            例

                                     cat /etc/passwd | sort -t ‘:‘ -k 3

         wc

                   用途:统计多少字、多少行、多少字符

                   wc [-lwm]

                            l        仅列出多少行

                            w      仅列出多少字(英文单字)

                            m      仅列出多少字符

         uniq

                   用途:相同的数据,仅出现一行代表

                   特殊:可以计数

                   uniq [-ic]

                            i                 忽略大小写,等效于sort -fu

                            c                 进行计数

双向重定向

         tee

                   用途:让stdout转存一份到文件内,并将同样的数据继续送到屏幕处理

                   tee [-a] file

                            a                不加a为>到file,加a为>>到file

                            例

                                     ls -l /| tee -a ~/homefile |more

字符转换命令

         tr

                   用途:删除或替换一段信息当中的文字

                   tr [-ds] SET1 ...

                            无参数时进行替换操作

                            d                删除信息当中的SET1

                            s                 重复的SET1只用一个表示

                            例

                                     原本

                                               aab,bbc,ccd,dda

                                              AAB,BBC,CCD,DDA

                                      小写变大写

                                               cat a.log | tr ‘[a-d]‘ ‘[A-D]‘

                                                        AAB,BBC,CCD,DDA

                                                        AAB,BBC,CCD,DDA

                                     小写去重复

                                               cat a.log | tr -s ‘[a-d]‘

                                                        ab,bc,cd,da

                                                        AAB,BBC,CCD,DDA

                                     小写变大写去重复

                                               cat a.log | tr -s ‘[a-d]‘ ‘[A-D]‘

                                                        AB,BC,CD,DA

                                                        AB,BC,CD,DA

         col

                   用途:将[Tab]按键替换为对等的空格键

                   经常用来将man page转存为纯文本文件以方便查阅

                   col [-xb]

                            x                 将[Tab]键转换为对等的空格键

                            b                文字内有/时,仅保留/最后接的那个字符

                            例

                                     cat /etc/man.confg|col -x| cat -A| more

                                     man col | col -b > /root/col.man

         join

                   用途:两个文件当中有相同数据的那一行加在一起

                   注意:两个文件最好事先经过排序(相同数据那一行)

                   join [-ti12] file1 file2

                            t                 指定分隔符号,默认空格符

                            i                  忽略大小写

                            1                指定第一个文件用那个字段来分析

                            2                制定第二个文件用哪个字段来分析

                            例

                                     将两个文件第一个字段相同者整成一行

                                              join -t ‘:‘ /etc/passwd /etc/shadow

                                     使用GID将两个文件整成一行

                                               join -t ‘:‘ -1 4 /etc/passwd -2 3 /etc/shadow

                                              注:结果GID会在第一列,其余列按顺序排列,相同的前几个字段不再出现

         paste

                   用途:将两个文件每一行都粘在一起,[TAB]键隔开,不进行匹配,只复制粘贴

                   paste [-d] file1 file2

                            d                后接分隔字符,默认[TAB]

         expand

                   将[TAB]键转换为空格键,可以自定义一个[TAB]键对应多少个字符

                   expand [-t] file

                            t                 后接数字,默认为8个

         unexpand

                   将空格转换为[Tab]键

                   unexpand [-at] file

                            a                转换所有空格

                            t                 后接数字,默认为8个

                   unexpand [--first-only] file              仅转换开头

切割命令

         spilt

                   将一个大文件依据文件大小或行数来切割成为小文件

                   spilt [-bl] file PREFIX

                            b                后接欲切割的单位文件大小,可跟单位,b,k,m等

                            l                  后接欲切割的单位文件行数

                            PREFIX               代表前导符,表示切割成为的文件名字的前几个字符

                   例

                            cd /tmp ; spilt -b 300k /etc/termcap termcap

                                     得到termcapaa,termcapab,termcapac...

         切割文件的合并

                   cd /tmp ; cat termcap* >> termcapbak

参数代换

     xargs

                   用途:分别通过分割(-i)与分批(-n)行为产生某个命令的参数

                   接收stdin,以指定字符进行分隔,将stdin分成多个arguments

                   主要用于连接两个非管道命令

                   xargs [-0edpni] command

                            0                将stdin中的特殊字符(如`,\等)还原为一般字符

                            e                后接字符串,表示分析到指定字符串的时候,停止分析(end of file)

                            d                指定分割字符,而不是默认的空格符

                            p                执行每个命令,都会询问用户

                            n                指定每次command使用几个参数

                            i                  不使用i只能传递到最后。使用-i后,可以使用{}指定将参数传递到哪,也可以多个

                            例

                                     cut -d ‘:‘ -f 1 /etc/passwd | xargs -p -e ‘lp‘ finger

                                     ls logdir/ | xargs -i mv ./logdir/{} ./logdir/{}.bak

关于减号-的用途

         用来替代stdin 和stdout

         例

                   tar -cvf - /home | tar -xvf -

以上是关于管道命令总结的主要内容,如果未能解决你的问题,请参考以下文章

Linux中可用于管道操作的命令总结

Linux中重定向管道和grep命令总结

Linux中重定向管道和grep命令总结

Linux中重定向管道和grep命令总结

CMD命令总结

CTF下的命令执行漏洞利用及绕过方法总结