《管道和重定向》由会员分享,可在线阅读,更多相关《管道和重定向(4页珍藏版)》请在金锄头文库上搜索。
1、管道和重定向:输出重定向(覆盖输出:会覆盖掉原来的内容) rootlocalhost tongpei# cat 21 1234rootlocalhost tongpei# cat abc abcdrootlocalhost tongpei# cat 21 abc rootlocalhost tongpei# cat abc 1234 设置+C或-C (set c禁止对已存在文件使用覆盖重定向) (set +c 关闭上述功能) rootlocalhost io# set C rootlocalhost io# cp 123 /lz1200/ rootlocalhost io# cat /lz12
2、00/123 /lz1200/io/123bash: /lz1200/io/123: cannot overwrite existing file:追加输出(不覆盖输出:在原文件尾部增加新新内容)rootlocalhost tongpei# cat 211234rootlocalhost tongpei# cat abc abcrootlocalhost tongpei# cat 21 abcrootlocalhost tongpei# cat abc abc12342:重定向错误输出(区别于标准的错误输出)标准的错误输出:rootlocalhost tongpei# ls 211 abc l
3、s:211:No such file or directory ls: 无法访问211: 没有那个文件或目录重定向错误输出:rootlocalhost tongpei# ls 211 2 abc 重定向错误输出rootlocalhost tongpei#ls:211:No such file or directory rootlocalhost tongpei# ls 21 2 abc 对正确输出无效21rootlocalhost tongpei# ls 211 2 abc abc 如果文件正确,就按正确的输出,如果文件错误就按错误输出。rootlocalhost tongpei# cat a
4、bcls:211:No such file or directory 错误输出不能改变内容,不能定向2:追加方式&:重定向标准输出或错误输出至同一个文件(所有输出)rootlocalhost io# cat 12312345rootlocalhost io# cat abcChage错误重定向输出:rootlocalhost io# cat 123 & abcrootlocalhost io# cat abcChagecat: 1234: 没有那个文件或目录标准输出:rootlocalhost io# cat 123 & abcrootlocalhost io# cat abcchagecat
5、: 1234: 没有那个文件或目录12345:输入重定向(覆盖输入)rootlocalhost tongpei# cat abcasdrootlocalhost tongpei# tr a-z A-ZASDrootlocalhost tongpei# tr a-z A-Z abc tr:extra operand abc(tr: 额外的操作数 abctr不接受文件作为参数)Try tr -helpfor more information(请尝试执行tr -help来获取更多信息。)rootlocalhost tongpei# tr a-z A-Z abc (加上输入重定向即可)ASD:Here
6、 Document(在此处生成文档,END和EOF同样)rootlocalhost tongpei# cat abc文档内容 END 文档结束符abc 显示文档内容rootlocalhost tongpei# cat abc linux EOFrootlocalhost tongpei# cat abc linuxset:內建命令set -C :禁止对已存在文件使用覆盖重定向rootlocalhost tongpei# set -Crootlocalhost tongpei# cat 21 abc -bash: abc: cannot overwrite existing file :不允许覆
7、盖set +C :关闭上述功能强制覆盖输出,则使用 |:不想关闭这个功能,还想强制覆盖时使用。| :管道:前一个命令的输出,作为后一个命令的输入(从一端传到另一端)命令1|命令2|命令3rootlocalhost tongpei# echo hello worldhello worldrootlocalhost tongpei# echo hello world | tr a-z A-ZHELLO WORLDrootlocalhost tongpei# echo 12345678 |passwd -stdin hiveChanging passwd for user hive. 更改用户 hi
8、ve 的密码 。passwd:all authentication tokens undated successfully.passwd: 所有的身份验证令牌已经成功更新。(linux重要哲学之一:组和小命令完成大任务)把某目录下的文件名变成大写:rootlocalhost tongpei# ls /123/tongpei/ |tr a-z A-Z123AS34123AS34123ASD显示用户中UID最大的一个号rootlocalhost guandao# cut -d: -f3 /etc/passwd | sort -n | tail -165534tee:一个输入两个输出(从标准输入读取
9、数据并且发送至标准输出和文件)保存到文件一份,显示至屏幕一份rootlocalhost tongpei# echo hello world |tee /123/tongpei/abc hello world/是tee出来的,不是echo出来的。rootlocalhost tongpei# cat abc hello world统计并只显示首段rootlocalhost tongpei# wc -l /etc/passwd |cut -d -f143组和命令示例:rootlocalhost tongpei# cat abc hello worlda:b c:d : eferootlocalhos
10、t tongpei# cut -d -f1 /123/tongpei/abc|sort -r |tr a-z A-ZHELLOA:B 以空格为分隔符剪切首段字符,并倒序排列,并把小写字母变成大写。练习:1. 统计/usr/bin目录下的文件个数rootlocalhost bin# ls /usr/bin |wc -l 1288 rootlocalhost bin# ls -l /usr/bin |wc -l 1289 2. 取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示passwd:lz1200:x:5001:5001:LZ1200:/home/lz12
11、00:bin/bash 用户:密码占位符:属主:属组:注释:家目录:shell rootlocalhost lz1200# cut -d: -f7 /etc/passwd |sort -u/bin/bash/bin/sync/sbin/halt/sbin/nologin/sbin/shutdown3. 思考:如何显示/var/log目录下每个文件的内容类型?方法1:file /var/log/*方法2:rootlocalhost log# file ls /var/log4. 取出/etc/inittab文件的第7行:rootlocalhost etc# head -7 /etc/initta
12、b |tail -1# Individual runlevels are started by /etc/init/rc.conf5. 取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕并将其保存至/tmp/users文件中tail -9 /etc/passwd |head -1 |cut -d: -f1,7 |tee/123/tongpei/shell9my12:/sbin/logincat /123/tongpei/shell9 my12:/sbin/login6. 显示/etc目录下所有以pa开头的文件,并统计个数rootlocalhost /# ls -d /etc/pa*/etc/pam.d /etc/pango /etc/passwd /etc/passwd- /etc/passwd.OLDrootlocalhost /# ls -d /etc/pa* |wc -l57. 不使用文本编辑器,将alias cls=clear-行内容添加至当前用户的.bashrc文件中:rootlocalhost /# echo alias cls=clear /.bashrc