主要内容

1.标准输入输出和错误

2.管道命令和 grep, tr,sort, wc, cut,split,tee,sleep

标准输入输出和错误

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

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

 默认只能保存正确的

同时分类导出

[admin@localhost110 ~]$ rm -rf success fail result
[admin@localhost110 ~]$ find /root a.txt >success >fail
[admin@localhost110 ~]$ cat success
/root
a.txt
[admin@localhost110 ~]$ cat fail
find: “/root”: 权限不够 正确错误的均导入文件
[admin@localhost110 ~]$ find /root a.txt >result >&

2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到a.txt中,最终结果就是标准输出和错误都被重定向到a.txt中

或者写成  find /root a.txt 1>>a.txt  2>a.txt

先写错误,后写正确的 所以 写正确的时候要用追加 

[admin@localhost110 ~]$ cat result
/root
find: “/root”: 权限不够
a.txt [admin@localhost110 ~]$ find /root a.txt >result1 >&
[admin@localhost110 ~]$ find /root a.txt >result
find: “/root”: 权限不够
[admin@localhost110 ~]$ find /root a.txt &>result2

&表示[012]

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

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

ls -al|tr  'a-z' 'A-Z' 或者  ls -al|tr  '[a-z]' '[A-Z]'

管道命令使用

命令通过管道符号|连接
能够接收标准输入(stdin),如tail/more/grep等
能够接收来自于前一个指令的数据成为stdin进行处理 只能处理正确的输出,不能处理错误的输出
ls -8|grep ls
处理不了
grep [-cinv] 'key' filename 支持正则
-c : 计算出现要查找字符的行数(是统计几行含有匹配的字符,并不是出现的次数)

-o :找出所有的要查找字符的匹配,一个1行
-i: 忽略大小写进行查找
-n: 输出行号
-v: 显示没有该字符的行 取反

-s:不显示不存在或无匹配文本的错误信息 忽略错误信息

-r: 递归遍历查找(比如在目录下递归查找文件内容)

-q:静默模式,不输出

[root@localhost110 ~]# cat log -n
php
ajax
java
python
nginx mysql
GO
PHP5 [root@localhost110 ~]# grep 'php' log
php
[root@localhost110 ~]# grep -n 'php' log
:php
[root@localhost110 ~]# grep -ni 'php' log
:php
:PHP5
[root@localhost110 ~]# grep -ci 'php' log [root@localhost110 ~]# grep -inv 'php' log
:ajax
:java
:python
:nginx mysql
:GO
:
[root@localhost110 ~]# grep -n [a-z] log
:php
:ajax
:java
:python
:nginx mysql
[root@localhost110 ~]# grep -nc [a-z] log grep -n --color [a-z] log

统计当前登录用户

[root@localhost110 ~]# w
:: up :, user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 192.168.1.101 : .00s .24s .13s w
[root@localhost110 ~]# w|grep -n root
:root pts/ 192.168.1.101 : .00s .11s .00s w
[root@localhost110 ~]# w|grep -nc root 不是root的
[root@localhost110 ~]# w|grep -v root
:: up :, user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
[root@centos1 ~]# cat .txt
php
123php,php456
php
[root@centos1 ~]# grep -o php .txt
php
php
php
php
[root@bogon sh]# echo |grep [-]

[root@bogon sh]# echo |grep [-] -q
[root@bogon sh]# echo $? [root@bogon sh]# echo abc|grep [-]
[root@bogon sh]# echo $?

目标字符的后n行
-A2 表示 目标字符的后2行也显示出来 A表示after
-B2 表示 目标字符的前2行也显示出来 B表示before
-C2 上下2行

