zoukankan      html  css  js  c++  java
  • 管道

    --


    管道  


    # stat file1 | tail -3 --查看stat file1命令的结果的后三行
    # tail -5 /etc/passwd |head -1 --查看此文件的倒数第五行
    # head -5 /etc/passwd |tail -1 --查看此文件的正数第五行
    # cat /etc/passwd |wc -l --统计此文件有多少行
    # cat /etc/passwd |grep root |wc -l --统计此文件里有root关键字的行数


    # cd /etc
    # grep root * --表示在当前目录的所有文件里查找有root关键字的行


    # grep root * |cut -d":" -f1 |sort|uniq -c |sort -n -r

    --cut -d":" -f1 表示以:为分隔符,截取第一列
    --sort  表示把行排序(默认会比较第一个字符来排序,第一个相同则比较第二个......以此类推)
    --uniq -c 表示把挨在一起的(不相邻的行不行)相同的行留下唯一一个,重复的都去掉;-c代表统计重复的有多少个
    --sort -n -r  前面的-n参数表示以数字排序(默认情况11会排到2前面,加了-n后11会排到2后面);-r表示反向;所以-n -r合起来就是以数字从大到小排序


    ========================================================================

    重定向


    0 标准输入 ----- 终端 --------标准输出 1


    错误输出
    2

    标准输入:指你键盘的输入,或者敲的命令
    标准输出:指结果里正确的输出,可以用> 或者 1> 来重定向
    错误输出:指结果里错误的输出,可以用 2> 来重定向

    # ls 1 2
    ls: cannot access 2: No such file or directory --错误输出
    1 --正确输出,也就是标准输出

    # ls 1 2 > /dev/pts/2 --把正确的重定向到/dev/pts/2,错误的还是会默认显示到当前终端
    ls: cannot access 2: No such file or directory

    # ls 1 2 2> /dev/pts/2 --把错误的重定向,正确的显示到当前终端
    1

    # ls 1 2 &> /dev/pts/2
    # ls 1 2 >& /dev/pts/2
    # ls 1 2 > /dev/pts/2 2>&1 --这三个写法都是正确和错误一起重定向

    重定向的其它用法:

    实验1:利用重定向自动修改用户密码
    # pwd
    /test

    # echo > passwd.txt <<EOF --这就是表示创建一个文件,内容为两行123456;EOF是一段标记,就是一个固定用法
    > 123456
    > 123456
    > EOF


    # passwd root < passwd.txt &> /dev/null --把root用户密码改成123456.并且信息都扔掉(/dev/null类似一个黑洞设备)

    扩展一个小错误:
    # passwd root < passwd.txt --这样改密码时出现了下面的错误,是因为selinux的影响
    Changing password for user root.
    New password: Password change aborted.
    New password: Password change aborted.
    New password: Password change aborted.
    passwd: Have exhausted maximum number of retries for service

    解决方法
    # setenforce 0 --设置selinux为警告调试模式,就可以解决这个问题

    实验2:手动交互式发邮件
    # /etc/init.d/postfix restart --启动postfix邮件服务器(如果没有此服务文件,则yum install postfix安装就可以)
    # echo > /var/mail/root --清空root用户的邮箱(这里就是把echo得到的空行,重定向到后面的文件,覆盖后面文件的内容)

    # mail -s "哈哈" root --这里表示用本机root用户给本机root用户发一封邮件,主题为哈哈
    你好 --正文内容为你好
    . --.号表示结束
    EOT

    # cat /var/mail/root --查看是否收到了此邮件

    实验3:利用重定向或管道非交互发邮件
    # mail -s "邮件主题" root < mail.txt --把mail.txt里的内容做为邮件正文重定向给这封邮件发给root用户
    # echo 邮件正文 | mail -s "邮件主题" root --用管道的用法来实现发邮件


    实验4:覆盖与追加

    # echo abc > 123.txt --如果123.txt不存在,则创建123.txt,并内容修改为abc;如果123.txt文件存在,则只把原内容修改为abc

    # echo cba >> 123.txt --两个>符号,就是原内容不变,再追加新的内容

    # cat > 123.txt << EOF --如果123.txt不存在,则创建它,并加入两行内容111 222;存在则覆盖它原来的内容
    111
    222
    EOF

    # cat >> 123.txt << HAHA --相比于上一条,这是追加内容,而且标记不一定要用EOF,只要前后一致成对出现就可以
    > 333
    > 444
    > HAHA

    ==================================================================================


    bash环境下命令操作的一些技巧

    # clear --此命令可以清屏,也可以使用快捷键ctrl+l来做
    # history --查看你在当前终端的命令历史记录(平时可以通过向上或向下箭头来翻命令历史,HOME键可以直接移到一条命令的开头,END键可以直接移到一条命令的结尾)

    # !500 --表示执行history里查看到第500条命令

    ctrl+shift+r --进入命令匹配模式


    !$ --此符号表示上一条命令的后面部分,如
    # ls /share/20170717/rhel-server-6.5-x86_64-dvd.iso
    # ll !$

    ==================================================================================

    文本编辑器
    记事本 写字板 word wps

    gedit emacs vi/vim


    编辑器常见的功能:
    移动,删除,复制,粘贴,编辑修改,查找与替换等


    vi vim (增强版vi,现在基本各种linux版本都带有vim)


    vi 有三种模式:

    1,一般普通模式: (用vi刚打开一个文件就默认为一般普通模式)
    2,编辑模式: i I o O a A r R
    3,命令行模式: : / ?

    # cp /etc/passwd /test/passwd
    # vim /test/passwd --因为/etc/passwd文件非常重要,不能随便乱改,所以我这里拷贝一份,打开这个拷贝的副本来做实验操作


    移动相关(一般普通模式):
    向上,向下,向左,向右箭头
    --ctrl+b 向上翻页 = page up
    --ctrl+f 向下翻页 = page down
    ctrl+d 向下移动半页
    ctrl+u 向上移动半页
    --G 移动到页末 =shift +g
    --gg 移动到页头
    --0 移动到行头 = home
    --$ 移动到行末 = end
    n(代表数字)+回车 向下移动N行

    删除,复制,粘贴(一般普通模式)
    x 向后删除一个字符 = delete
    X 往前删除一个字符 = backspace
    --dd 直接删除光标所在行 ndd (n代表数字,删除n行)
    --yy 复制光标所在行 nyy (n代表数字,复制n行)
    --p 粘贴
    --u 回退上一次操作 按一次u只能回退一次
    --ctrl+r 重做上一次操作

    进入编辑模式:
    --i 当前insert
    I 行头insert
    a 向后一个字符insert
    A 行末insert
    --o 下一行insert
    O 上一行insert
    r 替换光标所在的字符
    R 从光标处向后一直替换
    --ESC 从编辑模式回退到一般模式

    补充一:
    有些时候复制其它地方的内容到你的编辑文本中,记录一定要在编辑模式下用鼠标粘贴;如果在一般普通模式下粘贴,可能会少几个开头的字符

    补充二:
    有些时候,把网络上的一些配置段,复制粘贴到我们vim编辑的文本中,可能会造成格式不紧凑;
    解决方法:
    先在编辑器里
    :set paste
    再进入编辑模式,粘贴上去


    查找与替换:
    -- /word 查找单词 n 向下查找 N 向上查找
    -- :1,$s/old/new/g 从第一行到最后一行都用new替换old
      :%s/old/new/g 从第一行到最后一行都用new替换old
    -- :n1,n2s/old/new/g 从n1行到n2行用new替换old
      :1,$s/old/new/gc 从第一行到最后一行都用new替换old,多加了一个c就可以要求用户确认哪些换哪些不换

    --:set number 或者 : set nu 把每一行都加上行号
    --:set nonumber 或者 : set nonu 去掉每一行前的行号
    :n(代表数字)+回车 直接把光标定位到n行

    --:w 保存 (write)
    --:q 退出 (quit)
    --:wq 保存并退出 = shift+zz
    -- +! 表示强制保存或者退出

    如果你希望vim打开时默认就有行号,可以这样做
    # vim /etc/vimrc

    set number --在这个配置文件空的地方加上这一句就可以了


    ====================================================================================

  • 相关阅读:
    Android消息机制(Handler)详述
    Android自定义组件-以饼状图并实现点击事件为例
    Markdown中tab的解析与4个空格 问题
    策略模式(Strategy)
    观察者模式(Observer)
    适配器模式(Adapter Class/Object)
    建造者模式(Builder)
    简单工厂模式、工厂方法模式、抽象工厂模式
    单例模式(Singleton)
    工具推荐:前后端一体化部署,效能提升开源“神器”
  • 原文地址:https://www.cnblogs.com/yczlove/p/7326715.html
Copyright © 2011-2022 走看看