Linux基础知识之网络配置

  1. 基本网络配置:
        将Linux主机接入到网络,需要配置网路相关设置。
            IP/NETMASK:本地通信
            路由(网关):跨网络通信
            DNS服务器地址:基于主机名的通信
                主DNS服务器
                次DNS服务器
                第三DNS服务器
    2.网络配置方式:
    (1)静态指定:
           ①命令:
               CentOS 5 6 7 都可用:
                   ifcfg家族:
                       ifconfig:配置IP,NETMASK  
                       route:路由
                       netstat:状态及统计数据查看
                   iproute2家族:
                       ip OBJECT:
                           addr:地址和掩码
                           link:接口
                           route:路由
                       ss:查看状态和统计数据,性能比netstat 好很多
               CentOS 7专属
                   nm家族:
                       nmcli:命令行工具
                       nmtui:图形界面工具
                   注意:
                        (1)DNS服务器指定
                               配置文件:/etc/resolv.conf
                        (2)本地主机名配置
                               hostname  
                               配置文件:/etc/sysconfig/network
                               CentOS7:hostnamectl
           ②配置文件:
               RedHat及其相关发行版:
                   /etc/sysconfig/network-scripts/ifcfg-*
                   
    (2)动态分配:依赖于本地网络中的DHCP服务
                   DHCP: Dynamic Host Configuration Protocol
    3.网络接口命名方式:
        传统命名:CentOS 5 6 7
               以太网:eth[0,1,2,…]
               ppp :ppp[0,1,2,…]
        可预测命名方案(CentOS 7 )
            支持多种不同的命名机制:
                   firmware,拓扑结构
                   (1)如果firmware或BIOS为主板上面集成的设备提供的索引信息可用,则根据此索引进行命名:如eno1,eno2
                   (2)如果firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1,ens2
                   (3)如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0,…              
                   (4)如果用户显式定义,也可以根据MAC地址命名,例如enx122161ab2e10,…
                       上述均不可用,则使用传统命名方式命名;
                       命名格式的组成:
                           en:Ethernet
                           wl:wlan      
                           ww:wwan
                       名称类型:
                           o<index>:集成设备的设备索引号
                           s<slot>:扩展槽的索引号
                           x<MAC>:基于MAC地址的命名
                           p<bus>s<slot>: 基于总线级槽的拓扑结构进行命名;                            
    4.ifconfig 命令
               ifconfig [interface]
                       # ifconfig -a :显示所有接口,包括inactive状态的接口
                       # ifconfig IFACE [up|down]
               ifconfig interface [aftype] options | address …
                       # ifconfig IFACE IP/mask [up]
                             #ifconfig eth1 192.168.12.12/24 [up]
                       # ifconfig IFACE IP netmask MASK
                             #ifconfig eth1 192.168.12.13 netmask 255.255.255.0 [up]
               注意:立即送往内核中的TCP/IP协议栈,并生效,远程连接的终端会立即断掉。
               启用混杂模式:[-]promisc  
                       #ifconfig eth1 [-]promisc    
               ifconfig管理IPv6的地址:
                       添加 #ifconfig add addr(网络地址)/prefixlen(掩码长度)
                       删除 #ifconfig del addr(网络地址)/prefixlen(掩码长度)
    5.route命令:路由查看及管理
           路由条目类型:
               主机路由:目标地址为单个IP
               网络路由:目标地址为IP网络
               默认路由:目标为任意主机,0.0.0.0/0.0.0.0
           (1)查看当前系统的路由表:
                   route -n
                   blob.png  
                    Destination:目标路由的ip地址
                    Gateway:目标路由的网关地址
                    Genmask:目标路由的子网掩码
                    Flags:代表现在的状态(U代表的是up启用,G代表的它现在是一个网关)
                    Iface:代表的是本机的哪块网卡向外连接路由的,哪块网卡发送出去
           (2)添加路由表:
                   route add
                   route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]      
                   gw:代表的是下一跳地址
                   网关和本地的网络地址在同一个网段之内。
               添加路由表实例:
                   a.目标:192.168.1.3 网关:172.16.0.1
                       # route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
                   b.目标:192.168.0.0  网关:172.16.0.1
                       # route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
                       # route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
                   c.默认路由,网关:172.16.0.1
                       # route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
                       # route add default gw 172.16.0.1
             (3)删除路由表:
                   route del
                   route del [-net|-host] target [gw Gw] [netmask Nm] [dev] If]
               删除路由表实例:            
                   a.目标:192.168.1.3 网关:172.16.0.1
                       # route del -host 192.168.1.3
                   b.目标:192.168.0.0  网关:172.16.0.1
                       # route del -net 192.168.0.0 netmask 255.255.255.0
                   c.删除默认路由:
                       #route del default
    6.netstat命令:显示网络连接
           网路中每当建立一个连接时,都会生成一个套接字服务(socket)进行远程连接。
           netstat – Print network connections, routing tables, interface statistics, masquerade connections, and multicast membership
           (1)netstat -rn :以数字格式显示内核路由表(相当于使用route -n)
                file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/2.pngblob.png                   

            Destination:目标路由的ip地址
               Gateway:目标路由的网关地址
               Genmask:目标路由的子网掩码
               Flags:代表现在的状态(U代表的是up启用,G代表的它现在是一个网关)
               Iface:代表的是本机的哪块网卡向外连接路由的,哪块网卡发送出去
       (2)netstat命令详解:
               -t: tcp协议相关:面向连接的协议:通信开始之前,要建立一个虚链路;通信完成后还有拆除连接;
               -u: udp协议相关;无连接的协议;直接发送数据报文;
                       <应用层上面的协议一般式通过TCP或者UDP协议实现的,或者裸套接字实现的>
               -w: raw socket 相关(裸套接字)
               -l:  处于监听状态的连接,服务程序一般式监听状态
               -a:  所有状态的连接;
               -n:  以数字显示IP和端口;
               -e :扩展格式;
               -p:  显示相关进程及PID
                       netstat -lp:显示处于监听状态程序的进程管理和PID
               ※netstat常用组合:
                              Proto:协议类型
                              Recv-Q:接收队列长度(队列长度代表的是队列中请求数量的个数)
                              Send-Q:发送队列长度
                              Local Address:本机地址
                              Foreign Address: 远程地址(使用哪个地址和端口连接进来的(地址:端口))
                              State:现在的连接处于一个什么样的状态(FSM)
                                       LISTEN:通常用在服务的监听part,使用"-l"参数进行查阅
                                       ESTABLISHED:已经建立连接的状态
                                       SYN-SENT:发出主动连接(SYN标志)的连接数据包
                                       SYN_RECV:接收到一个要求连接的主动连接数据包
                                       FIN_WAIT1:该套接字服务(socket)已中断,该连接正在断线中
                                       FIN_WAIT2:该连接已经挂断,但正在等待对方主机响应断线确认的数据包。
                                       TIME_WAIT:该连接已经挂断,但socket还在网络上面等待
                      netstat  -tan:以数字形式显示tcp协议连接的所有IP和端口
                      blob.png     file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/3.png
                      netstat  -uan:以数字形式显示udp协议连接的所有IP和端口
                      blob.png     file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/4.png
                      netstat  -tnl:以数字形式显示tcp协议监听的所有IP和端口
                      netstat  -unl:以数字形式显示udp议监听的所有IP和端口(UDP虽然处于监听状态,但是在state下面不会显示LISTEN状态)
       (3)显示接口统计数据:
           netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p] [–numeric|-n]
               a.所有接口:# netstat -i (显示所有网卡接口的统计数据)
                   file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/5.png  
               b.指定接口:# netstat -IIFACE(netstat -Ieno16777736) (显示指定网卡的接口的统计数据)
                   file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/6.png
