数据流重定向和管道命令(bash学习02)

标准输入输出和错误
标准输入(stdin) 是指令数据的输入,代码为0,使用<或者<<,默认是键盘
标准输出(stdout)是指令执行成功返回的结果,代码为1,使用>或者>>,默认由屏幕显示
标准错误输出(stderr)是指令执行失败返回的错误信息,代码为2,使用2>或者2>>,默认是屏幕

< 指定输入的数据媒介来源
1> 将正确的内容 覆盖输出到指定的媒介
1>> 将正确的内容 追加到指定的媒介
2> 将错误信息覆盖输出到指定媒介
2>> 将错误信息追加输出到指定媒介

 默认只能保存正确的

同时分类导出
[[email protected] ~]$ rm -rf success fail result
[[email protected] ~]$ find /root a.txt 1>success 2>fail
[[email protected] ~]$ cat success
/root
a.txt
[[email protected] ~]$ cat fail
find: “/root”: 权限不够

正确错误的均导入文件
[[email protected] ~]$ find /root a.txt >result 2>&1
[[email protected] ~]$ cat result
/root
find: “/root”: 权限不够
a.txt

[[email protected] ~]$ find /root a.txt >result1 2>&1
[[email protected] ~]$ find /root a.txt >result
find: “/root”: 权限不够
[[email protected] ~]$ find /root a.txt &>result2
[[email protected] ~]$

&表示[012]

grep [a-z] -n <a.txt

替换
小写字母替换成大写字母
tr [a-z] [A-Z]<a.txt >a1.txt

管道命令使用
命令通过管道符号|连接
能够接收标准输入(stdin),如tail/more/grep等
能够接收来自于前一个指令的数据成为stdin进行处理 只能处理正确的输出,不能处理错误的输出
ls -8|grep ls
处理不了
grep [-cinv] ‘key‘ filename 支持正则
-c ,计算字符出现的次数
-i,忽略大小写进行查找
-n,输出行号
-v,显示没有该字符的行
[[email protected] ~]# cat log -n
1 php
2 ajax
3 java
4 python
5 nginx mysql
6 GO
7 PHP5
8
[[email protected] ~]# grep ‘php‘ log
php
[[email protected] ~]# grep -n ‘php‘ log
1:php
[[email protected] ~]# grep -ni ‘php‘ log
1:php
7:PHP5
[[email protected] ~]# grep -ci ‘php‘ log
2
[[email protected] ~]# grep -inv ‘php‘ log
2:ajax
3:java
4:python
5:nginx mysql
6:GO
8:
[[email protected] ~]# grep -n [a-z] log
1:php
2:ajax
3:java
4:python
5:nginx mysql
[[email protected] ~]# grep -nc [a-z] log
5
grep -n --color [a-z] log

统计当前登录用户
[[email protected] ~]# w
01:53:08 up 18:15, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root pts/0 192.168.1.101 01:19 0.00s 0.24s 0.13s w
[[email protected] ~]# w|grep -n root
3:root pts/0 192.168.1.101 01:19 0.00s 0.11s 0.00s w
[[email protected] ~]# w|grep -nc root
1
不是root的
[[email protected] ~]# w|grep -v root
01:54:20 up 18:16, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT

sort指令
sort [-fbknrtu] filename
-f 忽略大小写
-b 忽略最前面的空格
-M 以月份英文字母排序
-n 使用数字排序
-r 逆向排序
-t 分隔符标识 默认是tab
-k 以第几列来排序

[[email protected] ~]# ls
ab anaconda-ks.cfg a.php b.php composer.phar install.log install.log.syslog log mysql_listen.sh 公共的 模板 视频 图片 文档 下载 音乐 桌面

[[email protected] ~]# ls|sort
ab
anaconda-ks.cfg
a.php
b.php
composer.phar
install.log
install.log.syslog
log
mysql_listen.sh
[[email protected] ~]# ls|sort -r
mysql_listen.sh
log
install.log.syslog
install.log
composer.phar
b.php
a.php
anaconda-ks.cfg
ab
[[email protected] ~]# ls|sort
ab
anaconda-ks.cfg
a.php
A.php
b.php
B.php
composer.phar
D.php
install.log
install.log.syslog
log
mysql_listen.sh
默认不区分大小写

