第二章 linux高级命令的简单使用以及shell脚本的简单制作

重定向;正则表达式;grep;sed;vim;yum;shell脚本

1)重定向

    1)基本概念

  • 标准输入 -0

标准输出-1

标准错误-2

 

  •  >  把输出重定向到文件

> 把错误重定向到文件

&> 把输出和错误重定向到文件

  •  set –C 禁止将内容覆盖已有文件,但可追加 ; set +C 允许覆盖 ; >| file 强制覆盖
  •  >> 追加内容到文件夹

   >> 把错误内容到文件夹

   &>> 把输出和错误追加到文件

  • cmd  errcmd  &> /data/all.log

    2)tr 命令

  • -d 删除
  • -s 把连续重复字符显示为一个
  • [:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字
    [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号
    [:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符
  • tr  “\n” ”  ”     \n是回车

    3) 多行重定向

  • cat  << EOF   > f1    结束时要在单独一行输入EOF结束多行重定向

   4)管道  |

  • ls | tr    ‘a-z’    ‘A-Z’
  • 命令1 | tee [-a ] 文件名 | 命令2
    把命令1的STDOUT保存在文件中,做为命令2的输入
    -a 追加

2)grep

1) grep: Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行模式:由正则表达式字符及文本字符所编写的过滤条件

2) grep [OPTIONS] PATTERN [FILE…

  •   grep root /etc/passwd    root是关键词 搜索含有root的行并显示,root加颜色
  • grep “$USER” /etc/passwd  弱引用 效果同上
  • grep ‘$USER’ /etc/passwd   强引用  搜索 $USER
  • grep `whoami` /etc/passwd   反向单引号里面是命令且可以执行 grep会查找命令的输出结果

3) grep命令选项

  • -v: 显示不被pattern匹配到的行
  • -i: 忽略字符大小写
  • -n:显示匹配的行号
  • -c: 统计匹配的行数
  • -o: 仅显示匹配到的字符串
  • -q: 静默模式,不输出任何信息
  • -A #: after, 后#行
  • -B #: before, 前#行
  • -C #:context, 前后各#行
  • -e:实现多个选项间的逻辑or关系
    grep –e ‘cat ’ -e ‘dog’ file
  • -w:匹配整个单词
  • -F:相当于fgrep,不支持正则表达式

4) 基本正则表达式元字符

  • . 匹配任意单个字符
  • [] 匹配指定范围内的任意单个字符
  • [^] 匹配指定范围外的任意单个字符
  • [:alnum:] 字母和数字
  • [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
  • [:lower:] 小写字母 [:upper:] 大写字母
  • [:blank:] 空白字符(空格和制表符)
  • [:space:] 水平和垂直的空白字符 (比[:blank:]包含的范围广)
  • [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
  • [:digit:] 十进制数字 [:xdigit:]十六进制数字
  • [:graph:] 可打印的非空白字符
  • [:print:] 可打印字符
  • [:punct:] 标点符号

5)正则表达式(匹配次数)

  • * 匹配前面的字符任意次,包括0次
    贪婪模式:尽可能长的匹配
  • .*任意长度的任意字符
  • \? 匹配其前面的字符0或1次
  • \+ 匹配其前面的字符至少1次
  • \{n\} 匹配前面的字符n次
  • \{m,n\} 匹配前面的字符至少m次,至多n次
  • \{,n\} 匹配前面的字符至多n次
  • \{n,\} 匹配前面的字符至少n次

6)正则表达式(位置锚定

  • ^ 行首锚定,用于模式的最左侧
  • $ 行尾锚定,用于模式的最右侧
  • ^PATTERN$ 用于模式匹配整行
  • ^$ 空行
  • ^[[:space:]]*$ 空白行
  • \< 或 \b 词首锚定,用于单词模式的左侧
  • \> 或 \b 词尾锚定;用于单词模式的右侧
  • \<PATTERN\> 匹配整个单词

7)正则表达式( 分组  )

  • \(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理 例: \(root\)\+
  • 后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身    \1,\2
  • 或者:\|

8) 扩展的正则表达式 (正则表达式去掉\)

  • 次数匹配:
    *:匹配前面字符任意次
    ?: 0或1次
    +:1次或多次
    {m}:匹配m次
    {m,n}:至少m,至多n次
  • 位置锚定:
    ^ :行首
    $ :行尾
    \<, \b :语首
    \>, \b :语尾
  • 分组:
    ()
    后向引用:\1, \2,
  • 或者:
    a|b: a或b
    C|cat: C或cat
    (C|c)at:Cat或cat

3)vim

