shell数据流重定向和管道命令

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

标准输入输出和错误

标准输入(stdin) 是指令数据的输入,代码为0,使用<或者<<,默认是键盘

标准输出(stdout)是指令执行成功返回的结果,代码为1,使用>或者>>,默认由屏幕显示

标准错误输出(stderr)是指令执行失败返回的错误信息,代码为2,使用2>或者2>>,默认是屏幕

shell数据流重定向和管道命令

< 指定输入的数据媒介来源

1> 将正确的内容 覆盖输出到指定的媒介

1>> 将正确的内容 追加到指定的媒介

2> 将错误信息覆盖输出到指定媒介

2>> 将错误信息追加输出到指定媒介

shell数据流重定向和管道命令

shell数据流重定向和管道命令

默认只能保存正确的

shell数据流重定向和管道命令

同时分类导出

[admin@localhost110 ~]$ rm -rf success fail result

[admin@localhost110 ~]$ find /root a.txt 1>success 2>fail

[admin@localhost110 ~]$ cat success

/root

a.txt

[admin@localhost110 ~]$ cat fail

find: “/root”: 权限不够

正确错误的均导入文件

[admin@localhost110 ~]$ find /root a.txt >result 2>&1

[admin@localhost110 ~]$ cat result

/root

find: “/root”: 权限不够

a.txt

[admin@localhost110 ~]$ find /root a.txt >result1 2>&1

[admin@localhost110 ~]$ find /root a.txt >result

find: “/root”: 权限不够

[admin@localhost110 ~]$ find /root a.txt &>result2

[admin@localhost110 ~]$

&表示[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,显示没有该字符的行

[root@localhost110 ~]# cat log -n

1 php

2 ajax

3 java

4 python

5 nginx mysql

6 GO

7 PHP5

8

[root@localhost110 ~]# grep 'php' log

php

[root@localhost110 ~]# grep -n 'php' log

1:php

[root@localhost110 ~]# grep -ni 'php' log

1:php

7:PHP5

[root@localhost110 ~]# grep -ci 'php' log

2

[root@localhost110 ~]# grep -inv 'php' log

2:ajax

3:java

4:python

5:nginx mysql

6:GO

8:

[root@localhost110 ~]# grep -n [a-z] log

1:php

2:ajax

3:java

4:python

5:nginx mysql

[root@localhost110 ~]# grep -nc [a-z] log

5

grep -n --color [a-z] log

shell数据流重定向和管道命令

统计当前登录用户

[root@localhost110 ~]# w

01:53:08 up 18:15, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.1.101 01:19 0.00s 0.24s 0.13s w

[root@localhost110 ~]# w|grep -n root

3:root pts/0 192.168.1.101 01:19 0.00s 0.11s 0.00s w

[root@localhost110 ~]# w|grep -nc root

1

不是root的

[root@localhost110 ~]# w|grep -v root

01:54:20 up 18:16, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

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@localhost110 ~]# 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'

[root@localhost110 ~]# 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 统计字符

[root@localhost110 ~]# wc -l log

8 log

[root@localhost110 ~]# cat log|wc -l

8

[root@localhost110 ~]# cat log|wc -w

10

[root@localhost110 ~]# cat log -n

1 php

2 ajax

3 java

4 python

5 nginx mysql

6 GO p erlang

7 PHP5

8

[root@localhost110 ~]# cat log|wc -m

53

[root@localhost110 ~]# cat log1|wc -m

12

[root@localhost110 ~]# cat log1 -n

1 p h p

2 1 2 3

结尾算一个字符

还有 cut/join/paste等