按照文件大小写来排序
[[email protected] ~]# ls -l|sort -t ‘ ‘ -k 5 -n
总用量 1740
-rw-r--r--. 1 root root 6 10月 16 02:17 1
-rw-r--r--. 1 root root 6 10月 16 02:17 B.php
-rw-r--r--. 1 root root 8 10月 16 01:59 a.php
-rw-r--r--. 1 root root 11 10月 16 02:06 A.php
-rw-r--r--. 1 root root 42 10月 16 01:42 log
-rw-r--r--. 1 root root 140 10月 16 02:02 ab
-rw-r--r--. 1 root root 143 10月 16 01:59 b.php
-rwxrwxrwx. 1 root root 272 1月 27 2016 mysql_listen.sh
-rw-r--r--. 1 root root 1112 10月 16 02:17 D.php
-rw-------. 1 root root 1416 1月 13 2016 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 1月 13 2016 公共的
drwxr-xr-x. 2 root root 4096 1月 13 2016 模板
drwxr-xr-x. 2 root root 4096 1月 13 2016 视频
drwxr-xr-x. 2 root root 4096 1月 13 2016 图片
drwxr-xr-x. 2 root root 4096 1月 13 2016 文档
drwxr-xr-x. 2 root root 4096 1月 13 2016 下载
drwxr-xr-x. 2 root root 4096 1月 13 2016 音乐
drwxr-xr-x. 2 root root 4096 1月 13 2016 桌面
-rw-r--r--. 1 root root 10033 1月 13 2016 install.log.syslog
-rw-r--r--. 1 root root 46328 1月 13 2016 install.log
-rwxr-xr-x. 1 root root 1640731 6月 7 09:40 composer.phar
设置显示方式
export TIME_STYLE=‘+%Y-%m-%d %H:%M:%S‘
[[email protected] ~]# ls -l|sort -k 6
总用量 1740
-rw-r--r--. 1 root root 10033 2016-01-13 17:42:57 install.log.syslog
-rw-r--r--. 1 root root 46328 2016-01-13 17:48:20 install.log
-rw-------. 1 root root 1416 2016-01-13 17:48:28 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 2016-01-13 17:52:58 公共的
drwxr-xr-x. 2 root root 4096 2016-01-13 17:52:58 模板
drwxr-xr-x. 2 root root 4096 2016-01-13 17:52:58 视频
drwxr-xr-x. 2 root root 4096 2016-01-13 17:52:58 图片
drwxr-xr-x. 2 root root 4096 2016-01-13 17:52:58 文档
drwxr-xr-x. 2 root root 4096 2016-01-13 17:52:58 下载
drwxr-xr-x. 2 root root 4096 2016-01-13 17:52:58 音乐
drwxr-xr-x. 2 root root 4096 2016-01-13 17:52:58 桌面
-rwxrwxrwx. 1 root root 272 2016-01-27 05:54:08 mysql_listen.sh
-rwxr-xr-x. 1 root root 1640731 2016-06-07 09:40:58 composer.phar
-rw-r--r--. 1 root root 42 2016-10-16 01:42:05 log
-rw-r--r--. 1 root root 8 2016-10-16 01:59:03 a.php
-rw-r--r--. 1 root root 143 2016-10-16 01:59:45 b.php
-rw-r--r--. 1 root root 140 2016-10-16 02:02:19 ab
-rw-r--r--. 1 root root 11 2016-10-16 02:06:07 A.php
-rw-r--r--. 1 root root 6 2016-10-16 02:17:17 1
-rw-r--r--. 1 root root 6 2016-10-16 02:17:21 B.php
-rw-r--r--. 1 root root 1112 2016-10-16 02:17:30 D.php
wc指令
wc [-lwm] filename 统计功能
-l 统计行
-w 统计词
-m 统计字符
[[email protected] ~]# wc -l log
8 log
[[email protected] ~]# cat log|wc -l
8
[[email protected] ~]# cat log|wc -w
10
[[email protected] ~]# cat log -n
1 php
2 ajax
3 java
4 python
5 nginx mysql
6 GO p erlang
7 PHP5
8
[[email protected] ~]# cat log|wc -m
53
[[email protected] ~]# cat log1|wc -m
12
[[email protected] ~]# cat log1 -n
1 p h p
2 1 2 3

结尾算一个字符

还有 cut/join/paste等

时间: 2024-10-26 07:04:16

数据流重定向和管道命令(bash学习02)的相关文章

谈谈Linux下的数据流重定向和管道命令

