zoukankan      html  css  js  c++  java
  • Linux基础系统优化及基础命令(三)

    一、nl命令

    1、nl命令在linux系统中用来计算文件中行号

      -b  :指定行号指定的方式,主要有两种:

        -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

        -b t :如果有空行,空的那一行不要列出行号(默认值);

      -n  :列出行号表示的方法,主要有三种:

        -n ln :行号在萤幕的最左方显示;

        -n rn :行号在自己栏位的最右方显示,且不加 0 ;

        -n rz :行号在自己栏位的最右方显示,且加 0 ;

    二、sed命令

    1、Linux sed 命令是利用脚本来处理文本文件。

    2、sed 可依照脚本的指令来处理、编辑文本文件。

    3、Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

    参数说明

      • -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
      • -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
      • -h或--help 显示帮助。
      • -n或--quiet或--silent 仅显示script处理后的结果。
      • -V或--version 显示版本信息。

    动作说明

      • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
      • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
      • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
      • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
      • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
      • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

    4、样例

      1>在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:

    $ sed -e 4a
    ewline testfile #使用sed 在第四行后添加新字符串  

        newline : 文本内容

        testfile:指定修改的文件

      2>将 /etc/passwd 的内容列出并且显示行号,同时,删除操做!

    # 删除2~5行
    $ nl /etc/passwd | sed '2,5d'

    # 只删除第二行
    $ nl /etc/passwd | sed '2d'
    # 删除第三行到最后一行
    $ nl /etc/passwd | sed '3,$d'

    # 在第二行后(亦即是加在第三行)加上『drink tea?』字样!
    $ nl /etc/passwd | sed '2a drink tea'

    # 如果是要在第二行前
    $ nl /etc/passwd | sed '2i drink tea'

    # 将第2-5行的内容取代成为『No 2-5 number』呢?
    $ nl /etc/passwd | sed '2,5c No 2-5 number'
     

        d:删除

                  a:追加

      3>数据查询和显示操作

    # 搜索 /etc/passwd有root关键字的行
    # 如果root找到,除了输出所有行,还会输出匹配行。
    $ nl /etc/passwd | sed '/root/p'
    
    # 使用-n的时候将只打印包含查询到内容的行。
    $ nl /etc/passwd | sed -n '/root/p'

        -n:只显示查询到的内容行

                   p:打印

      4>数据查询并进行查询到的数据进行删除

    # 删除/etc/passwd所有包含root的行,其他行则继续输出
    $ nl /etc/passwd | sed  '/root/d'

      5>数据查询并执行相关命令

    # 搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:
    $ nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'   

        q:退出

      6>数据的查询并替换

    # 除了整行的处理模式之外, sed 还可以用进行部分数据的搜寻并取代。
    # 不改变原始文本,只作展示效果,目前感觉没有用处
    $ sed 's/要被取代的字串/新的字串/g'

        s:查询

      7>正则匹配操作

    # 原始文本信息
    $ /sbin/ifconfig eth0
    inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
    
    # 将 IP 前面的部分予以删除
    $ /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
    
    # 将 IP 后面的部分予以删除
    $ /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'

      8>修改文件内容,系统文件修改前注意备份!!!

    # regular_express.txt 内每一行结尾若为 . 则换成 !
    $ sed -i 's/.$/!/g' regular_express.txt
    
    # 在 regular_express.txt 最后一行加入 # This is a test:
    $ sed -i '$a # This is a test' regular_express.txt
    
    # regular_express.txt 中aaa改变为123
    $ sed -i 's/aaa/123/g' regular_express.txt

        g:全局

     三、dd命令

    1、用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

    1. if=文件名 #输入文件名,缺省为标准输入。即指定源文件。< if=input file >

    2. of=文件名 #输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

    3. ibs=bytes #一次读入bytes个字节,即指定一个块大小为bytes个字节。
      obs=bytes #一次输出bytes个字节,即指定一个块大小为bytes个字节。
      bs=bytes #同时设置读入/输出的块大小为bytes个字节。

    4. cbs=bytes #一次转换bytes个字节,即指定转换缓冲区大小。

    5. skip=blocks #从输入文件开头跳过blocks个块后再开始复制。

    6. seek=blocks #从输出文件开头跳过blocks个块后再开始复制。
      注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。

    7. count=blocks #仅拷贝blocks个块,块大小等于ibs指定的字节数。

    8. conv=conversion #用指定的参数转换文件。
      ascii #转换ebcdic为ascii
        ebcdic #转换ascii为ebcdic
      ibm #转换ascii为alternate ebcdic
      block #把每一行转换为长度为cbs,不足部分用空格填充
      unblock #使每一行的长度都为cbs,不足部分用空格填充
      lcase #把大写字符转换为小写字符
      ucase #把小写字符转换为大写字符
      swab #交换输入的每对字节
        noerror #出错时不停止
        notrunc #不截短输出文件
      sync #将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

    2、应用示例

    # 1.将本地的/dev/hdb整盘备份到/dev/hdd
    $ dd if=/dev/hdb of=/dev/hdd
    
    # 2.将/dev/hdb全盘数据备份到指定路径的image文件
    $ dd if=/dev/hdb of=/root/image
    
    # 3.将备份文件恢复到指定盘
    $ dd if=/root/image of=/dev/hdb
    
    # 4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
    $ dd if=/dev/hdb | gzip > /root/image.gz
    
    # 5.将压缩的备份文件恢复到指定盘
    $ gzip -dc /root/image.gz | dd of=/dev/hdb
    
    # 6.拷贝内存内容到硬盘
    $ dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)
    
    # 7.增加swap分区文件大小
    # 第一步:创建一个大小为256M的文件:
    $ dd if=/dev/zero of=/swapfile bs=1024 count=262144
    # 第二步:把这个文件变成swap文件:
    $ mkswap /swapfile
    # 第三步:启用这个swap文件:
    $ swapon /swapfile
    # 第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
    $ /swapfile swap swap default 0 0

    3、其他dd示例:https://www.cnblogs.com/ginvip/p/6370836.html

  • 相关阅读:
    zabbix 设备(自己的实践)
    10.24的注意事项——解决linux_jni编译错误的问题
    [Angular] Adding keyboard events to our control value accessor component
    [tmux] Copy and paste text from a tmux session
    [tmux] Customize tmux with tmux.conf
    [tmux] Zoom and resize to view a particular pane within tmux
    [tmux] Manage terminal workspaces using session naming
    [tmux] Reuse terminal workspaces using tmux sessions
    [tmux] Create collections of panes using tmux windows
    [tmux] Organize your terminal using tmux panes
  • 原文地址:https://www.cnblogs.com/WiseAdministrator/p/13209922.html
Copyright © 2011-2022 走看看