Linux学习日志(十三)

Linux:单内核

模块化:动态

      /lib/modules/
       lsmod,modinfo,modprode,insmod,modprobe -r,rmmod

rpm制作

src.rpm

       源码rpm包+specs文件
       步骤:
         1.创建mockbuild用户
         2.切换至mockbuild用户,而后安装src.rpm包
         3.rpmbuild -bb|-ba ~/rpmbuild/SPECS/package_name.spec
         4.制作完成的rpm包:位于/root/rpmbuild/RPMS/x86_64中

专门放源码编译 : /usr/src,/usr/local/src

编译内核:

   第一步:可能需要的模块不多,红帽或者centos为了使版本更通用,
               y:编译进核心
               m:编译成模块
               make config
               make allyesconfig
               make allnoconfig

               make menuconfig

               建议将/boot/下的config文件拷贝到当前目录下,叫.config

               make kconfig(KDE桌面环境,并且安装了qt开发环境)

               make gconfig(Gnome桌面环境,并且安装gtk开发环境)

    第二步:编译
      make -j #
    第三步:安装模块
      make modules_install
    第四步:安装内核
      make install
    第五步:检查。测试
      grub.conf中是否已经有新内核配置项
      重启系统并启用新内核

Linux两大剑客

sed (Stream Editor)

一次只读一行(不对源文件进行操作)

命令格式:

    sed [options] "script" FILE 。。。。。

选项

    —n : 精默摸式,不输出模式空间中的内容
    -r : 扩展的正则表达
    -f :/path/to/sed_script_file 指定sed 脚本 来执行
    —e : ‘script’ -e 'script': 指定多个编辑指令
    -i : 直接编辑源文件

编辑命令:

   d: 删除
   p: 打印
   i  \text:  在同行插入
   a  \test:  在下一行插入
   r  /path/to/somefile:指定位置把另外一个文件的内容插入进来
   w  /path/to/somefile: 将符合条件的所有行保存至指定的文件中
   = : 显示符合条件的行号
   s///:查找条件可以使用模式,但要替换的内容不行

地址定界:

     startline,endline
     1,3
     /pat1/,/pat2/
     /pattern/

用法:

   sed [opions] 'addr1[,addr2]编辑命令' FILE .....

    sed [opions] “addr1[,addr2]编辑命令” FILE .....

正则表达式:

  基本的: 
     字符:
          .  
          [] 
          [^]

      次数:
          * 0次以上
          \? 一次
               \{m,n\} 指定m到n此

         瞄定:
              ^
              $
              \<,\b
              \>,\b

         分组: 
             \(\)

         引用:
             \1,\2....
  扩展:
     字符: 
        .   
       [] 指定范围内
       [^] 指定范围外
       [[:lower:]] 小写字符
       [[:punct:]] 标点符号
       [[:alnum:]] 所有字母数字

     次数: 
        *
        ?
        +
        {m,n}
     锚定:  
         ^
         $
         \>, \b
         \<, \b 
     或: 
        a|b 
     分组:
         ()

     引用: 
         \1,\2....

 sed '地址定界s@查找条件@替换文本@g' 

修饰符

   g:global ,全局替换
   i:ignore-case ,不区分字符大小写             

练习:

1.替换/etc/inittab文件中”id: 3:initadefault:” 一行中的数字为5

 sed 's@\(id:\)[0-9]\(:initdefault\)@\15\2@' /etc/inittab 

2.删除/etc/init.d/functions 文件中的空白行

     sed '/^$/d' /etc/init.d/functions 

3.删除/etc/inittab文件中位于行首的#

     sed '/^#/d' /etc/init.d/functions

4.删除/etc/rc.d/rc.sysinit文件中以#后至少一个空白字符开头的行

     sed 's@^#[[:space:]]\{1,\}@@g' /etc/rc.d/rc.sysinit 

5.删除/boot/grub/grub.conf 文件中首行的空白字符

 sed 's@^[[:space:]]\{1,\}@@' /boot/grub/grub.conf

6. 取出一个文件路径的目录名称,/ect/sysconfig/network.其目录为/etc/sysconfig 功能类似于dirname命令

    echo /etc/sysconfig/network| sed 's@[^/]\{1,\}/\?$@@'

sed 高级用法: t, T ,D ,P,n,N,h,H,g,G

awk

 awk: 报告生成工具(生成美观的输出结果)

      把文件中读取到的每一行的每一个字段分别进行格式化,而后进行显示

   变量: 条件判断,循环,数组


 awk --> new awk --> nakw

参数

    -F :指定分隔符号

用法格式:

      awk [options] 'script' FILE...
       awk  [options] '/pattern/{action}' FILE ....

     action: print $1,$1

模式

     地址定界: 
             /pat1/,/pat2/
             /pattern/ 
             expression:表达式
                 > ,>=,<,<=,==,!=,=~  

       BEGIN:执行前的做准备工作

       END:执行后的收尾工作
awk的常用四种分隔符

输入:

     行分隔符
     字段分隔符

输出:

      行分隔符
      字段分隔符

awk的内置变量

     NF:最后一个字段
     FS: 指定输入分隔符 在BEGIN中定义,指定时要使用""
         默认为空白
     OFS:输出时指定的分隔符,在BEGIN中定义,指定时要使用"",默认为空白

练习:

1.显示GID小于500的组

   awk -F : '$3<500{print $1}' /etc/group

2.显示默认的shell为nologin的用户

 awk -F : '$7~/nologin$/{print $1}' /etc/passwd

3,显示eth0网卡文件的配置信息,注意,只显示等号后面的值

    awk -F = '{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0

4.显示/etc/sysctl。conf文件中定义的内核参数:只显示名称,

   awk -F =' !/^#|^$/{print $1}'/etc/sysctl.conf

5.显示eth0网卡的ip地址,通过ifconfig命令结果进行过滤

  ifconfig eth0 |awk '/inet addr/{print $2}' |awk -F : '{print $2}'

bash编程:数组初步

数组:

  数据结构,数据序列,保存了连续的多个数据,可以使用索引获取相关元素

声明数组:

    declare -a arryname


    初始化或赋值:各元素间使用空白字符分隔,不加下标默认为第一个
    arrayname=('a' 'b' 'c')
    第二种:可以自定义下标
    [下标]='字符'
    第三种:arrayname[0]='a';arrayname[1]='b';
    显示第一个字符
    echo ${arrayname(0)}

    获取元素的长度
    ${#arrayname[下标]}
    查看有效元素的个数
    ${#arrayname[@|*]} 

bash的伪随机生成器

    $RANDOM

取特定位数的
$[$RANDOM%7]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值