Linux管道技术

管道技术

例:

# 将/etc/passwd以uid排序并展示前10行
cat /etc/passwd|sort -t ':' -nk3|head
[root@localhost ~]# cat /etc/passwd|sort -t ':' -nk3|head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

#统计/etc/passwd的所有shell类型
cat /etc/passwd|cut -d ':' -f7|sort|uniq -c
[root@localhost ~]# cat /etc/passwd|cut -d ':' -f7|sort|uniq -c
      9 /bin/bash
      1 /bin/sync
      1 /sbin/halt
     15 /sbin/nologin
      1 /sbin/shutdown
      
awk -F: '{print $NF}' /etc/passwd |sort|uniq -c
[root@localhost ~]# awk -F: '{print $NF}' /etc/passwd |sort|uniq -c
      9 /bin/bash
      1 /bin/sync
      1 /sbin/halt
     15 /sbin/nologin
      1 /sbin/shutdown

tee

# 分流到文件
ip a|grep 'inet '|tee ip.txt|awk -F'/' '{print $1}'|awk '{print $2}'

# 分流到终端
ip addr|grep 'inet '|tee /dev/pts/0|awk -F'/' '{print $1}'|awk '{print $2}'

img

xargs

将原本没有标准输入的命令,收到xargs的标准输入中,再传递给后面的命令处理

-I 将数据保存在{}之中,后面的命令可以直接调用{}
find /root -name '*.sh'|xargs -I {} cp {} /opt/
find /root -name '*.sh'|xargs -I AAA cp AAA /opt/

img

-n 将前面的数据以列的形式排,指定数字是几,一行就有几个
ls|xargs -n4
1 15 1.rar 1.txt
1.TXT 2.txt a ab
anaconda-ks.cfg b create_file.sh file200.txt
ip.txt test.txt txt wenben

[root@localhost ~]# ls|xargs -n2
1 15
1.rar 1.txt
1.TXT 2.txt
a ab
anaconda-ks.cfg b
create_file.sh file200.txt
ip.txt test.txt
txt wenben

练习题

1.查找/tmp目录下,属主不是root,且文件名不是以f开

头的文件

find /tmp ! -user root -a ! -name "f*" -a ! -type d 

2.查找/var目录下属主为root,切属组为mail的所有文件

find /var -user root -a -group mail
[root@localhost /tmp]# find /var -user root -a -group mail
/var/spool/mail
/var/spool/mail/root

3.查找/var目录下不属于root、oldboy、zls组的所有

文件

find /var ! -group root -a ! -group oldboy -a ! -group zls
[root@localhost /tmp]# find /var ! -group root -a ! -group oldboy -a ! -group zls
/var/lib/polkit-1
/var/lib/postfix/master.lock
/var/log/wtmp
/var/log/btmp
/var/db/sudo/lectured/ljy
/var/db/sudo/lectured/yl
/var/spool/mail
/var/spool/mail/ljy
/var/spool/mail/yl
/var/spool/mail/fff
/var/spool/mail/sjl
/var/spool/mail/xbl
/var/spool/mail/root
/var/spool/mail/oldboy
/var/spool/mail/ljy1
/var/spool/mail/oldboyedu
/var/spool/mail/zls
/var/spool/postfix/maildrop
/var/spool/postfix/private/tlsmgr
/var/spool/postfix/private/rewrite
/var/spool/postfix/private/bounce
/var/spool/postfix/private/defer
/var/spool/postfix/private/trace
/var/spool/postfix/private/verify
/var/spool/postfix/private/proxymap
/var/spool/postfix/private/proxywrite
/var/spool/postfix/private/smtp
/var/spool/postfix/private/relay
/var/spool/postfix/private/error
/var/spool/postfix/private/retry
/var/spool/postfix/private/discard
/var/spool/postfix/private/local
/var/spool/postfix/private/virtual
/var/spool/postfix/private/lmtp
/var/spool/postfix/private/anvil
/var/spool/postfix/private/scache
/var/spool/postfix/public
/var/spool/postfix/public/pickup
/var/spool/postfix/public/cleanup
/var/spool/postfix/public/qmgr
/var/spool/postfix/public/flush
/var/spool/postfix/public/showq

4.查找/var目录下最近一周内其内容修改过,同时属主不

为root,也不是postfix的文件

find /var -user root -a ! -user postfix -mtime -7!

5.查找/etc/下所有大于1M且类型为普通文件的所有文件

find /etc/ -size +1M -a -type f
/etc/udev/hwdb.bin
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/policy/policy.31

6.将/etc中的所有目录(仅目录)复制到/tmp下,目录结

构不变

[root@localhost /tmp]# find /etc/ -type d | xargs -I {} cp -a {} /tmp/
find /etc/ -type d | xargs -I {} mkdir -p /tmp/{}

7.将/etc目录复制到 /var/tmp,/var/tmp/etc的所有

目录权限为777,/var/tmp/etc/目录中所有文件权限为

666

cp -a /etc /var/tmp/

find /var/tmp/etc -type d | xargs -I {} chmod 777 {}

find /var/tmp/etc/ ! -type d | xargs -I {} chmod 666 {}

9.创建touch file{1..10}10个文件,保留file9,其

他一次全部删除

touch file{1..10}

rm -rf file{1..8} && rm -rf file10

find / -type f  -name 'file*.sh' -a ! -name 'file9.sh' |xargs -I {} rm -fr {}

10.解释如下每条命令的含义

mkdir /root/dir1

创建目录dir1在/root下

touch /root/dir1/file{1..10}

创建文件file1到10放在/root/dir1下

find /root/dir1 -type f -name 'file5'

查找/root/dir1下,名字为file5的普通文件

find /root/dir1 ! -name 'file5'

查找/root/dir1下,名字不是file5的其他文件

find /root/dir1 -name 'file5' -o -name 'file9'

查找/root/dir1下,名字为file5或file9的文件

find /root/dir1 -name 'file5' -o -name 'file9' -ls

查找/root/dir1下,名字为file9的文件并以长格式显示的方式打印查找到的内容

find /root/dir1 (-name 'file5' -o -name 'file9' ) -ls

查找/root/dir1下,名字为file5或file9的文件并以长格式显示的方式打印查找到的内容

find /root/dir1 (-name 'file5' -o -name 'file9' ) -exec rm -rvf {} ;

查找/root/dir1下,名字为file5或file9的文件并显示删除过程

find /root/dir1 ! (-name 'file5' -o -name 'file9' ) -exec rm -vf {} ;

查找/root/dir1下,名字不为file5或file9的其他文件并显示是否删除
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