• I/O重定向和管道


    I/O重定向和管道
    内存包括操作系统os和app运行内存
    app运行内存=指令+数据
    读入数据:input
    读出数据:output
    打开的文件都有一个fd:file descriptor(文件描述符)
    Linux给程序三种I/O设备:
    标准输入stdin -0 默认接收来自终端窗口的输入
    标准输出stdout -1 默认输出到终端窗口
    标准错误stderr -2 默认输出到终端窗口
    三种标准描述符固定 , 其他文件文件描述符随机

    当程序ps不显示路径可使用查看编号的方式查找真实路径:
    进入相应编号文件用ll查看即可看到口令对应的路径
    shell也属于一个程序,每个shell窗口都对应一个编号
    echo $$ 查看当前所在shell的编号
    ll /proc/$$/fd (fd 设备)
    ll /dev/st* (默认情况下最后对应的都是终端窗口)

    重定向 redirect
    标准输出
    格式: 命令 操作符号 文件名
    1> 或> 把输出stdout重定向文件(可重定向设备终端,文件可新创建文件)
    2> 把stderr重定向到文件
    &> 把所有的输出重定向到文件
    如果文件已经存在,文件内容会被覆盖

    touch和> 创建新文件的区别:
    touch 新建文件不会覆盖以前文件信息
    > 新建文件会将以前文件信息覆盖,清零文件

    cat /dev/null > 文件 清空文件
    echo命令本身有换行字节
    如果错误重定向的是提示,只是提示被重定向隐藏了,还可以继续操作。
    ls /data /err(标准输出和错误输出都有)
    ls /data/err >/data/stdout.log 2> /data/stderr.log (分别输出到两个文件)
    ls /data /err &> /data/all.log (信息全部输出到一个文件)
    ls /data /err > /data/all.log 2>&1

    >> 追加内容,不覆盖原文件内容(2>> 追加stderr重定向到文件)
    ( ) 合并多个命令的输出
    (ls ;hostname)
    {ls;hostname;} (区别,花括号每个命令后边都要带分号)

    管道符|
    seq 1 10 生成数字序列1-10
    seq -s+ 1 10 生成数字1+..+10
    seq -s+ 1 10 | bc
    管道符只支持标准输出,不支持标准错误的输出,可利用2>&1 或|&实现
    ls /data /err 2>&1 | tr 'a-z' 'A-Z'
    LS /data /err |& tr 'a-z' 'A-Z'

    cat命令 既需要标准输入,也可以标准输出
    cat > file ctrl +d 正常退出
    单行重定向:
    回车一次,重定向一次 人工交互
    cat > cat.log
    多行重定向:<<终止词 EOF
    一次写多行,一次性提交
    cat > cat2.log <<EOF(结束符,可为随意符号 结束时结束符为单独一行)
    PS2 变量:影响多行重定向的提示符 PS2=“ ”
    mail 邮件
    yum -y install postfix(安装邮件)(mailx)
    systemctl start postfix(启用服务)
    ss -ntl (查看服务)
    mail -s 标题 账号
    mail -s test liu 按 Ctrl +d 正常退出
    echo " " | mail -s 标题 邮箱
    mail (收邮件)
    ping www.baidu.com (ping是否与百度可以联网)
    mailrc 邮件配置文件(登录邮箱qq,打开腾讯邮箱,点击设置,账号,imapsmtp服务,下方提示生成授权码
    授权码用来Linux密码发邮件)

    标准输入
    <
    tr 标准输入 转换和删除字符
    tr ‘135’ ‘abc’ 把135转换成abc
    tr ‘123’ ‘abcd’ d没有对应关系,不会转换
    tr ‘1234’ ‘abc’ 4没有对应关系,用最后字母c代替转换
    tr -t ‘1234’ ‘abc’ 不用最后字符做转换,只转换对应字符
    tr ‘a-z’ ‘A-Z’
    tr '[:lower:]' '[:upper:]'
    tr -d 删除属于第一字符的字符集
    tr -s 连续多个字符进行压缩,成一个字符
    tr -t 将第一个字符集对应的字符转化为第二个字符集对应的字符
    tr -c 取字符集的补集
    tr -dc 删除除了选取得字符
    ll /dev/urandom (随机字符文件)
    tr -dc '[:alnum:]' < /dev/urandom (删除除了字母和数字之外的字符)

    echo {1..100} | tr ' ' +|bc
    echo {1..100} | tr ' ' '\n'^C
    hexdump -c win.txt (转换格式)
    tr -d '\015' < win.txt > linux.txt (\015 代表回车 \r)
    tr '\n' '\n\r' <linux.txt > win2.txt (\012 代表换行 \n)
    2&>1 :
    1&>2 : 将标准错误归到标准输出

    rev 字符串倒过来输出
    echo "FBI Waring" |rev rev 字符实现串倒过来输出
    面试:四个重定向方式有错误?

    tee 命令 可以重定向多个目标
    可以同时查看和记录输出
    复杂管道的故障排除
    tee -a 追加字符串

    passwd 修改口令
    Passwd 用户名(交互式)输两次口令
    passwd --stdin 用户名 修改读取口令(用于管道)
    echo 口令 |passwd --stdin 用户名

  • 相关阅读:
    jaxb解析xml工具类
    JQuery的父、子、兄弟节点查找方法
    jw player 配置参数
    jQuery判断当前元素是第几个元素&获取第N个元素
    正则表达式中test,match,exec区别
    php常用函数file
    php常用函数time
    php常用array函数
    php常用string函数
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/llliuhuiii/p/12639557.html
Copyright © 2020-2023  润新知