(五)linux管道符、IO重定向、网络管理

一、管道符

“|”,竖线

作用:管道是一种通信机制,通常用于进程间的通信。它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
在这里插入图片描述

0 : 标准输入,程序或命令需要外部的某些程序传递相应的参数,才能正常运行

1 :标准输出,程序或命令正确的执行结果,我们就称之为标准输出

2 :标准错误,程序或命令错误的执行结果,我们就称之为标准错误

2、过滤(筛选)功能

基本语法:

# 前一个命令 | 后一个命令

案例:获取/根目录下包含关键字"y"的文件信息

# ls / | grep y
解析:
| :管道符号,作用=>把ls /的正确的执行结果作为参数传递给grep命令
ls / :管道左边的命令
grep y :管道右边的命令

grep命令的基本语法 => grep 关键字 文件名称

案例:检索系统中的已安装文件,只筛选mariadb软件信息

# rpm -qa | grep mariadb
-q :query,查询
-a :all,所有

案例:在系统的进程中进行查找,查找与hadoop相关的进程信息

# ps -ef | grep hadoop
ps -ef :查询系统中所有正在运行的进程

3、特殊功能

通过管道的操作方法来实现less 的等价效果(了解)

例如:源指令是"less xxx.txt",使用管道的话则可以写成:cat xxx.txt | less

# less initial-setup-ks.cfg
更改为管道命令
# cat initial-setup-ks.cfg | less

4、统计功能

回顾:wc命令,word count,文件统计功能

# wc [选项] 文件名称
选项说明:
-l : 统计总行数
-w : word,总单词数
-c : 统计总字节数

案例:统计/根目录下一共有多少个文件

# ls / | wc -l

案例:用户在计算机中有一个配置文件(/etc/passwd),一般情况下,一个用户会占用一行配置,请你使用现学的管道统计当前计算机中一共有多少个用户个信息(一个用户一行)

# cat /etc/passwd | wc -l

5、xargs命令扩展

问题:为什么需要xargs命令?

答:之所以能用到这个命令,关键是由于很多命令不支持 | 管道来传递参数,而日常工作中又有这个必要,所以就有了 xargs 命令。

简单来说,xargs命令就相当于对管道命令进行了一个扩展,让所有命令都支持管道

案例:搜索/etc目录下的所有".conf"结尾的文件信息,然后以详细列表形式显示

# find /etc -name "*.conf" | ls -l

解决方案,在ls命令之前添加一个xargs命令,这样ls命令就支持管道了,可以用于接收前一个命令的执行结果

# find /etc -name "*.conf" | xargs ls -l

二、IO重定向

1、标准输入和输出

程序:指令+数据
读入数据:Input
输出数据:Output
打开的文件都有一个fd: file descriptor (文件描述符)
Linux给程序提供三种 I/O 设备
标准输入(STDIN) -0 默认接受来自终端窗口的输入
标准输出(STDOUT)-1 默认输出到终端窗口
标准错误(STDERR) -2 默认输出到终端窗口

2、I/O重定向redirect

I/O重定向:将默认的输入,输出或错误对应的设备改变,指向新的目标

1、标准输出和错误重定向

STDOUT和STDERR可以被重定向到指定文件,而非默认的当前终端
格式:

命令  操作符号  文件名

支持的操作符号包括:

1> 或 >     把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把标准输出和错误都重定向

>& 和上面功能一样,建议使用上面方式

以上如果文件已存在,文件内容会被覆盖

set  -C 禁止将内容覆盖已有文件,但可追加, 利用 >| 仍可强制覆盖
set  +C 允许覆盖,默认

追加
">> "可以在原有内容基础上,追加内容
把输出和错误重新定向追加到文件

">> "追加标准输出重定向至文件
2>> 追加标准错误重定向至文件

标准输出和错误输出各自定向至不同位置

COMMAND > /path/to/file.out 2> /path/to/error.out

合并标准输出和错误输出为同一个数据流进行重定向

&> 覆盖重定向
&>> 追加重定向