7.启用和关闭端口:ifup ifdown
       该命令会读取:/etc/sysconfig/network-scripts/ifcfg-*(eth0 eth1 eno1677736等网卡的配置文件)
       #ifup eth1
       #ifdown eth2
8.主机名知识:
   (1)配置网络主机名:
       CentOS6.x:主机名配置文件的路径:/etc/sysconfig/network
       blob.png    file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/7.png
       CentOS7.x:主机名配置文件的路径:/etc/hostname
       blob.png    file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/8.png
           默认是没有这个文件的,通过DNS反向解析获取主机名,主机名默认为:    localhost.localdomain
   (2)查看主机名信息:
           hostname(CentOS6.x CentOS7.x通用的命令)
           hostnamectl status(CentOS7.x的专用命令,查看更加详细的主机信息)
            blob.png file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/9.png
   (3)设置主机名:
               a.CentOS6.x
                       hostname 主机名:暂时生效,重启机器之后就会失效
                       /etc/sysconfig/network:修改配置文件的设置不会立即生效,但会一直有效,重读(source/.)就会生效。
               b.CentOS7.x        
                       hostnamectl set-hostname 主机名:立即生效
                       CentOS7.x一般情况下不用修改配置文件,使用hostnamectl set-hostname进行修改主机名。
   (4)配置DNS服务器指向:
       DNS配置文件的位置: /etc/resolv.conf
               nameserver DNS_SERVER_IP  
              file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/10.png blob.png  
       DNS服务器知识:
           DNS服务配置需要指明 nameserver 10.1.0.1 (DNS的服务地址一定是使用IP去配置的,不要使用路径名)
           Linux系统最多识别三个DNS服务
           DNS服务器解析的时候,先解析本地的/ets/hosts配置文件,后解析DNS服务器
       DNS服务配置测试实例:
           file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/11.pngblob.png
               解释:当时开始ping www.sjsir.cn 因为本地的10.1.252.234的CentOS6.8系统没有去连接互联网,所以无法识别www.sjsir.cn的网站,我们在/etc/hosts的配置文件中,添加名称地址解析 10.1.1.100 www.sjsir.cn sjsir.cn 当继续ping www.sjsir.cn 或者ping sjsir.cn 都会自动解析到10.1.1.100这个IP地址。发现/etc/hosts文件已经生效。
               测试DNS服务器:
                       ①dig -t A FQDN
                     dig -t A www.sjsir.cn (以主机名为www.sjsir.cn的个人网站来说)
                   ※使用dig解析的时候是通过解析网络中的DNS服务器得到真正的对应ip,www.sjsir.cn对应的主机ip为123.206.51.70,而不会去读取/etc/hosts文件
                    file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/12.pngblob.png
                       ②dig -x IP 将网络IP转化为主机名,但是互联网上的主机名(域名)一般不支持反向解析,只可从主机名解析成IP,不支持IP解析成主机名
