第二章 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 14:28
下一篇 2018-03-17 15:55

相关推荐

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

    系统的INPUT和OUTPUT默认策略为DROP; #把默认策略设置为DROP [root@localhost ~]# iptables -P INPUT DROP [root@localhost ~]# iptables -P OUTPUT DROP 1、限…

    Linux干货 2016-12-05
  • iptables练习

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机; 系统默认策略设定: ~]# iptables -P INPUT DROP ~]# iptables -P OUPUT DROP 网络说明…

    Linux干货 2016-12-27
  • 编程命名中的7+1个提示

    前几天Neo写过《编程中的命名设计那点事》,这里也有另外一篇和程序命名的文章,可以从另一个角度看看。 1.- 变量应该是尽可能的望文知意。千万不要使用教材中的命名方式。 好的变量: daysDateRange, flightNumber, carColor. 坏的变量: days, dRange, temp, data, aux… 在我们…

    Linux干货 2015-04-03
  • 文本处理工具之sed

    一.介绍 sed是一个流编辑工具,可以用来实现对文本的过滤与替换,而Linux的哲学思想之一就是一切皆文件,因此对文本的操作至关重要。sed的基本工作原理是通过每次读取一行文本来来对默写符合条件的文本进行处理。要注意的是sed默认并不直接修改源文件,而是将读取到的内容复制到缓冲区在中,这个缓冲区也叫做模式空间,然后在模式空间中对文本进行处理,处理完成后将结果…

    Linux干货 2017-01-05
  • 信息论的熵

    1.  前言    熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。    在信息论里则叫信息量,即熵是对不确定性的度量。从控制论的角度来看,应叫不确定性。信息论的创始人香农在其著作《通信的数学理论》中提出了建立在概率统计模型上的信息度量。他把信息定义为“用来消除不确定性的东西”。在信息世界,熵越…

    Linux干货 2016-03-27
  • 用户管理权限命令总结

    用户 Linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。 用户分类 超级用户:(root,UID=0) 普通用户:(UID在500到60000) 伪用户:(UID在1到499) 系统和服务相关的:bin、daemon、shutdown等 进程相…

    Linux干货 2017-04-03