第二章 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

相关推荐

  • Linux文件系统及文件管理相关命令

    一、Linux文件系统介绍: Linux文件系统叫做根文件系统(rootfs): root filesystem。文件系统从根目录下开始,用“ /”表示。文件和目录被组织成一个单根倒置树结构。文件系统分层遵循FHS(Filesystem Hierarchy Stantartd)。标准的Linux文件系统,文件名严格区分大小写。使用“/”分割路径。 …

    Linux干货 2016-07-29
  • 编译安装MariaDB源码包

        因为MySQL的发展趋势不甚乐观,MariaDB已替代MySQL被CentOS 7做为默认组件,如果想在CentOS 6中使用最新的MariaDB,则需要我们手动安装,其安装方式有三种:     1、RPM包安装     2、二进制…

    Linux干货 2015-06-08
  • Gdevops 2017全球敏捷运维峰会【北京站】限时免费!

    Introduction 全球敏捷运维峰会 打造敏捷与运维领域标杆峰会! 2017年全球敏捷运维峰会(Gdevops, Global Devops Summit)将于2017年在成都、上海、北京、广州四城全面启动,本次Gdevops 2017全球敏捷运维峰会【北京站】由上海市经济和信息化委员会指导,上海市云计算产业促进中心、DBAplus社群主办,数十家媒体…

    Linux干货 2017-08-02
  • Linux的正则表达式grep,egrep

    Linux的正则表达式grep,egrep 一、概念 正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一组特殊字符,组成一个“规则字符集合”,根据用户指定的文本模式对目标文件进行逐行搜索匹配,显示能被模式匹配到的结果。 给定一个正则表达式和另一个目标字符串,我们可以从给定的字符串中通过匹配模型,过滤字符串中不想要的的字符串,得到目标字符串,减少工作量。…

    Linux干货 2017-05-07
  • N25-第十周博客作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 内核空间的启动流程 一. POST 加电自检 在加电之后,智能设备所运行的内部存储的一系列检测程序集合。缩写为POST。这些检测程序在软件加载到硬件上运行之前对硬件的基本完整性加以验证。 用于实现POST的代码在主板上ROM(CMOS)芯片上。 二. Boot Sequence(BI…

    Linux干货 2017-03-25
  • Linux之任务计划 crontab

    Linux之任务计划    用过windows的同学应该都知道在控制面板中有一个“任务计划”选项,我们可以通过向导设置让计算机在某个时间点或者开机时运行某个脚本或者批处理等等,方便我们的日常管理监视工作;同样在Linux系统中,如果我们想在开机时就运行某个操作,可以直接将命令写入/etc/rc.local中,该操作就会在机器开机时运行;如…

    Linux干货 2015-05-18