9.iproute2家族:
   (1)ip命令:配置Linux网络属性
       ip – show / manipulate routing, devices, policy routing and tunnels
           ip [ OPTIONS ] OBJECT { COMMAND | help }
           ip OBJECT : { link | addr | route }
                   ①ip link – network device configuration(网络设备配置)
                   a.ip link set dev IFACE:可设置属性
                       ip liink set [dev] name
                           up/down:是否启用该网卡 ip link set eth1 up/down
                           multicast on/off:启用或者禁用多播功能
                           name NAME:重命名网络接口名称(重命名网络接口时应该提前将网口禁用(down),修改完成之后再启用(up))
                           mtu NUMBER:设置MTU(以太网接口)的大小,默认为1500
                           netns PID:ns为namespace,用于将接口移动到指定的网络名称空间
                   b.ip link show [dev IFACE] :查看的链接属性,看二层设备的相关属性,和IP地址的相关属性无关(ip link show<—>ip link list)
                           [up] :仅显示处于激活状态的接口
                   c.ip link help:显示简要的使用帮助
                   ②ip netns:ip -manage network namespace
                       ip netns list:列出所有的netns
                       ip netns add NAME:创建指定的netns
                       ip netns del NAME:删除指定的netns
                       ip netns exec NAME COMMAND:在指定的netns中运行命令
                   ③ip address – protocol address management
                       ip address add :添加新的ip address
                           ip addr add IFADDR dev IFACE:可以为同一网卡添加多个IP地址,但是在同一网段内的网卡需要区分主次网卡等。
                                    ip addr add 10.1.100.100/8 dev eth1
                                   ※注意:在已有的网卡添加IP地址时,添加后的地址分区主次等地址,ifconfig命令默认显示eth1网卡添加的第一个地址,但是对eth1:0网卡指明卷标之后的网卡,也会在ifconfig中显示,即使eth1:0在 ip addr show显示为次网卡,也回显示在ifconfig中。
                           可以省略的选项:
                                   ip addr add label NAME:为额外添加的地址指明接口别名
                                        ip addr add 10.1.100.100/8 dev eth1 label eth1:0
                                   ip addr add broadcast ADDRESS:广播地址,会根据IP和NETMASK自动计算得到,是正确的广播地址。
                                   ip addr add scope {global|link|host}:指明作用域
                                              global:  全局可用;
                                              link:  仅链接可用;
                                              host:  本机可用;                              
                       ip address delete:删除原有的ip address   用法相同于ip address add
                           ip addr delete IFADDR dev IFACE
                               ip addr delete 10.1.1.100/8 dev eth1                                
                       ip address show:查看系统上面的ip address
                           [IFACE]:显示系统指定IFACE的接口的详情
                       ip address flush :清空所有的ip address
                   ④ip route – routing table management
                       ip route add – add new route
                               ip route add TARGET via GW dev IFACE src SOURCE_IP
                                   TARGET代表的是目标路由
                                    GW代表下一跳的路由
                                    IFACE代表的是指定的哪张网卡
                                    SOURCE_IP代表的是本地网卡的原地址
                                  #ip route default via GW dev IFACE 添加默认路由
                       ip route change – change route 改变路由和添加路由的使用格式相似
                       ip route replace – change or add new one 和添加路由的使用格式相似
                       ip route delete – delete route 删除路由
                           ip route del TYPE-PRIFIX
                               #ip route del 192.168.10.1/24 :删除到192.168.10.1的路由条目
                               ※:当一个条目上面有多个默认路由时,需要制定删除的路由的地址
                       ip route show – list routes 显示路由

                       ip route flush – flush routing tables
                       ip route get-get a single route
                               #ip route get 192.168.10.1/24 :默认到192.168.10.1的详细信息
