Linux基础教程重定向/管道

编号   含义              默认

0     标准输入              键盘
1     标准输出(info)     终端
2     错误输出(error)   终端

重定向符号:
> 标准输出(以覆盖的方式),1>
>> 标准追加输出,1>>
2> 错误输出(以覆盖的方式)
2>> 错误追加输出
&> 合并重定向(合并1和2号数据) 1> 2>&1
< 输入重定向

输出重定向 (覆盖,追加)

正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>
[root@localhost ~]# date > date.txt
[root@localhost ~]# date 2> date.txt
[root@localhost ~]# ls /home/ /aaaaaaaaa 1>list.txt 2>error.txt //重定向到不同的位置

正确和错误都输入到相同位置:
[root@localhost ~]# ls /home/ /aaaaaaaaa 1>list.txt 2>&1 //重定向到相同的位置
[root@localhost ~]# ls /home/ /aaaaaaaaa &>list.txt //混合输出
[root@localhost ~]# ls /home/ /aaaaaaaaa &>/dev/null //空设备,即将产生的输出丢掉

输入重定向

例1:
[root@uplooking ~]# grep ‘root’ < /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

例2:
[root@uplooking ~]# dd if=/dev/zero of=/file1.txt bs=1M count=2
参数解释:
bs 一次拿多少数据
count 共几次

[root@uplooking ~]# dd </dev/zero >/file2.txt bs=1M count=2

例3:
[root@client95 test]# cat > /test/file.file < 今天天气不错
> 我觉得也是
> 哦
> UPLOOKING
[root@client95 test]# cat /test/file.file
今天天气不错
我觉得也是

例4:脚本自动配置YUM:
[root@client95 test]# cat /tmp/yum.exe
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/new.repo <<UP
[uplookingyum]
name=uplookingyum
enabled=1
gpgcheck=0
basrurl=ftp://172.16.8.100/centos7u2
UP

执行:
bash /tmp/yum.exe

管道

作用:实现进程间通信
用法:command1 | command2 | command3 | …

如:
[root@localhost ~]# ll /dev/ | less
[root@localhost ~]# ps aux | less

===========================================================
补充常用命令:
sort 排序
-t 指定字段分隔符(默认分割副空格)
-k 指定列
-n 按数字排序
-r 反向排序

cut:
-d 指定分割副(只能一个字符)
-f 截取第几列
-c 按字符截取

如:
cut -c 2-5 //截取每行的2~5个字符
cut -c 2- //截取每行的2到最后
[root@localhost ~]# cut -d: -f 1 /etc/passwd
[root@localhost ~]# head /etc/passwd | cut -d: -f 1-5
[root@localhost ~]# head /etc/passwd | cut -d: -f 1,5
[root@localhost ~]# head /etc/passwd | cut -c 10
[root@localhost ~]# head /etc/passwd | cut -c 1-10
[root@localhost ~]# head /etc/passwd | cut -c 1,10

wc:
-l 统计行数
-c 统计字符
-w 统计单词数(连续的字符串)

awk:
[root@localhost ~]# awk -F: ‘{print $7}’ /etc/passwd //以:为分隔符打印文件中的第7列

rev 左右颠倒
tac 上下颠倒
[root@localhost ~]# cat -n /etc/passwd | head -20 |tail -2 |rev
[root@localhost ~]# cat -n /etc/passwd | head -20 |tail -2 | tac

sort
[root@localhost ~]# sort aa.txt //默认按首字符排序
[root@localhost ~]# sort -n aa.txt //按整个数字排序
[root@localhost ~]# sort -n -u aa.txt //-u 去掉重复行
[root@localhost ~]# sort -n -u -r aa.txt //-r 逆序输出

uniq
[root@localhost ~]# uniq aa.txt //默认去掉连续重复行
[root@localhost ~]# uniq -d aa.txt //显示重复行
[root@localhost ~]# uniq -d -c aa.txt //-c 显示重复次数
=====================================================================