本文永久更新链接地址 http://www.linuxidc.com/Linux/2016-11/137227.htm

 
标签: Shell Linux命令
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 用Xshell设置CentOS密钥登录
    用Xshell设置CentOS密钥登录
    今天带来设置X shell 密钥登录  因为用的中文x shell 所以按照中文设置很简单1.点击工具(Tools)------新建用户密钥生成向导(New User key Wizard)(附图)2.然后出现下图时,记得密钥类型 选择RSA.其实选择DSA ,也能实现,二者其实是不同的算法。(我用的R
    03-08
  • spark-shell报错:Exception in thread "main"
    环境:openSUSE42.2hadoop2.6.0-cdh5.10.0spark1.6.0-cdh5.10.0 按照网上的spark安装教程安装完之后,启动spark-shell,出现如下报错:报错信息:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStreamat org
    02-10
  • Linux 虚拟机使用 xshell 连接 (debian、kali、CentOS)
    Linux 虚拟机使用 xshell 连接 (debian、kali、
    1.首先要确认ip地址,使用ifconfig或者ip addr查看IP地址(一般网卡名是eth0)2.如果没有eth0或者ipv4的地址的话,需要开启网卡1.确保vmware左上角–虚拟机–可移动设备–网络设备–设置中切换网络连接方式 NAT或者桥接模式2.编辑/etc/network/interfaces文件
    02-10
  • Linux Shell 脚本学习第一天: 使用grep 命令,lsusb, ps -ef, 实现树莓派(Debian OS)时检测到依赖的USB设备启动后,启动终端自动执行shell脚本
    Linux Shell 脚本学习第一天: 使用grep 命令,
    1.应用背景:无人监测的设备,常需要设置应用程序开机启动,程序启动前需要保证调用的设备先启动,运行环境先启动。2.test.sh部分源码#!/bin/sh#查看桌面是否启动 whiletrue; doCOUNT=$(ps -ef |grep lxpanel |grep -v "grep" |wc -l)if [ $COUNT -gt 0 ]; th
    02-10
  • Ubuntu 下运行 Shell 脚本时显示 "declare not found" 的问题
    Ubuntu 下运行 Shell 脚本时显示 "declare not
        -------------------------------------------------------------------------------    declare not found 错误(ubuntu里的dash):    #why,#dash:     @2010-Mar-25    -------------------------------------------------------------
    02-10
  • Ubuntu18 Shell脚本出现 $'\r': command not found
    Ubuntu18 Shell脚本出现 $'\r': comm
    出现这种问题一般就是脚本是在win平台下的,所以是属于dos指令,需要安装 dos2unix ,来转换成unix系统下的脚本:sudo apt-get install dos2unix使用方法,假设是对 test.sh 文件进行转换:dos2unix test.sh之后再用bash就一切正常了:
    02-10
  • 使用Xshell链接Linux、kali更换更新源和安装软件及Ubuntu更换镜像源
    使用Xshell链接Linux、kali更换更新源和安装软
    (本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)  一、使用Xshell链接kali系统Xshell:帮助我们去连接各种服务平台,方便管理服务器,链路可以加密处理(ssh/vsftp)1.开启kali中的SSH服务1 service ssh start启动ssh服务
    02-10
  • Linux Shell基础 多个命令中的分号(;)、与(&&)
    概述在 Bash 中,如果需要让多条命令按顺序执行,则有这样方法,如表 1 所示。多命令执行符格 式作 用;命令1 ; 命令2多条命令顺序执行,命令之间没有任何逻辑关系命令1命令2如果命令1正确执行($?=0),则命令2才会执行如果命令1执行不正确($?≠0),则命令2
    02-09
  • Linux 基础知识(一) shell的&&和|| 简单使用
      shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时,表示执行失败。  有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者
    02-09
  • linux shell读取配置文件
      配置文件CoverageInfoFTP_URL=ftp://svn-fb.sicent.com:21/jenkins/Jifei_Repo/OL-2/IDC_Platform/bar_seats_coverage/trunk/2016-04-06.16FTP_USER=jenkinsFTP_PASS=jenkinsSVN_URL=https://js-yuanshengtao.sicent.corp/svn/idc-server/trunkSVN_VER=16
    02-09
点击排行