1)vim打开文件

  • vim [OPTION]… FILE…
    +#: 打开文件后,让光标处于第#行的行首,+默认行尾
    +/
    PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的
    行首
    –b file 二进制方式打开文件
    –d file1 file2… 比较多个文件
    -m file 只读打开文件
  • ex file 或 vim –e 直接进入ex模式
  • 如果该文件存在,文件被打开并显示内容
    如果该文件不存在,当编辑后第一次存盘时创建它

2)三种模式及模式的切换

  • 三种主要模式:
    1.命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
    2.插入(Insert)或编辑模式: 修改文本
    3.扩展命令(extended command )模式: 保存,退出等
  • Esc键 退出当前模式
  • Esc键 Esc键 总是返回到命令模式

3) 模式转换

  • 命令模式 –> 插入模式
    i: insert, 在光标所在处输入
    I:在当前光标所在行的行首输入
    a: append, 在光标所在处后面输入
    A:在当前光标所在行的行尾输入
    o: 在当前光标所在行的下方打开一个新行
    O:在当前光标所在行的上方打开一个新行
  • 插入模式 ——–> 命令模式
    ESC
  • 命令模式 ——–> 扩展命令模式
    :
  • 扩展命令模式 ——–> 命令模式
    ESC,enter

4)关闭文件

  • 扩展模式:
    :q 退出     推荐使用    
    :q! 强制退出,丢弃做出的修改
    :wq 保存退出     推荐使用
    :x 保存退出
  • 命令模式
    ZZ: 保存退出
    ZQ:不保存退出

5) 扩展模式

  • 按“:”进入Ex模式
  • 创建一个命令提示符: 处于底部的屏幕左侧
  • 命令:
    w 写(存)磁盘文件
    wq 写入并退出
    x 写入并退出
    q 退出
    q! 不存盘退出,即使更改都将丢失
    r filename 读文件内容到当前文件中
    w filename 将当前文件内容写入另一个文件
    !command 执行命令
    r!command 读入命令的输出

6) 命令模式光标跳转

  • 字符间跳转:
    h: 左 l: 右 j: 下 k: 上=上下左右
    #COMMAND:跳转由#指定的个数的字符
  • 单词间跳转:
    w:下一个单词的词首
    e:当前或下一单词的词尾
    b:当前或前一个单词的词首
    #COMMAND:由#指定一次跳转的单词数
  • 当前页跳转:
    H:页首 M:页中间行 L:页底

7) 命令模式光标跳转

  • 行首行尾跳转:
    ^: 跳转至行首的第一个非空白字符
    0: 跳转至行首
    $: 跳转至行尾
  • 行间移动:
    #G、扩展模式:# :跳转至由#指定行
    G:最后一行
    1G, gg: 第一行
  • 句间移动:
    ):下一句 (:上一句
  • 段落间移动:
    }:下一段 {:上一段

8) 命令模式操作

  • 字符编辑:
    x: 删除光标处的字符
    #x: 删除光标处起始的#个字符
    xp: 交换光标所在处的字符及其后面字符的位置
    ~:转换大小写
    J:删除当前行后的换行符
  • 替换命令(r, replace)
    r: 替换光标所在处的字符
    R:切换成REPLACE模式
  • 删除命令:
    d: 删除命令,可结合光标跳转字符,实现范围删除
    d$: 删除到行尾
    d^:删除到非空行首
    d0:删除到行首
  • dd: 删除光标所在的行
    #dd:多行删除
  • D:从当前光标位置一直删除到行尾,留空行,等同于d$
  • 复制命令(y, yank):
    y: 复制,行为相似于d命令
  • yy:复制行
    #yy: 复制多行
  • Y: 复制整行
  • 粘贴命令(p, paste):
    p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴
    至当前光标所在处的后面
    P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴
    至当前光标所在处的前面

9) 扩展命令模式:地址定界

  • /pat1/,/pat2/
    从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结

    #,/pat/
    /pat/,$

10) 扩展命令模式:查找

  • /PATTERN:从当前光标所在处向文件尾部查找
    ?PATTERN:从当前光标所在处向文件首部查找
    n:与命令同方向
    N:与命令反方向

11) 扩展命令模式:查找并替换

  • 格式:s/要查找的内容/替换为的内容/修饰符
  • 查找内容可以使用格式,替换内容不能但是可以使用\1,\2后向引用
  • i: 忽略大小写;g: 全局替换
  • 一般形式为s///(/符号可以替换为其他符号例如@;#;%使用文本中不含有的符号以防止混淆)

4)sed

