1 | ls -l /tmp > /tmp/test.text |
ls -l /tmp 所显示的数据已经被重新导向到 /tmp/test.text文件中了.但是
- 该文件 (本例中是 /tmp/test.text) 若不存在,系统会自动的将他建立起来,但是
- 当这个文件存在的时候,那么系统就会先将这个文件内容清空,然后再将数据写入!
- 也就是若以 > 输出到一个已存在的文件中,那个文件就会被覆盖掉
但是>>则不会覆盖原内容,而是以累加的方式也就是追加的形式。
1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上;
1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;
2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上;
2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上;
『 1>> 』以及『 2>> 』中间是没有空格的
1 | 承范例二,将 stdout 与 stderr 分存到不同的文件去 |
/dev/null 垃圾桶黑洞装置与特殊写法
1 | 将错误的数据丢弃,屏幕上显示正确的数据 |
1 | 将指令的数据全部写入名为 list 的文件中 |
standard input : < 与 <<
1 | //用 stdin 取代键盘的输入以建立新文件的简单流程 |
管线命令 (pipe)
每个管线后面接的第一个数据必定是『指令』 ,而且这个指令必须要能够接受 standard input 的数据才行
撷取命令: cut, grep
cut
1 | $ cut -d'分隔字符' -f fields <==用于有特定分隔字符 |
grep
1 | $ grep [-acinv] [--color=auto] '搜寻字符串' filename |
排序命令: sort, wc, uniq
sort
1 | $ sort [-fbMnrtuk] [file or stdin] |
uniq
1 | $ uniq [-ic] |
wc
1 | $ wc [-lwm] |
tee(双向重定向)
1 | $ tee [-a] file |
字符转换命令: tr, col, join, paste, expand
tr
1 | $ tr [-ds] SET1 ... |
col
1 | $ col [-xb] |
join
1 | $ join [-ti12] file1 file2 |
paste
这个 paste 就要比 join 简单多了!相对于 join 必须要比对两个文件的数据相关性, paste 就直接
『将两行贴在一起,且中间以 [tab] 键隔开』而已!简单的使用方法。
1 | $ paste [-d] file1 file2 |
expand
这玩意儿就是在将 [tab] 按键转成空格键
1 | $ expand [-t] file |
分区命令: split
1 | $ split [-bl] file PREFIX |
参数代换: xargs
1 | $ xargs [-0epn] command |
关于减号 - 的用途
在管线命令当中,常常会使用到前一个指令的 stdout 作为这次的stdin,某些指令需要用到文件名 (例如 tar) 来进行处理时.该 stdin 与 stdout 可以利用减号 “-“来替代.
1 | # mkdir /tmp/homeback |
