鱼C论坛

 找回密码
 立即注册
查看: 3054|回复: 0

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

[复制链接]
发表于 2017-8-7 22:32:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

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

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 09:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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