1)地址定界

  • 不给地址:对全文进行处理
  • #: 指定的行,$:最后一行
    /pattern/:被此处模式所能够匹配到的每一行
  • 地址范围:
    #,#   几行到几行
    #,+#  几行到+几
    /pat1/,/pat2/  第一个关键词到第二个关键词
    #,/pat1/
       指定行到 关键词
  • ~ 步进  1~2  从第一行开始隔两行,奇数;2~2  取偶数

2)编辑命令

  • d: 删除模式空间匹配的行,并立即启用下一轮循环
  • p:打印当前模式空间内容,追加到默认输出之后
  • a [\]text:在指定行后面追加文本;支持使用\n实现多行追加
  • i [\]text:在行前面插入文本
  • c [\]text:替换行为单行或多行文本
  • w /path/somefile: 保存模式匹配的行至指定文件
  • r /path/somefile:读取指定文件的文本至模式空间中
    匹配到的行后
  • =: 为模式空间中的行打印行号
  • !:模式空间中匹配行取反处理

3)查找替换( 支持使用其它分隔符 )

  • s///;s@@@
  • g: 行内全局替换
    p: 显示替换成功的行
    w
    /PATH/TO/SOMEFILE:将替换成功的行保存至文件中

4)高级编辑

  • P:打印模式空间开端至\n内容,并追加到默认输出之前
  • h: 把模式空间中的内容覆盖至保持空间中
  • H:把模式空间中的内容追加至保持空间中
  • g: 从保持空间取出数据覆盖至模式空间
  • G:从保持空间取出内容追加至模式空间
  • x: 把模式空间中的内容与保持空间中的内容进行互换
  • N:读取匹配到的行的下一行追加至模式空间
  • d: 删除模式空间中的行
  • D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,
    并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间
    不包含换行符,则会像发出d命令那样启动正常的新循环

    示例: sed -n ‘n;p’ FILE    显示偶数行
    sed ‘1!G;h;$!d’ FILE            倒序
    sed ‘N;D‘ FILE                      显示最后一行  
    sed ‘$!N;$!D’ FILE              显示后两行
    sed ‘$!d’ FILE                       显示最后一行  
    sed ‘G’ FILE                          每行后加一个空行
    sed ‘g’ FILE                           变成空行显示出来
    sed ‘/^$/d;G’ FILE             每行后加一个空行
    sed ‘n;d’ FILE                       显示奇数行
    sed -n ‘1!G;h;$p’ FILE        倒序

5)yum(以httpd为例)

1) 下载源码并解压缩
tar xvf httpd-2.4.29.tar.bz2 -C /usr/local/src/

2)安装编译相关工具及依赖的包
yum groupinstall “development tools”

yum install apr-devel apr-util-devel pcre-devel

3)./configure –prefix=/apps/httpd24 –sysconfdir=/etc/httpd24

4)make -j 4

5) make install

6)PATH变量
echo ‘PATH=/apps/httpd24/bin:$PATH’ > /etc/profile.d/httpd24.sh
. /etc/profile.d/httpd24.sh

7)使用软件
apachectl 启动服务

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92538

(0)
阳光和苏阳光和苏
上一篇 2018-03-17
下一篇 2018-03-17

相关推荐

  • N21天天第十二周课程练习

    1、请描述一次完整的http请求处理过程; 1、建立TCP连接 2、Web浏览器向Web服务器发送请求 3、Web浏览器发送请求头信息   建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME   信息包括请求修饰符、客户机信息和可能的内容 4、Web服务器应答…

    Linux干货 2016-10-31
  • N26-第一周作业

    1、计算机主要由硬件部分和软件部分组成。     硬件部分:         (1)、CPU:包括运算器、控制器、寄存器、缓存。CPU的核心部件是运算器和控制器,它的功能主要是解释计算机指令以及处理计算机软件中的数据。         (2…

    Linux干货 2016-12-27
  • 网络管理

    常见的网络物理组件:路由器、交换机、PC机 网络的特性:速度、成本、安全性、可用性、可扩展性、可靠性、拓扑 拓扑结构:           物理拓扑:总线拓扑               &…

    Linux干货 2017-05-09
  • 马哥教育网络班20期+第6周课程练习

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp sed 's/^[[:space:]]/#&/' /tmp/rc.sysinit 2、…

    Linux干货 2016-08-15
  • FHS文件系统各目录功能

        FHS文件系统各目录功能 前言                  FHS (Files system Hiserarchy Standard)…

    Linux干货 2016-10-17
  • 高性能Mysql主从架构的复制原理及配置详解

    1 复制概述       Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器…

    Linux干货 2015-04-13