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 --在这个配置文件空的地方加上这一句就可以了


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

  • 相关阅读:
    JVM 综述
    看 Netty 在 Dubbo 中如何应用
    Netty 心跳服务之 IdleStateHandler 源码分析
    Netty 高性能之道
    Netty 解码器抽象父类 ByteToMessageDecoder 源码解析
    Netty 源码剖析之 unSafe.write 方法
    Netty 出站缓冲区 ChannelOutboundBuffer 源码解析(isWritable 属性的重要性)
    Netty 源码剖析之 unSafe.read 方法
    Netty 内存回收之 noCleaner 策略
    Netty 源码阅读的思考------耗时业务到底该如何处理
  • 原文地址:https://www.cnblogs.com/yczlove/p/7326715.html
Copyright © 2011-2022 走看看