COMMAND > /path/to/file.out 2>&1 (顺序很重要)
COMMAND >> /path/to/file.out 2>&1

合并多个程序
(CMD1;CMD2…) 或者{ CMD1;CMD2;…; }合并多个程序的STDOUT
范例:

[root@centos8 ~]#ls 1> /dev/pts/1
[root@centos8 ~]#ls /data > /dev/pts/1

范例:标准错误重定向

[root@centos8 ~]#rm /data/f1.log 2> /data/all.log

范例:将标准输出和错误都重定向到同一个文件

[root@centos8 ~]#ls /data /xxx > /data/all.log 2>&1
[root@centos8~]#ls /data /xxx 2> /data/all.log 1>&2
[root@centos8 ~]#ls /data /xxx &> /data/all.log
[root@centos8 ~]#ls /data /xxx >& /data/all.log

2、标准输入重定向

从文件中导入STDIN,代替当前终端的输入设备,使用 < 来重定向标准输入
某些命令能够接受从文件中导入的STDIN

1、tr 命令

tr 转换和删除字符

tr [OPTION]… SET1 [SET2]

选项:

-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示,即去重
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
-c –C --complement:取字符集的补集
\NNN character with octal value NNN (1 to 3 octal digits)
\ backslash
\a audible BEL
\b backspace
\f form feed
\n new line
\r return
\t horizontal tab
\v vertical tab
[:alnum:]:字母和数字
[:alpha:]:字母
[:digit:]:数字
[:lower:]:小写字母
[:upper:]:大写字母
[:space:]:空白字符
[:print:]:可打印字符
[:punct:]:标点符号
[:graph:]:图形字符
[:cntrl:]:控制(非打印)字符
[:xdigit:]:十六进制字符

范例:

#该命令会把/etc/issue中的小写字符都转换成大写字符
tr ‘a-z’ ‘A-Z’< /etc/issue
#删除fstab文件中的所有abc中任意字符
tr –d abc < /etc/fstab

范例:

[root@centos8 ~]#df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 910220 0 910220 0% /dev
tmpfs 924732 0 924732 0% /dev/shm
tmpfs 924732 9964 914768 2% /run
tmpfs 924732 0 924732 0% /sys/fs/cgroup
/dev/sda2 104806400 5256556 99549844 6% /
/dev/sda3 52403200 398588 52004612 1% /data
/dev/sda1 999320 131768 798740 15% /boot
tmpfs 184944 16 184928 1% /run/user/42
tmpfs 184944 4 184940 1% /run/user/0
tmpfs 184944 4656 180288 3% /run/user/1000
/dev/sr0 6967726 6967726 0 100% /run/media/wang/CentOS-8-BaseOSx86_64
[root@centos8 ~]#df > df.log
[root@centos8 ~]#tr -s ’ ’ < df.log
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 910220 0 910220 0% /dev
tmpfs 924732 0 924732 0% /dev/shm
tmpfs 924732 9964 914768 2% /run
tmpfs 924732 0 924732 0% /sys/fs/cgroup
/dev/sda2 104806400 5256556 99549844 6% /
/dev/sda3 52403200 398588 52004612 1% /data
/dev/sda1 999320 131768 798740 15% /boot
tmpfs 184944 16 184928 1% /run/user/42
tmpfs 184944 4 184940 1% /run/user/0
tmpfs 184944 4656 180288 3% /run/user/1000
/dev/sr0 6967726 6967726 0 100% /run/media/wang/CentOS-8-BaseOS-x86_64
[root@centos8 ~]#tr -s ’ ’ : < df.log
Filesystem:1K-blocks:Used:Available:Use%:Mounted:on
devtmpfs:910220:0:910220:0%:/dev
tmpfs:924732:0:924732:0%:/dev/shm
tmpfs:924732:9964:914768:2%:/run
tmpfs:924732:0:924732:0%:/sys/fs/cgroup
/dev/sda2:104806400:5256556:99549844:6%:
/dev/sda3:52403200:398588:52004612:1%:/data
/dev/sda1:999320:131768:798740:15%:/boot
tmpfs:184944:16:184928:1%:/run/user/42
tmpfs:184944:4:184940:1%:/run/user/0
tmpfs:184944:4656:180288:3%:/run/user/1000
/dev/sr0:6967726:6967726:0:100%:/run/media/wang/CentOS-8-BaseOS-x86_64