[root@bogon ~]# grep -A2 -n 'root' p.txt
:root:x:::root:/root:/bin/bash
-bin:x:::bin:/bin:/sbin/nologin
-daemon:x:::daemon:/sbin:/sbin/nologin
--
:operator:x:::operator:/root:/sbin/nologin
-games:x:::games:/usr/games:/sbin/nologin
-ftp:x:::FTP User:/var/ftp:/sbin/nologin
[root@bogon ~]# grep -B2 -n 'root' p.txt
:root:x:::root:/root:/bin/bash
--
-halt:x:::halt:/sbin:/sbin/halt
-mail:x:::mail:/var/spool/mail:/sbin/nologin
:operator:x:::operator:/root:/sbin/nologin
[root@bogon ~]# grep -C2 -n 'root' p.txt
:root:x:::root:/root:/bin/bash
-bin:x:::bin:/bin:/sbin/nologin
-daemon:x:::daemon:/sbin:/sbin/nologin
--
-halt:x:::halt:/sbin:/sbin/halt
-mail:x:::mail:/var/spool/mail:/sbin/nologin
:operator:x:::operator:/root:/sbin/nologin
-games:x:::games:/usr/games:/sbin/nologin
-ftp:x:::FTP User:/var/ftp:/sbin/nologin

在目录下遍历查找下面的文件

[root@bogon ~]# grep -r 'php' ./f
./f/t/.txt:php5
./f/t/.txt:4php
./f/t/.txt:js123php
./f/t/.txt:php5
./f/t/.txt:4php
./f/t/.txt:js123php
./f/a.php._mod:php
./f/a.php._mod:php2
./f/a.php._mod:php4

grep中正则符号

*     *前 任意数量个字符
.      匹配单个任意字符(字母,数字,下划线,空格)
?   ?号之前的字符 0个或者1个 匹配时得 grep -E 或者 egrep
+   +1个或者多个 匹配时得 grep -E 或者 egrep
.*   贪婪匹配任意个数量的任意字符
   abc|ef 匹配 abc或者ef
?,+都得egrep 或者grep -E

[root@bogon ~]# cat .txt
root
rt
rut
roooooot
[root@bogon ~]# grep 'ro*t' .txt
root
rt
roooooot 匹配指定个数的
比如匹配含有2个ou的
[root@bogon ~]# cat .txt
rouououoooot
rt
rout
rouout
rouut
[root@bogon ~]# grep 'r\(ou\)\{2\}' .txt
rouououoooot
rouout [root@bogon ~]# cat .txt
rt
rot
root
ro t
[root@bogon ~]# grep 'ro?t' .txt
[root@bogon ~]# grep -E 'ro?t' .txt
rt
rot
[root@bogon ~]# egrep 'ro?t' .txt
rt
rot
[root@bogon ~]# grep 'root|mysql' p.txt
[root@bogon ~]# grep 'root\|mysql' p.txt
root:x:::root:/root:/bin/bash
operator:x:::#operator:/root:/sbin/nologin
mysql:x::::/usr/local/mysql-5.6:/bin/bash
[root@bogon ~]# grep -E 'mysql|root' p.txt
root:x:::root:/root:/bin/bash
operator:x:::#operator:/root:/sbin/nologin
mysql:x::::/usr/local/mysql-5.6:/bin/bash
[root@bogon ~]# egrep -E 'mysql|root' p.txt
root:x:::root:/root:/bin/bash
operator:x:::#operator:/root:/sbin/nologin
mysql:x::::/usr/local/mysql-5.6:/bin/bash

sort指令

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

[root@localhost110 ~]# ls
ab anaconda-ks.cfg a.php b.php composer.phar install.log install.log.syslog log mysql_listen.sh 公共的 模板 视频 图片 文档 下载 音乐 桌面 [root@localhost110 ~]# ls|sort
ab
anaconda-ks.cfg
a.php
b.php
composer.phar
install.log
install.log.syslog
log
mysql_listen.sh
[root@localhost110 ~]# ls|sort -r
mysql_listen.sh
log
install.log.syslog
install.log
composer.phar
b.php
a.php
anaconda-ks.cfg
ab
[root@localhost110 ~]# 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
[root@bogon sh]# cat a.txt [root@bogon sh]# cat a.txt |sort [root@bogon sh]# cat a.txt |sort -n [root@bogon sh]# cat a.txt |sort -nr [root@bogon sh]# cat a.txt |sort -nr|uniq [root@bogon sh]# cat a.txt |sort -nr|uniq -c

