• [RH124] 5-重定向、管道、编辑器


    1.默认输入输出

    默认输入---键盘: stdin 

    默认输出---屏幕: stdout 

    2.输出重定向

    重定向:改变数据流输出的位置、方向,例如输出到文件。使用 ">" 表示。

    1)普通重定向

    命令 > 文件名

    例如 ifconfig > ~/leo/log.txt ,将ifconfig的输出重定向到~/leo/log.txt文件中。

      如果多个命令使用">"重定向到同一个文件,那么该文件的内容会被覆盖。

    /def/null文件(黑洞):

    ls > /dev/null  # /dev/null是一个黑洞。扔进去的内容都会消失。

    2)追加重定向

    命令 >> 文件名

    例如 ifconfig > ~/leo/log.txt,ls >> ~/leo/log.txt 。这样ls的输出就会被追加到~/leo/log.txt的最后。

    3)错误重定向

    当我们输入一个错误的命令,系统会提示命令不存在。此时我们想重定向该错误信息到文件中,重定向不生效。

    这是因为:

    ">"、">>"只能重定向正确的结果。">"相当于是"1>",">>"相当于是"1>>"。

    "2>"就是重定向错误信息,"2>>"是追加错误信息

    例如  ifconfig 2> err.txt  ,err.txt中的内容就是ifconfig命令不存在。

    4)使用重定向需要注意的点

    (如果我们使用xxx > aa.txt来重定向结果。那么会出现什么情况?     首先我们使用的是">",那么系统首先会清空aa.txt的内容,然后执行xxx发现命令不存在,所以最终的结果就是aa.txt被清空,但是内容未写入。)

    如果我们想把正确的和错误的都重定向到文件中,怎么办:

     xxxxxx > aa.txt 2>&1  ,相当于把错误的当成正确的(放水)。

     ifconfig 2> aa.txt 1>&2  ,相当于把正确的当成错误的(穿小鞋)。

    以上内容比较绕,那我们使用一个统一的标识:

     &> 和 &>> ,分别表示覆盖和追加,前面的&表示不管是正确还是错误。

    例如: ifconfig &>> aa.txt,xxxx &>> aa.txt 。这样ifconfig正确结果和xxxx的错误结果都保存到了aa.txt中。

    3.输入重定向

     tr "a-z" "A-Z" >> hello.txt < /etc/hosts :将/etc/hosts的内容重定向到tr命令,经过小写到大写的转换后,再重定向到hello.txt中。也可以写作: tr "a-z" "A-Z" < /etc/hosts >> hello.txt 

    4.grep

     grep root passwd :把/etc/passwd里含root的所有行过滤出来。

     grep -n root passwd :过滤内容,并显示行号。

     grep -i root passwd :忽略大小写进行过滤。匹配含有root、ROOT、ROot等内容的行。

     grep -v root passwd :反向过滤,匹配不含root的行。

     grep -n -A3 root passwd :过滤含root的行,并且显示后面的3行。

     grep -n -B3 root passwd :过滤含root的行,并且显示前面的3行。

     grep -n -C3 root passwd :过滤含root的行,并且显示前后的3行。

     

     grep ^root passwd :过滤以root开头的行。

     grep root$ passwd :过滤以root结尾的行。

    5.管道"|"

     ifconfig | grep inet :将ifconfig命令的输出作为grep的参数,在其中查找包含inet的行。

     cat -n passwd | head -15 | tail -5 : 获取passwd中11行-15行的内容。

    6.编辑器

    gedit:类似于Windows下的记事本。

    vim:vi的增强版。最小化安装系统,默认没有安装vim。

     

    命令格式: vim file 。打开file,开始编辑。

    学习文档:vimtutor。

    vim有三种模式:

    1)命令模式:进入vim时默认就是命令模式。

    命令模式下的操作:

    u:撤销。

    ctrl+r:前进,与u撤销相反。

    yy:复制行。按完yy后,光标移动要粘贴的位置按p粘贴。

    p:粘贴。

    nyy:n为数字键,在命令模式下先按数字,表示要复制几行(包含光标所在行),然后按yy。

    dd:剪切行,如果剪切后不粘贴,就相当于删除该行。

    ndd:类似nyy,即剪切n行。如果文件大,想删除后面所有行,那就使用10000dd,多使用几次就删除了。

    x:删除光标当前所在位置的字符。

    nx:类似nyy和ndd,不过功能是删除当前光标所在位置后n个字符,如果想删除到末尾,就先输入一个比较大的值就可以了。例如1000x。

    r:替换光标所在位置的字符。

    R:按完R后,可以连续替换多个字符,完成后按ESC取消R。

    ZZ:快捷保存退出,相当于":wq"。

    gg:切换到首行。或者1G。

    G:切换到最后一行。

    nG:切换到第n行,例如1000G,切换到第1000行。如果想切换到尾行,直接输入G。

    dG:从光标所在行删除到末尾。如果要删除全部,先按gg,再按dG。

    Ctrl+v:进入视图模式,然后按方向键可以选择一批字符,然后做其他操作,例如替换(r),删除(x),复制(y,不是yy)。

    如何使用#号注释多行:Ctrl+v,然后按下选择多个字符,按大写的I,然后输入#,再按ESC。

    2)插入模式:在命令模式按"i,a,o,I,A,O"可以进入插入模式。

    i:从当前光标处插入。

    u在命令模式下按u,类似于windows的ctrl+z,撤销。

    o:光标所在行的下一行产生一个空白行,并进去插入模式。

    I:大写的i。光标移到当前行的最前面,并进入插入模式。

    A:大写的a。光标移到当前行的最后面,并进入插入模式。

    O:大写的o。在光标所在行的上一行产生一个空白行,并进入插入模式。

    3)末行模式:只能从命令模式来进入,所以在插入模式的时候需要先按ESC进入命令模式。再从命令模式进入末行模式。

    使用"/"进入:在命令模式按"/",然后 /关键字 ,按n向后查询,按N向前查询。 /关键字c 忽略大小写查询。

    使用":"进入:可以用于保存退出、不保存退出、打开某文件、另存为、执行命令、修改属性、替换。

    保存:":w"。

    保存并退出:":wq",也可以用":x",不能是"qw"。

    不保存并退出:":q!"。

    打开某文件:":r file",打开file,并且把内容插入到光标位置的下一行。

    另存为:":w filename",将内容另存到指定的file中。

    执行命令:将命令执行结果插入到当前光标位置,例如":.!ls /boot",":.!ifconfig"。在命令模式按两下"!",可以自动跳到":.!"。

    显示行号:":set number",但显示的行号不是文档的内容,只是编辑器提供的行号。这种操作显示的行号都是临时的。

    如果要让vim打开默认显示行号,就在用户的家目录下创建一个文件叫".vimrc"。里面写上set number。只对当前用户有效,对其他用户无效。

    如果想让所有用户都默认显示行号,那就编辑/etc/vimrc,在空白行添加set number

     

    替换:

     :s/old/new/ ,将光标所在行的第一个old替换为new。

     :s/old/new/g ,将光标所在行所有old替换为new。

     :m,ns/old/new/g ,从m行到n行替换所有的old为new。

     :m,ns/old/new/g ,中的m和n可以使用几个变量,"."表示光标当前行,"$"表示最后一行,"$-1"表示倒数第二行,以此类推。

    全文替换:

     :1,$s/old/new/g" ,"1,$"可以使用"%"代替, :%s/old/new/g 。

     :%s/^old/new/g :替换处于开头的old。

    当替换的关键字包含特殊字符,例如"/",那么可以使用转义字符。

     :%s//old//new/g :使用转义字符""来对"/"进行转移。但是这样显得很复杂。

    实际上 :s/old/new/g 中间的分隔符不一定要用"/"。可以使用其他符号代替,例如 :s#old#new#g :s#/old/#new#g 。

     :s/old//g :new的位置什么都不写,就相当于删除old。

    分屏:

     :sp 。按两次Ctrl+w可以上下切换。

    7.VIM的模板

    我们在写shell脚本、Python脚本、Perl脚本等时,我们都要在文档的开头协商 #!/bin/bash 、 #!/usr/bin/python 等。那么我们可以定义一个vim模板,当我们打开一个脚本文件时,自动生成。

    1.打开 /etc/vimrc 文件。

    2.找到这行:

    3.复制一行,修改为: autocmd BufNewFile *.sh 0r /usr/share/vim/vimfiles/template.sh 

    4.创建一个文件 /usr/share/vim/vimfiles/template.sh 。在第一行写上 #!/bin/bash 

     

  • 相关阅读:
    Sleepyhead
    JavaScript学习总结(七)——JavaScript函数(function)
    thymeleaf 使用总结
    JavaScript学习总结(六)——JavaScript判断数据类型总结
    JavaScript学习总结(五)——Javascript中==和===的区别
    JavaScript学习总结(四)——逻辑OR运算符详解
    JavaScript学习总结(三)——逻辑And运算符详解
    JavaScript学习总结(二)——逻辑Not运算符详解
    【WEB基础】HTML & CSS 基础入门(5)边框与背景
    【WEB基础】HTML & CSS 基础入门(4)列表及其样式
  • 原文地址:https://www.cnblogs.com/leokale-zz/p/12531423.html
Copyright © 2020-2023  润新知