2、标准输入重定向

实现标准输入重定向的符号

COMMAND 0< FILE
COMMAND < FILE

范例:

[root@centos8 ~]#echo 2^3 > bc.log
[root@centos8 ~]#cat bc.log
2^3
[root@centos8 ~]#bc < bc.log
8
[root@centos8 ~]#cat < mail.txt
hello
how old are you
[root@centos8 ~]#cat mail.txt
hello
how old are you
[root@centos8 ~]#cat < mail.txt > mail2.txt
[root@centos8 ~]#cat mail2.txt
hello
how old are you
[root@centos8 ~]#cat mail.txt
hello
how old are you
[root@centos8 ~]#mail -s test2 wang < mail.txt
[root@centos8 ~]#cat > cat.log
line1
line2
line3

3、把多行重定向

使用 “<<终止词” 命令从键盘把多行重导向给STDIN,直到终止词位置之前的所有文本都发送给
STDIN,有时被称为就地文本(here documents)
其中终止词可以是任何一个或多个符号,比如:!,@,$,EOF(End Of File),magedu等,其中EOF
比较常用
范例:

mail -s "Please Call"  admin <<EOF 
> Hi Wang
>        
> Please give me a call when you get in. We may need 
> to do some maintenance on server1. 
>         
> Details when you're on-site
> Zhang
> EOF

三、Linux网络管理

1、获取计算机的网络信息

基本语法:

# ifconfig

Windows => ipconfig Linux => ifconfig

第一步:连接网络

在这里插入图片描述

第二步:使用ifconfig命令,获取计算机的网络信息

# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.1.16  netmask 255.255.255.0  broadcast 10.1.1.255
        inet6 fe80::e472:7b78:c871:8e12  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:48:bf:f9  txqueuelen 1000  (Ethernet)
        RX packets 254  bytes 54837 (53.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 287  bytes 42006 (41.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
解析:inet 10.1.1.16  netmask 255.255.255.0  broadcast 10.1.1.255
inet 10.1.1.16 :代表ens33网卡的IP地址,将来远程连接就是用这个IP
netmask :子网掩码,一般为255.255.255.0
broadcast :广播地址,10.1.1.255

CentOS6 => eth0 , CentOS7 => ens33

ens33 :是默认的网卡,我们获取的IP也要从这个网卡中获取

lo(loop,循环):表示回环网卡,只有一个固定的IP地址,127.0.0.1代表本机

virbr0:虚拟网络接口,因为咱们使用vmware虚拟机安装Centos,所以其会产生virbr0虚拟网络接口

2、与网卡相关的配置文件

Linux系统中,一切皆文件。所以保存网络信息的也是通过一个文件来完成的。

# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="dhcp"
NAME="ens33"
UUID="6c809893-d12c-46af-9987-4c05b2773c91"
DEVICE="ens33"
ONBOOT="yes"

参数解析:
TYPE :网络类型,Ethernet以太网
BOOTPROTO:IP的获取方式,dhcp代表自动获取,static/none代表手工设置
NAME :网卡的名称(名字),ens33
UUID :代表网卡的UUID编号(必须是唯一的)
DEVICE :设备名称
ONBOOT :代表网卡是否随计算机开启启动,yes随计算机开机启动,no代表不启动

3、查询计算机的网络状态

基本语法:

# systemctl  status  network

systemctl = system + control = 系统控制

主要功能:查询计算机网络的状态,网络是否正常连接。

Active : active(正常)或 inactive(dead,网络状态不正常没有连接)

4、systemctl启动/重启/停止网络

# systemctl start network
# systemctl stop network
# systemctl restart network

选项解析:
start :启动
stop :停止
restart :重启
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_43555873

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值