10.网络路由实战:
    ①为网卡eth1添加两个指定的ip地址:
       ip addr add 10.1.100.100/8 dev eth1
       ip addr add 10.1.100.200/8 dev eth1
       ip addr list dev eth1
       file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/13.pngblob.png
    ② 配置路由,要想到达172.16.100.200需要经由10.1.100.100
       ip route add 172.16.100.200/16 via 10.1.100.100 dev eth1
    ③查看配置完的ip路由
       ip route list (ip route list dev eth1)
       file://C:\Users\sjsir\AppData\Local\Temp\ct_tmp/14.pngblob.png
       ※默认未指出src,即自动选择10.1.100.200或者10.1.100.100中的任意一个        
11.CentOS7上面采用传统命名方式:
   (1)编辑/etc/default/grup配置文件:GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
       或修改/boot/grub2/grub.cfg
   (2)为grub2生成其配置文件
       grub2-mkconfig -o /etc/grub2.cfg
   (3)重启系统      
   (4)修改网卡的配置文件
       cd /etc/sysconfig/network-scripts/
       mv ifcfg-eno16777736 ifcfg-eth0
       修改里面的的:
           DEVICE=eth0
           name=eth0
12.ss命令:
   ss和netstat的命令区别:
   netstat 通过遍历proc 来获取socket 信息
   ss 使用netlink 与内核tcp_diag模块通信获取socket 信息。
   格式:ss [OPTION]… [FILTER]      
       选项:
           -t: TCP协议相关的连接
           -u: UPD协议相关的连接
           -w:  裸套接字相关
           -l: 监听状态的连接
           -a:  所有状态的链接
           -n:  数字格式
           -p:  相关的程序及PID
           -e:  扩展的信息
           -m :内存用量
           -o :计时器信息
           -x :unix sock 相关
       FILTER : [ state TCP-STATE ] [ EXPRESSION ]
           TCP 的常见状态: tcp finite state machine:
                   LISTEN:  监听
                   ESTABLISHED :已建立的连接
                   FIN_WAIT_1
                   FIN_WAIT_2
                   SYN_SENT
                   SYN_RECV
                   CLOSED
               EXPRESSION:
                   dport =
                   sport =
                   示例:’( dport = :ssh or sport = :ssh )’
           常用组合:
                   -tan, -tanl, -tanlp, -uan
           常见用法
                   ss -l  显示本地打开的所有端口
                   ss -pl  显示每个进程具体打开的socket
                   ss -t -a  显示所有tcp socket
                   ss -u -a  显示所有的UDP Socekt
                   ss -o state established '( dport = :ssh or sport = :ssh)'  显示所有已建立的ssh 连接
                   ss -o state established '( dport = :http or sport =:http )'  显示所有已建立的HTTP 连接
                   ss -s  列出当前socket                
