首页 > 代码库 > 通过案例学习重定向.tr命令

通过案例学习重定向.tr命令

1.将日历重定向指定文件中

技术分享

解释:当一个大于号的时候会覆盖重定向的文件,因此在工作中要注意此操作,(set -C),可以防止文件被覆盖 ,两个大于号表示追加,不会使目的文件里的内容覆盖。在大于号前面其实是省略了一个数字1,表示标准正确输出,数字2表示 标准错误输出,这里没有演示,有兴趣的同学可以实验。

2.理解>filename 2>&1

技术分享

解释:ls /boot /err 这条命令是显示目录/boot和/err里的内容,由于/err这目录不存在,所以会显示错误提示,这里也就可以达到既显示正确结果也显示错误结果了。 下面对后面命令解释,>/app/all.log 这条命令表示将正确结果重定向到/app/all.log这个文件里,从下面的结果也能看出,2>&1 可以简单的理解为将错误的变成正确的,就像洗钱一样,将黑钱变成白钱,所以查看文件的时候会看到正确和错误的内容。注意>/app/all.log 和2>&1的顺序, (2>/app/all.log 1>&2).(&>/app/al l.log).(>& /app/all.log)也可以达成目的哦。

3.特殊用法(1>&2)

技术分享

解释:首先我们知道我们此刻在root的家目录下,单独使用ls命令可以查看到家目录下的非隐藏文件,1>&2,在这里是将ls的正确显示结果变成错误的结果,在小括号里整体是个错误的结果,所以不会重定向到后面的文件里,但是,在屏幕上也会显示错误的结果。当修改为2>ls.log时,小括号里整体内容是错误的,所以会被重定向到ls.log文件里,而不会在屏幕上显示。因此在屏幕是看不到的,查看ls.log文件可以看到结果.通过此实验可以总结出,错误和正确可以互相转换。

4.通过tr命令转换文件内容

技术分享

解释:tr ‘a-z‘ ‘A-Z‘ 这条命令表示将文件中的所有小写字母转换成大写字母,</app/issue表示将/app/issue里的内容交给tr命令处理,然后处理结果重定向到 /app/issue1里。

拓展:

-c :取代所有不属于第一字符集的字符

-s :把连续重复的字符以单独一个字符表示

-d :删除指定字符

5.计算1+..+100的和

技术分享

解释:seq可以显示某一指定的序列,例如本例中的显示1到100的数字,tr命令将空格变成加号,然后用bc求和。

通过案例学习重定向.tr命令