一.标准输入.标准输出.错误输出概述 1.标准输入(stdin)是指令数据的输入,代码为0,使用<或者<<,默认是键盘. 2.标准输出(stdout)是指令执行成功返回的结果,代码为1,使用>或者>>,默认在屏幕显示. 3.标准错误输出(stderr)是指令执行失败返回的错误信息,代码为2,使用2>或者2>>,默认是屏幕. 二.数据流重定向的使用      1."<":指定输入的数据媒介来源(tr 'a-z' 'A-Z' &l

Linux06--Shell程序设计02 数据流重定向与管道

包含3种数据流: •标准输入(stdin):代码为0,符号为<或<<; •标准输出(stdout):代码为1,符号为>或>>; •标准错误输出(stderr):代码为2,符号为2>或2>>. •>默认为覆盖文件内容,如果要追加则用>> 将数据从指定的流输入或输出,就称为数据重定向. 管道 •管道命令的界定符号为”|” •管道命令仅会处理stdout,对stderr会忽略 •管道命令必须要能够接收来自前一个命令的数据作为stdin 使用

Linux数据流重定向与管道

数据流重定向简单来说就是把原本应该输出到某处(比如说屏幕)的数据,重定向其输出目的地,到其他的地方(比如文件). linux中的输入与输出: 标准输入(stdin):默认从键盘输入 标准输出(stdout):执行的正常结果信息,默认输出到屏幕 标准错误输出(stderr):执行的错误信息,默认输出到屏幕 那就让我们来体验下这三个鬼东西吧: [[email protected] 08:32 ~]$ ll <-- 标准输出,默认结果输出到屏幕 总用量 24 drwxrwxr-x. 2 fuwh fu

7,文本处理、重定向、管道、bash算术运算、脚本 输入

文本处理类命令:     wc, tr, cut, sort, uniq, 一共 就这 几个, 都 挺简单 的, 不过 非常常用, 1. wc : 这个 是 做 字符 统计 的 命令, wc [选项] [文件]... -l : 统计行数 -c : 统计字节数 -w : 统计单词数(这里 的 单词 指的是 以 空格 分隔 的 字符串) 2. tr : 转换字符 或 删除 字符, 这个 命令 主要 用于 大小写 转换,字符串 替换 或 删除 -d : 表示 删除 字符 串 3. cut : 剪切文本

Linux中&gt;、&gt;&gt;、&lt;、&lt;&lt;重定向及管道命令

1重定向 1.1      重定向符号 >               输出重定向到一个文件或设备 覆盖原来的文件 >!              输出重定向到一个文件或设备 强制覆盖原来的文件 >>             输出重定向到一个文件或设备 追加原来的文件 <               输入重定向到一个程序 1.2标准错误重定向符号 2>             将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件  b-shell 2>>

Linux学习 —bash的I/O重定向和管道

        程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.为实现预期目的而进行操作的一系列语句和指令 也就是说程序=指令+数据,或者数据结构+算法 程序必须能够读入输入然后经过加工来产生结果:程序获取的数据可以是变量.数组.列表.文件等等,程序产生出来的结果可以是变量.数组.列表.文件等等 也就是说,程序都有读入数据和输出数据的要求 当程序不指从哪里输入,输出到哪里,就是用默认的途径进行数据的交换,一般缺省的输入我们称之为标准输入,缺省的输出我们称为

Linux学习日记--基础命令(4)--文本处理,重定向,管道

打开的文件都有一个fd: file descriptor (文件描述符) 标准输入:keyborad, 0        标准输出:monitor, 1        标准错误输出:monitor, 2 I/O重定向:改变标准位置 输出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS            >:覆盖重定向,目标文件中的原有内容会被清除:            >>: 追加重定向,新内容会追加至目标文件尾部: # set

学习bash——数据流重定向

一.概述 1. 数据流 定义:以规定顺序被读取一次的数据序列. 分类:标准输入(stdin).标准输出(stdout)和标准错误输出(stderr). 标准输出:指的是命令执行所回传的正确信息. 标准错误输出:指的是命令执行失败后,所回传的错误信息. 2. 文件描述符 定义:在形式上是一个非负整数.实际上,它是一个索引值,所有打开的文件都通过文件描述符引用.当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符.按照惯例,unix系统shell把文件描述符0与进程的标准输入关联

linux学习(三)输入输出重定向和管道功能、cat命令、more命令

目录 输入输出重定向 输出重定向 管道功能 cat命令 more命令 @(输入输出重定向和管道功能) 输入输出重定向 输入重定向可以让用户将某个文件作为输入设备,输出重定向可以把某个文件作为输出设备,从而使文件更加灵活 输入重定向的符号使"<",执行该命令,"<"后面的文件替代用户从键盘的输入内容 例如将file文件的内容发送到某个邮箱 [[email protected] ~]#mail -s "test mail" [email