13.网卡接口的配置文件(IP/NETMASK/GW/DNS): /etc/sysconfig/network-scripts/ifcfg-IFACE      
       使网卡重启有效的两种方法:
               ①使用文本编辑器(vim/nano)修改配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE
               ②通过专用的系统命令进行修改:
                   CentOS6.x:system-config-network / setup      
                   CentOS7.x:nmtil
                      ※配置文件修改之后,若想生效,需要重启网络服务。
                   重启网路服务的方法:
                           CentOS6.x:service network {start|stop|status|restart}
                           CentOS7.x:systemctl {start|stop|restart|status} network.service      
       通过配置文件进行修改文件:
       vim /etc/sysconfig/network-scripts/ifcfg-IFACE   说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
           DEVICE:此配置文件应用到的设备(和ifcfg-IFACE相同)
           ONBOOT:在系统引导时是否激活此设备
           UUID :设备的惟一标识
           HWADDR:对应的设备的MAC 地址
           BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
           NM_CONTROLLED :NM 是NetworkManager 的简写,此网卡是否接受NM 控制;建议CentOS6 为“no”
           TYPE :接口类型;常见有的Ethernet, Bridge
           IPADDR :指明IP 地址
           NETMASK :子网掩码
           GATEWAY:  默认网关
           DNS1:第一个DNS 服务器指向
           DNS2:备用DNS 服务器指向
           DOMAIN:DNS搜索域
           USERCTL :普通用户是否可控制此设备
           PEERDNS :如果BOOTPROTO 的值为“dhcp” ,是否允许dhcp server 分配的dns 服务器指向信息直接覆盖至/etc/resolv.conf 文件中
14.配置路由的相关配置文件:/etc/sysconfig/network-scripts/route-IFACE
       支持两种配置方式,但不能混用:
           (1)每行定义一个路由条目:
                   TARGET via GW
                   例如:10.0.0.0/8 via 172.16.0.1
           (2)每三行定义一个路由条目:
                   ADDRESS#=TARGET
                   NETMASK#=mask
                   GATEWAY#=GW
15.网卡名称
       网络接口识别并命名相关的udev 配置文件:
           /etc/udev/rules.d/70-persistent-net.rules
       查看网卡:
           dmesg |grep –i eth
           ethtool -i eth0
       卸载网卡驱动:
           modprobe -r e1000
           rmmod e1000
       装载网卡驱动:
           modprobe e1000