默认不区分大小写

按照文件大小写来排序

[root@localhost110 ~]# ls -l|sort -t ' ' -k  -n
总用量
-rw-r--r--. root root 10月 :
-rw-r--r--. root root 10月 : B.php
-rw-r--r--. root root 10月 : a.php
-rw-r--r--. root root 10月 : A.php
-rw-r--r--. root root 10月 : log
-rw-r--r--. root root 10月 : ab
-rw-r--r--. root root 10月 : b.php
-rwxrwxrwx. root root 1月 mysql_listen.sh
-rw-r--r--. root root 10月 : D.php
-rw-------. root root 1月 anaconda-ks.cfg
drwxr-xr-x. root root 1月 公共的
drwxr-xr-x. root root 1月 模板
drwxr-xr-x. root root 1月 视频
drwxr-xr-x. root root 1月 图片
drwxr-xr-x. root root 1月 文档
drwxr-xr-x. root root 1月 下载
drwxr-xr-x. root root 1月 音乐
drwxr-xr-x. root root 1月 桌面
-rw-r--r--. root root 1月 install.log.syslog
-rw-r--r--. root root 1月 install.log
-rwxr-xr-x. root root 6月 : composer.phar

设置显示方式
export TIME_STYLE='+%Y-%m-%d %H:%M:%S'

[root@localhost110 ~]# ls -l|sort -k
总用量
-rw-r--r--. root root -- :: install.log.syslog
-rw-r--r--. root root -- :: install.log
-rw-------. root root -- :: anaconda-ks.cfg
drwxr-xr-x. root root -- :: 公共的
drwxr-xr-x. root root -- :: 模板
drwxr-xr-x. root root -- :: 视频
drwxr-xr-x. root root -- :: 图片
drwxr-xr-x. root root -- :: 文档
drwxr-xr-x. root root -- :: 下载
drwxr-xr-x. root root -- :: 音乐
drwxr-xr-x. root root -- :: 桌面
-rwxrwxrwx. root root -- :: mysql_listen.sh
-rwxr-xr-x. root root -- :: composer.phar
-rw-r--r--. root root -- :: log
-rw-r--r--. root root -- :: a.php
-rw-r--r--. root root -- :: b.php
-rw-r--r--. root root -- :: ab
-rw-r--r--. root root -- :: A.php
-rw-r--r--. root root -- ::
-rw-r--r--. root root -- :: B.php
-rw-r--r--. root root -- :: D.php

wc指令
wc [-lwm] filename 统计功能
-l 统计行
-w 统计词
-m 统计字符

[root@localhost110 ~]# wc -l log
log
[root@localhost110 ~]# cat log|wc -l [root@localhost110 ~]# cat log|wc -w [root@localhost110 ~]# cat log -n
php
ajax
java
python
nginx mysql
GO p erlang
PHP5 [root@localhost110 ~]# cat log|wc -m [root@localhost110 ~]# cat log1|wc -m [root@localhost110 ~]# cat log1 -n
p h p
[root@bogon sh]# cat .txt
a
b c
[root@bogon sh]# wc .txt
.txt
2行,3个单词,6个字符
[root@bogon sh]# cat -A .txt
a$
b c$
[root@bogon sh]# wc -l .txt|cut -d ' ' -f1 取出行数

结尾算一个字符

tee与>

[root@bogon sh]# cat .txt
a
b c
[root@bogon sh]# cat .txt|tee .txt
a
b c
[root@bogon sh]# cat .txt>.txt
[root@bogon sh]# cat .txt
a
b c
[root@bogon sh]# cat .txt
a
b c

tee重定向并输出

> 重定向 但影响正常输出了
tee到的内容 也是只有正确的内容写入

文件分割 split

[root@bogon ~]# seq  

[root@bogon test]# for i in `seq  `;do cat /etc/passwd >>.log;done;
[root@bogon test]# du -sh .log
11M .log
[root@bogon test]# wc -l .log
.log

按照大小和按照行分割

1.按照行分割

