【鸟哥的linux私房菜-学习笔记】Bash shell之管线命令
来源:互联网 发布:mac版ps怎么安装字体 编辑:程序博客网 时间:2024/05/16 17:50
管线命令 (pipe)
例子:
ls -al /etc | less
使用 ls 命令输出后的内容,能够被 less 读取,并且利用 less 的功能,我们能够前后翻动相关的信息。
**管线命令『 | 』仅能处理经由前面一个命令传来的正确信息,也就是 standard output 的信息,对于 stdandard error 并没有直接处理的能力。
管线命令的处理示意图
管线命令主要有两个比较需要注意的地方:
管线命令仅会处理 standard output,对于 standard error output 会予以忽略;管线命令必须要能够接受来自前一个命令的数据成为 standard input 继续处理才行。
撷取命令: cut, grep
cut:主要的用途在于将『同一行里面的数据进行分解』。
grep:分析一行信息, 若当中有我们所需要的信息,就将该行拿出来~
排序命令: sort, wc, uniq
sort:可以依据不同的数据型态来排序,注意语系要统一;
uniq:重复的行只显示一个;
wc:计算行,字数,字符数。
双向重导向: tee
tee:同时将数据流分送到文件去与屏幕 (screen)。
字符转换命令: tr, col, join, paste, expand
tr:用来删除一段信息当中的文字,或者是进行文字信息的替换;
col:可以用来简单的处理将 [tab] 按键取代成为空格键;
join:处理两个文件之间的数据, 而且,主要是在处理『两个文件当中,有 “相同数据” 的那一行,才将他加在一起』
需要特别注意的是,在使用 join 之前,你所需要处理的文件应该要事先经过排序 (sort) 处理;
paste:直接『将两行贴在一起,且中间以 [tab] 键隔开』;
expand:将 [tab] 按键转成空格键;
分割命令: split
它可以将一个大文件,依据文件大小或行数来分割成为若干个小文件。
split [-bl] file PREFIX选项与参数:-b :后面可接欲分割成的文件大小,可加单位,例如 b, k, m 等;-l :以行数来进行分割。PREFIX :代表前导符的意思,可作为分割文件的前导文字。
例子:
/etc/termcap 有七百多K,若想要分成 300K 一个文件:
cd /tmp; split -b 300k /etc/termcap termcap
将上面的三个小文件合成一个文件,档名为 termcapback:
cat termcap* >> termcapback
用数据流重导向就好了!
参数代换: xargs
使用 xargs 的原因是, 很多命令其实并不支持管线命令,因此我们可以透过 xargs 来提供该命令引用 standard input 之用。
减号 - 的用途
在管线命令当中,常常会使用到前一个命令的 stdout 作为这次的 stdin , 某些命令需要用到文件名 (例如 tar) 来进行处理时,该 stdin 与 stdout 可以利用减号 “-” 来替代, 举例来说:
tar -cvf - /home | tar -xvf -
意思是:『我将 /home 里面的文件给他打包,但打包的数据不是纪录到文件,而是传送到 stdout; 经过管线后,将 tar -cvf - /home 传送给后面的 tar -xvf - 』。后面的这个 - 则是取用前一个命令的 stdout, 因此,我们就不需要使用 file 了!
重点回顾
1.由于核心在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我们输入的命令与 Kernel 沟通,好让 Kernel 可以控制硬件来正确无误的工作;
2.学习 shell 的原因主要有:文字接口的 shell 在各大 distribution 都一样;远程管理时文字接口速度较快; shell 是管理 Linux 系统非常重要的一环,因为 Linux 内很多控制都是以 shell 撰写的;
3.系统合法的 shell 均写在 /etc/shells 文件中;
4.用户默认登陆取得的 shell 记录于 /etc/passwd 的最后一个字段;
5.bash 的功能主要有:命令编修能力;命令与文件补全功能;命令别名配置功能;工作控制、前景背景控制;程序化脚本;通配符;
6.type 可以用来找到运行命令为何种类型,亦可用于与 which 相同的功能;
7.变量就是以一组文字或符号等,来取代一些配置或者是一串保留的数据;
8.变量主要有环境变量与自定义变量,或称为全局变量与局部变量;
9.使用 env 与 export 可观察环境变量,其中 export 可以将自定义变量转成环境变量;
10.set 可以观察目前 bash 环境下的所有变量;
11.$? 亦为变量,是前一个命令运行完毕后的回传值。在 Linux 回传值为 0 代表运行成功;
12.locale 可用于观察语系数据;
13.可用 read 让用户由键盘输入变量的值;
14.ulimit 可用以限制用户使用系统的资源情况;
15.bash 的配置文件主要分为 login shell 与 non-login shell。login shell 主要读取 /etc/profile 与 ~/.bash_profile, non-login shell 则仅读取 ~/.bashrc
16.通配符主要有: *, ?, [] 等等
17.数据流重导向透过 >, 2>, < 之类的符号将输出的信息转到其他文件或装置去;
18.连续命令的下达可透过 ; && || 等符号来处理;
19.管线命令的重点是:『管线命令仅会处理 standard output,对于 standard error output 会予以忽略』 『管线命令必须要能够接受来自前一个命令的数据成为 standard input 继续处理才行。』
20.本章介绍的管线命令主要有:cut, grep, sort, wc, uniq, tee, tr, col, join, paste, expand, split, xargs 等。
- 【鸟哥的linux私房菜-学习笔记】Bash shell之管线命令
- 【鸟哥的linux私房菜-学习笔记】Bash shell之数据流重导向
- 鸟哥的 Linux 私房菜 -- 学习 bash shell
- 鸟哥的 Linux 私房菜 -- 学习 bash shell
- 鸟哥的 Linux 私房菜 -- 学习 bash shell
- 【鸟哥的linux私房菜-学习笔记】Bash shell的变量功能及操作环境
- 鸟哥的linux私房菜学习笔记《二十二》bash shell的操作环境
- 鸟哥的私房菜Linux 学习笔记之 Bash语法
- 鸟哥的私房菜:Bash shell(六)-管道命令
- linux鸟哥私房菜学习笔记之三-shell
- 《鸟哥的私房菜》(第二版)第十一章 Bash Shell 简要命令笔记
- 鸟哥的私房菜学习笔记 重要的Bash Shell的操作环境
- 鸟哥的Linux私房菜学习笔记--shell入门
- 鸟哥私房菜学习笔记八 管线命令(Pipe)
- 鸟哥的Linux私房菜之认识Bash Shell(1)
- 鸟哥的 Linux 私房菜第11章-认识与学习 BASH 学习笔记
- linux鸟哥的私房菜读书笔记【管线命令(pipe)】
- 鸟哥的Linux私房菜-----10、学习Bash
- Coursera_Stanford_ML_ex7_K-means and PCA 作业记录
- Codeforces Round #328 (Div. 2) B. The Monster and the Squirrel
- 【BFS】HDOJ Dating with girls(2) 2579
- ThinkPHP3.2.3中典型的ajax获取json数据方法
- codeforces #328 C. The Big Race
- 【鸟哥的linux私房菜-学习笔记】Bash shell之管线命令
- 【疯狂的架构】牛公司组织结构图一览:华为,阿里,腾讯,百度,新浪……
- Android团队
- Objective-c的多态
- android studio中api 23的消息推送机制
- uva 10570——Meeting with Aliens
- malloc问题解决
- JAVA基础2-标识符、关键字、数据类型与运算符
- 2015.11.1