首页 > 代码库 > linux学习笔记二(I/O重定向,管道)
linux学习笔记二(I/O重定向,管道)
前言:今天学习的是I/O重定向。
目的:帮助复习巩固。
内容:
1.I/O重定向就是改变输入和输出的来源和去向,>代表的是输出重定向 ,<代表的是输入重定向(这两个重定向都是会覆盖掉重定向文件的内容 ,>>表示的追加重定向,没有输入追加重定向。
2.bash有一个开关功能的set,这个可以对一些东西进行开关,自行man。如:set -C是启用禁止对已经存在的文件进行重定向,但是即使是开启这个功能,那么也是可以强制的进行加上>|。set +C就是关闭以上的功能。
3.标准的输入STDIN 0 ,标准输出STDOUT 1 ,标准错误STDERR 2。注意:标准的输入、输出和标准错误不是一个输出流 。
1) 如:ls /varr > /tmp/var.out 这是不能够执行的,提示ls: /varr: No such file or directory。表示标准规的输出流和标准输入流不是一个流。
改进以上方法:ls /varr 2> /tmp/var.out
同理:ls /var 2> /tmp/var.out 虽然能够执行(在屏幕上显示),但是也是不能够重定向到标准的错误到/tmp/var.out
2) 如果:想要错误的就用标准错误,正确就用标准的正确,那么
ls /varr > /tmp/var.out 2> /tmp/var.out(注意这两个文件可以一样也可以不一样)
还有一种方法就是:&>
如: ls /varr &> /tmp/var.out (将输出和错误都定向到一个文件中)。
4.谈谈输入重定向;
对于输入重定向不是每个命令都能用的,cat可以用,因为cat单个命令是要等待输入,tr也可以。
就是说能够在进行输入的指令可以用输入重定向。
例如:cat < /etc/fstab 可以将fstab文件中的内容变为cat的输入部分。
tr ‘a-z‘ ‘A-Z‘ < /etc/fstab
5.虽然没有输入的最佳但是<< 可以表示文档的生成。
cat << END 表示在输入的字符中遇到END则表示结束。
这里有个重要的功能:
cat >> filename << EOF(这个顺序是没有要求的) 表示要对文件filename进行追加内容,并且是遇到EOF则输入结束。
6.谈谈管道:
管道就是可以一个命令得到的结果给另外一个命令使用。
如:echo "hello world" | tr ‘a-z‘ ‘A-Z‘
echo "redhat" | passwd --stdin dongzi
cut -d: -f1 /etc/passwd | sort
注意:tee命令属于一个入口两出口的命令。
如:echo "hello world" | tee /tmp/hello.out
可以显示一次,然后在写入到文件中。
管道的几道练习题:
1)统计usr/bin目录下的文件数;
答案:ls /uer/bin |wc -l
2)取出当前系统上所有用户的shell,要求每种shell只显示一次。
答案:cut -d: -f7 /etc/passwd|sort -u
3)思考:如何显示/var/log目录下的每个文件的内容类型。
答案:file /var/log.
4)取出/etc/inittab文件的第6行。
答案;head -6 /etc/inittab|tail -1
5)取出/etc/passwd 文件中倒数第9个用户的用户名和shell,显示到屏幕上并且保存到/tmp/users文件中;
答案:head -9 /etc/passwd |tail -1 |cut -d: -f1,7|tee /tmp/users
6)显示/etc目录下所有的以pa开头的文件并且统计个数;
答案:ls -d /etc/pa*|wc -l
7)不使用文本编辑器,将alias cls = clear 一行的内容添加到当前的用户.bashrc文件中;
答案:echo "alias cls=clear" >>~/.bashrc
本文出自 “天道酬勤” 博客,谢绝转载!
linux学习笔记二(I/O重定向,管道)