QQ登录

只需一步,快速开始

搜索
查看: 193|回复: 0

[学习笔记] 认识bash shell5--管道命令(pipe)之split,xargs,减号

[复制链接]
最佳答案
0 
累计签到:70 天
连续签到:4 天
发表于 2017-8-7 22:32:33 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分割命令split:可以将一个大啊、档案,依据档案大小或行数来分割,就可以将大档案分割成小档案了。
split [-b] file PREFIX
-b :后面可接欲分割成的档案大小,可加单位,例如 b, k, m 等;
-l :以行数来进行分割。
PREFIX :代表前导符的意思,可作为分割档案的前导文字。
例如:将700多k的档案分成300k的一个档案:split -b 300k /etc/term term 档名随意取,只要写上前导文字,小档案就会以xxxaa, xxxab, xxxac等方式来建立小档案。
将上面分割的小档案合成一个档案:cat term* >> term
使用ls -al /输出的信息中,没十行记录成一个档案:ls -al / | split -l 10 lsroot

参数代换xargs: x 是加减乘除的乘号,args 则是 arguments (参数)的意思,这个就是在产生某个指令的参数的意思。xargs 可以读入 stdin 的数据,并且以空格符或断行字符作为分辨,将 stdin 的资料分隔成为 arguments 。
xargs [-Open] command
-0 :如果输入的stdin 含有特殊字符,例如 `, \, 空格键等字符时,这个 -0 参
数可以将它还原成一般字符。这个参数可以用于特殊状态!
-e :这个是 EOF (end of file) 的意思。后面可以接一个字符串,当 xargs 分析
到这个字符串时,就会停止继续工作!
-p :在执行每个指令的 argument 时,都会询问使用者的意思;
-n :后面接次数,每次 command 指令执行时,要使用几个参数的意思。
当xargs后面没有接任何的指令时,默认是以echo来进行输出。
例如:将 /etc/passwd 内的第一栏取出,仅取三行,使用 finger 这个指令将,每个账号内容秀出来:cut -d ':' -f 1 /etc/passwd |head -n 3| xargs finger
同上,但是每次执行 finger 时,都要询问使用者是否动作:cut -d ':' -f 1 /etc/passwd |head -n 3| xargs -p finger
将所有的 /etc/passwd 内的账号都以 finger 查阅,但一次仅查阅五个账号:cut -d ':' -f 1 /etc/passwd |head -n 3| xargs -p -n 5 finger
同上,但是当分析到 lp 就结束这串指令:
cut -d':' -f1 /etc/passwd | xargs -p -e 'lp' finger

关于减号-的用途:在管线命令当中,常常会使用到前一个指令的 stdout 作为这次的
stdin , 某些指令需要用到文件名 (例如 tar) 来进行处理时,该 stdin 与 stdout 可以利用减号 "-" 来替代。
例如:tar -cvf - /home | tar -xvf - 将/home 里面的档案给他打包,传送到stdout;经过管线后,将 tar -cvf - /home 传送给后面的 tar -xvf -。后面的这个 - 则是取用前一个指令的 stdout, 因此,我们就不需要使用 file 了!

评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2

查看全部评分

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-10-21 16:42 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表