split -l  .log
[root@bogon test]# ls |xargs wc -l
.log
xaa
xab
xac
xad
xae
xaf
xag
xah
xai
xaj
xak
xal
xam
xan
xao
xap
xaq
xar
xas
xat
xau
xav
xaw 自定义命名
split -l .log _
[root@bogon test]# ls
.log _aa _ab _ac _ad _ae _af _ag _ah _ai _aj _ak _al _am _an _ao _ap _aq _ar _as _at _au _av _aw
[root@bogon test]# ls _*|xargs -i mv {} {}.txt
[root@bogon test]# ls
.log _ab.txt _ad.txt _af.txt _ah.txt _aj.txt _al.txt _an.txt _ap.txt _ar.txt _at.txt _av.txt
_aa.txt _ac.txt _ae.txt _ag.txt _ai.txt _ak.txt _am.txt _ao.txt _aq.txt _as.txt _au.txt _aw.txt -i 每个参数当一行
按照大小分割
[root@bogon test]# split -b 1M .log
[root@bogon test]# du -sh *
11M .log
1.0M xaa
1.0M xab
1.0M xac
1.0M xad
1.0M xae
1.0M xaf
1.0M xag
1.0M xah
1.0M xai
1.0M xaj
648K xak

字串截取 cut

cut -d ':' -f 1 ./a

cut -d ':' -f 1,3,4 ./a

cut -d ':' -f 1-3 ./a

cut -c 2-5 ./a

cut -c 1 ./a

cut -c 1,3 ./a

[root@bogon ~]# cat a
a:b:c:d:e:f
a1:b1:c1:d1:e1:f1
a2:b2:c2:d2:d2:f2
a3:b3:c3:d3:e3:f3
[root@bogon ~]# cut -d ':' -f ./a
a
a1
a2
a3
[root@bogon ~]# cut -d ':' -f ,, ./a
a:c:d
a1:c1:d1
a2:c2:d2
a3:c3:d3
[root@bogon ~]# cut -d ':' -f - ./a
a:b:c
a1:b1:c1
a2:b2:c2
a3:b3:c3
[root@bogon ~]# cut -c - ./a
:b:c
:b1
:b2
:b3
[root@bogon ~]# cut -c ./a
a
a
a
a
[root@bogon ~]# cut -c , ./a
ab
a:
a:
a:

杀掉所有php的进程

ps -ef|grep php|grep -v grep|cut -c 9-15|xargs kill -9  

sleep 

Ctrl+z (休眠到后台执行) Ctrl+c(杀死)
jobs 查看 任务列表
fg 编号 调到前台
调到后台后执行完毕在jobs里还有
fg到前台 执行完 jobs里才没有
fg 不加编号 优先回复 jobs里是+的任务

[root@bogon sh]# sleep
^Z
[]+ 已停止 sleep
[root@bogon sh]# sleep
^Z
[]+ 已停止 sleep
[root@bogon sh]# jobs
[]- 已停止 sleep
[]+ 已停止 sleep
[root@bogon sh]# fg
sleep

单引号,双引号,反引号

[root@bogon sh]# echo $a
modify_suffix.sh.tar.gz
[root@bogon sh]# b="echo $a"
[root@bogon sh]# echo $b
echo modify_suffix.sh.tar.gz
[root@bogon sh]# b=`echo $a`
[root@bogon sh]# echo $b
modify_suffix.sh.tar.gz

.=source 加载配置文件
. /etc/profile
source /etc/profile

还有 join/paste等