例:将/etc/passwd中的用户按UID大小排序
[root@localhost ~]# sort -t”:” -k3 -n /etc/passwd //以:分隔,将第三列按字数升序
[root@localhost ~]# sort -t”:” -k3 -n /etc/passwd -r //逆序
[root@localhost ~]# sort -t”:” -k3 -n /etc/passwd | head

例:统计当前/etc/passwd中用户使用的shell类型
[root@localhost ~]# cut -d: -f7 /etc/passwd | sort | uniq -c
131 /bin/bash
1 /bin/sync
1 /sbin/halt
63 /sbin/nologin
1 /sbin/shutdown

例:统计出最占CPU的5个进程
[root@tianyun ~]# ps aux –sort=-%cpu | head -6

例: 统计网站的访问情况
[root@localhost ~]# netstat -an |grep :80 |awk -F”:” ‘{print $8}’|sort |uniq -c|sort -n -r
4334 192.168.0.66
1338 192.168.10.11
1482 192.168.10.125
44 192.168.10.183
3035 192.168.10.213
375 192.168.10.35
362 192.168.10.39

例: 显示当前所有IP
[root@localhost ~]# ip addr |grep ‘inet ‘ |awk ‘{print $2}’ |awk -F”/” ‘{print $1}’
[root@localhost ~]# ifconfig|grep ‘inet ‘|awk -F “:|Bcast|Mask” ‘{print $2}’ 注释:指定三种分割副
[root@client95 ~]# ifconfig |grep ‘inet ‘|awk ‘{print $2}’|cut -d ” ” -f1
127.0.0.1
192.168.2.115

例:打印根分区已用空间的百分比(仅打印数字)
[root@localhost ~]# df -hT|grep ‘/$’ |awk ‘{print $6}’|awk -F”%” ‘{print $1}’
[root@localhost ~]# df -hT|grep /$|awk ‘{print $6}’|awk -F% ‘{print $1}’
[root@localhost ~]# df -hT|grep /$|awk -F “[ ][ ]*|%” ‘{print $6}’

例:显示当前打开的所有终端的编号(只要有编号的,不要的问号的!)和该终端所运行命令以及发起用户名和CPU资源消耗
[root@client95 ~]# ps axo tty,user,cpu,command|grep -v ^?
[root@client95 ~]# ps aux|awk ‘{print $7,$1,$3,$11}’|grep -v ^?
[root@client95 ~]# ps aux|awk ‘{print $7,$1,$3,$11}’|grep -v ^?|uniq -c|sort -nr

例:制作别名myip,作用为显示ip地址
[root@localhost ~]# ifconfig eno16777736 | head -2| tail -1 | cut -d’ ‘ -f 10
[root@localhost ~]# ifconfig eno16777736 | grep broadcast| cut -d’ ‘ -f 10
172.16.110.247
[root@localhost ~]# alias myip=”ifconfig eno16777736 |head -2| tail -1 | cut -d’ ‘ -f 10″
[root@localhost ~]# myip
172.16.110.247

例:用命令取出文件属性中的的3个时间(atime,mtime,ctime)
[root@localhost ~]# stat aa.txt
文件:”aa.txt”
大小:4 块:8 IO 块:4096 普通文件
设备:802h/2050d Inode:77530278 硬链接:1
权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2017-05-22 11:43:11.545941923 +0800
最近更改:2017-05-22 11:43:09.819870359 +0800
最近改动:2017-05-22 11:43:09.821870442 +0800
创建时间:-

取出
11:43:11
11:43:09
11:43:09

[root@localhost ~]# stat aa.txt |grep ‘+0800’|cut -d’ ‘ -f2|cut -d’.’ -f1
13:48:17
13:48:16
13:48:16
[root@localhost ~]# stat aa.txt |awk -F’ |[.]’ ‘/+0800/{print $2}’
13:48:17
13:48:16
13:48:16

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容