zoukankan      html  css  js  c++  java
  • Linux常用命令-io操作

    Linux-io操作

      标准输入和输出

    • 标准输入 stdin 0 默认接受来自键盘的输入
    • 标准输出 stdout 1 默认输出到终端窗口
    • 标准错误 stderr 2 默认输出到终端窗口

      I/O重定向

      把输出和错误重新定向到文件

    > 覆盖

    • > 将stdout重定向到文件
    • 2> 把stderr重定向到文件
    • &> 把所有输出重定向到文件

      禁止/允许覆盖

    [root@centos ~]#set -C
    [root@centos ~]#> a.txt
    -bash: a.txt: 无法覆盖已存在的文件
    [root@centos ~]#set +C
    [root@centos ~]#> a.txt

    >> 追加

    • >> 将stdout追加到文件
    • 2>> 把stderr追加到文件
    • &>> 把所有输出追加到文件

    标准输出和错误输出各自定向到不同的文件

    ls b bbbbb > info.log 2> error.log

    合并所有输出

    • &> 覆盖重定向
    • &>> 追加重定向
    • command > /path/to/file.out 2>&1
    • command >> /path/to/file.out 2>&1
    • ():合并多个程序的stdout
    • /dev/null 无限接收的无底洞

      tr 替换或者删除字符

    tr 'a-z' 'A-Z' </etc/issue
    [root@localhost jiangyi]#tr ab 12
    ab
    12
    [root@localhost jiangyi]#tr abc 12  如果后面的位数不足的话,则用最后一位补齐
    abc
    122
    ab
    12
    tr -d abc < issue > issue2 从定向不能为原来的文件,如果说为原来的文件,则文件情况
    -t 用来截断
    [root@localhost jiangyi]#tr -t abcd 12
    abcd
    12cd
    cd
    cd
    -s 压缩 去重
    [root@localhost jiangyi]#tr -s abc
    abc
    abc
    aaabbbccccccccccccccccccccccccccccc
    abc
    -c 取反
    [root@localhost jiangyi]#tr -sc abc
    aaaaaaaaaaaaaabbbbbbbbbbbbbbbcccccccccccccc
    aaaaaaaaaaaaaabbbbbbbbbbbbbbbcccccccccccccc
    aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbcccccccccccccccccdddddddddddddeeeeeeeeeeeeffffffffffffff
    aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbcccccccccccccccccdef
    aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc1111111111111111222222222222333333333333
    aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccc123
    [root@localhost jiangyi]#tr -dc abc
    aaaaaaaaaaaaabbbbbbbbbbbbccccccccccccccccccdddddddddddddddwqweqweqwqeqwqwqwq
    wqqqqqqqqqqqqqqqqqqqqqqqqq
    ctrl+d结束
    [root@localhost jiangyi]#tr -dc "abc
    "
    adsada
    aaa
    sadasdcxzczx
    aacc
    asdadwq
    aa
    [root@localhost jiangyi]#seq 1 10 >f1
    [root@localhost jiangyi]#tr -d "
    " <f1
    [root@localhost jiangyi]tr "
    " " "<f1
    [root@localhost jiangyi] tr " " "
    " <f2

      多行输入

    [root@localhost jiangyi]#cat >f1 <<EOF
    > 1
    > 2
    > 3
    > 4
    > 5
    > 6
    > 7
    > 
    > 8
    > 9
    > EOF
    [root@localhost jiangyi]# cat > f4
    asdas
    sad
    asd
    ctrl+d结束 ctrl+c也可以
    两者区别
    第一种方式输出结束,文件才会产生
    第二方式,回车一次就会写入文件
    EOF 约定俗成
    (多行重定向 不结束不会生成文件
    单行重定向 回车一次就会写入文件)

      管道

    管道使用“|”来连接命令

    命令1|命令2|命令3|。。。

    • 将命令1的stdout发给命令2的stdin,将命令2的stdout发给命令3的stdin
    • stderr默认不能通过管道转发,可以使用|&实现
      • [root@centos ~]#ls /daopda|& tr -s 'a-z' 'A-Z' LS: 无法访问/DAOPDA: 没有那个文件或目录
    • 作用一般是用来组合多种工具
      • ls |tr 'a-z' 'A-Z'
    [root@localhost jiangyi]#ls /dadadasda|tr -s "a-z" "A-Z"
    ls: cannot access /dadadasda: No such file or directory
    [root@localhost jiangyi]#ls|tr "a-z" "A-Z"
  • 相关阅读:
    PHP入门
    PHP入门
    PHP入门
    BatsingJSLib 2.3、Ajax上传多个文件
    href的那些事
    从校招网申看华为
    单片机C语言探究--为什么变量最好要赋初值
    Linux学习笔记-Ubuntu添加右键菜单打开终端
    重载--面向对象的鸡肋,强类型语言的软肋
    vs2015发布项目到虚拟主机组策略阻止csc.exe程序问题
  • 原文地址:https://www.cnblogs.com/Xiao_Xu/p/11279624.html
Copyright © 2011-2022 走看看