数据流重定向和管道命令, grep, tr,sort, wc, cut,split,tee,sleep(shell 02)的更多相关文章

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

    一.标准输入.标准输出.错误输出概述 1.标准输入(stdin)是指令数据的输入,代码为0,使用<或者<<,默认是键盘. 2.标准输出(stdout)是指令执行成功返回的结果,代码为 ...

  2. linux——(8)数据流重定向、管道命令

    概念一:数据流重定向 数据流分输入流和输出流,还有一个标准错误流,负责管理出错信息,比如一般的命令的输出会输出到屏幕上,我们可以用重定向让他输入到某个文件内. 相关操作: 1,标准输入(stdin): ...

  3. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

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

    包含3种数据流: •标准输入(stdin):代码为0,符号为<或<<; •标准输出(stdout):代码为1,符号为>或>>; •标准错误输出(stderr):代码 ...

  5. Linux数据流重定向与管道

    数据流重定向简单来说就是把原本应该输出到某处(比如说屏幕)的数据,重定向其输出目的地,到其他的地方(比如文件). linux中的输入与输出: 标准输入(stdin):默认从键盘输入 标准输出(stdo ...

  6. 每天学点Linux命令之Linux-Shell中的数据重定向与管道命令

    在Linux shell中, 数据重定向使用 > < 符号,管道命令使用 | 符号链接前后两个命令. 具体区别如下: 数据重定向 1.(>): 左侧应该有标准输出 > 右侧只能 ...

  7. Linux第六节随笔 输入输出重定向 、管道、通配符、wc / grep / tr / sort / cut / which /whereis /locate /find /

    三期第五讲 -高级文件管理1.输入输出重定向 ls -l /dev/stdin -> /proc/self/fd/0 标准输入 设备:键盘 标记:0 ls -l /dev/stdout -> ...

  8. lesson - 4 笔记 /inode / suid / sgid / sbit / chmod /umask / chown / rwx / wc /grep / tr / sort / cut /which / whereis / locate / find / ln /

    一.帮助+基本文件管理+用户管理 1.怎么查看命令帮助 ls --help man ls :查看命令/man 5 file:查看配置文件 二.基本文件管理,通过{查,建,删,改} 四个维度介绍了不同的 ...

  9. linux-12基本命令之 cat,more,head, tail ,tr,od,wc,cut,diff

    1.cat 命令 用于查看纯文本文件(较短),格式:"cat[选项][文件]" 查看文本文件 [root@localhost /]# cat 文件名 cat 参数 参数 作用 -n ...

随机推荐

  1. Navicat Premium 10/12——破解激活

    Navicat Premium 12官方Windows64位百度云 链接:https://pan.baidu.com/s/1hGmDljszQsUoi194CYdfmA 密码:1xff 官方下载链接 ...

  2. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  3. 矩阵螺旋遍历Spiral Matrix,Spiral Matrix2

    SpiralMatrix: Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...

  4. 【Python那些事儿之十】range()和xrange()

    by Harrison Feng in Python 无论是range()还是xrange()都是Python里的内置函数.这个两个内置函数最常用在for循环中.例如: >>> fo ...

  5. 分享知识-快乐自己:都说新的Arraylist 扩容是(1.5倍+1) 看了1.8的源代码发现不是这么回事

    都说新的Arraylist 扩容是(1.5倍+1) 看了1.8的源代码发现不是这么回事 就用下面这段代码在jdk的三个版本运行看了下效果: import java.lang.reflect.Field ...

  6. listView使用小技巧P66--P76

    1.设置分割线高度和颜色 android:divider="@android:color/darker_gray" android:dividerHeight="10dp ...

  7. L141

    nest egg留窝鸡蛋,养老金,储备金first base一垒的位置, <俚>跨出第一步not hold a candle to不能与 ... 相比; 比不上a bone of cont ...

  8. Could not publish to the server.Please assign JRE to the server

    1.错误描述 2.错误原因 由错误提示可知,是Tomcat未绑定JRE,导致报错 3.解决办法 (1)删除新建Tomcat (2)重新新建一个Tomcat,配置好Tomcat路径和JRE路径

  9. WWDC 2017, 让我们看看 iTunesConnect 有了哪些不同

    距离 WWDC 2017 过去已经有 7 天了,小伙伴们是不是已经发现我们的苹果后台和之前的界面有些略微的不同,如果有心的朋友下了 iOS 11 beta 版就会发现设备上的 App Store 界面 ...

  10. Flask中的ORM使用

    前言 ORM拓展 安装 数据库设置 使用 关系 单表操作 建表 应用表结构 CRUD 添加查找操作 更新操作 删除操作 一对多 多对多 总结 前言 最近几天接触了一下Flask,在惊叹于其简洁性的同时 ...