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

相关推荐

  • N25-第一周作业

    一,描述计算机的组成及其功能。        计算机(Computer)是一种能够按照事先存储的程序,自动、高速地进行大量数值计算和各种信息处理的现代化智能电子设备。由硬件和软件所组成,两者是不可分割的。        计算机的组成分为控制…

    Linux干货 2016-12-03
  • bash shell 循环语句的使用

    条件选择if语句       if语句是选择执行的,条件满足则执行,不满足则退出,if语句也可嵌套,就是if语句里面也可以在进行if语句 单分支 if 判断条件;then statement1 fi   双分支 if 判断条件;then 条件为真得分支 else 条件为假的分支 fi   …

    Linux干货 2016-08-18
  • grub文件文件修复

    首先我们先破坏一下grub文件 这里我们先查看一下电脑是哪块硬盘启动的 这里我们就直接破坏硬盘的二进制数据,以达到grub的破坏。 要记住我们只能破坏前446字节,也就是bootloader。后面64字节是分区表。 我们可以查看一下前512字节的二进制文件 hexdump -C -n 512 /dev/sda 先破坏/boot/grub/stage1的前44…

    2017-07-28
  • 源码包编译安装MariaDB-10.1.22

    源码包编译安装MariaDB-10.1.22 1、获取源码包        mariadb-10.1.22.tar.gz 2、编译环境及依赖关系     yum groupinstall -y Development Tools yum -y install …

    Linux干货 2017-03-16
  • vsftpd

    文件服务: 安装开启服务前先关闭selinux,清空iptables策略。避免不必要的麻烦,服务开启后,配置一切正常有需要再根据情况开启。 ftp:应用层,C/S,跨主机的文件共享服务;file transfer protocol nfs,cifs:文件系统接口,网络文件系统;     nfs:network&nbsp…

    Linux干货 2016-11-01
  • bash变量类型及区别之浅谈

    变量类型,区别 位置变量$0 $1,$2,$# $@ $* 变量的类型:本地变量、环境变量、位置变量 本地变量:生效范围为当前shell进程,对当前shell之外的其他shell进程包括当前shell的子进程均无效 环境变量:生效范围为当前shell进程及子进程 位置变量:$1,…..$n,${10}来表示,用于放脚本在脚本代码中调用通过命令行传…

    Linux干货 2016-08-12