16.网络接口配置-bonding(CentOS6)
   Bonding
       就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC 地址。
       Bonding 的工作模式
           Mode 0 (balance-rr)
               轮转(Round-robin )策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力
           Mode 1 (active-backup)活动- 备份(主备)策略:在绑定中,只有一个slave 被激活。当且仅当活动的slave 接口失败时才会激活其他slave 。为了避免交换机发生混乱此时绑定的MAC 地址只有一个外部端口上可见
           Mode 3 (broadcast)广播策略:在所有的slave 接口上传送所有的报文。本模式提供容错能力。
           miimon是用来进行链路监测的。如果miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路
           详细帮助参看:/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
   Bonding配置(Bonding实战)
           ①创建bonding 设备的配置文件
               vim /etc/sysconfig/network-scripts/ifcfg-bond0
           ②在配置文件中添加下面的内容(ifcfg-bond0)
                   DEVICE=bond0
                   IPADDR=10.1.37.37
                   PREFIX=16
                   GATEWAY=10.1.37.37
                   DNS1=8.8.8.8
                   BONDING_OPTS= “miimon=100 mode=1”
           ③修改第一块网卡的配置文件(ifcfg-eth0)
               vim /etc/sysconfig/network-scripts/ifcfg-eth0
                   DEVICE=eth0
                   MASTER=bond0
                   SLAVE=yes
           ④修改第二块网卡的配置文件(ifcfg-eth1)
               vim /etc/sysconfig/network-scripts/ifcfg-eth1
                   DEVICE=eth1
                   MASTER=bond0
                   SLAVE=yes
           ⑤查看bond0 状态:cat /proc/net/bonding/bond0
               例,当前系统对外的是那块网卡生效。(假设第一块网卡(eth0)生效)
           ⑥测试Bonding是否生效的
               物理将第一块网卡eth0 down掉,然后查看第二块网卡eth1是不是自动启动,在短暂的时间之内是否启动起来,若第二块网卡能启动起来,则bonding设置成功。
           ⑦删除bonding
               ifconfig bond0 down
               rmmod bonding

原创文章,作者:sjsir,如若转载,请注明出处:http://www.178linux.com/44413

(0)
sjsirsjsir
上一篇 2016-09-07
下一篇 2016-09-07

相关推荐

  • 文本编辑器—sed

    一、sed介绍 sed 一种流式编辑器。一个流式编辑器通常对来自输入流(一个文件或者是管道的输入)的文本进行转换处理。在某些方面类似支持脚本编辑的编辑器,sed在多输入情况下只开放一个通道工作,因此更加效率。sed与其他编辑器最大的区别在于,能对管道输入的文本进行过滤处理。 二、sed工作机制 sed保持两个数据缓冲区:主要活动的模式空间,以及辅助性的保持空…

    Linux干货 2016-08-12
  • 逻辑卷管理器 LVM

          逻辑卷管理器 LVM lvm概述   LVM是Logical Volume Manager(逻辑卷管理器)的简写,又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器。是Linux核心所提供的逻辑卷管理(Logical Volume Management)功能。它在硬盘的硬盘分区之上,又…

    Linux干货 2016-09-02
  • Linux进程和计划任务

                                                      &nbsp…

    系统运维 2016-09-21
  • linux内核及系统启动流程

    Linux内核 内核概述 如图,最上面是用户空间(User Space),是用户程序执行的地方;用户空间之下是内核空间(Kernel Space),内核位于此。基于此,GUN C Library(glibc)提供了连接内核的系统调用接口,还提供了在用户空间应用程序和内核之间进行转换的机制,因为内核空间和用户空间的应用程序使用的是不同的保护地址空间。用户空间的…

    Linux干货 2016-08-08
  • 正则表达式

    正则表达式 热身 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 例如 grep, expr, sed , awk. 或Vi中经常会使用到正则表达式,为了充分发挥&…

    Linux干货 2016-08-12
  • 树的遍历和排序

    树的遍历和排序

    Linux干货 2017-10-23