• Linux命令--- /dev/null和/dev/tty


    特殊文件: /dev/null和/dev/tty

        Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty。其中/dev/null将会丢掉所有写入它的数 据,换句换说,当程序将数据写入到此文件时,会认为它已经成功完成写入数据的操作,但实际上什么事都没有做。如果你需要的是命令的退出状态,而非它的输 出,此功能会非常有用,见如下Shell代码:
        /> vi test_dev_null.sh
        
        #!/bin/bash
        if grep hello TestFile > /dev/null
        then
            echo "Found"
        else
            echo "NOT Found"
        fi
        在vi中保存并退出后执行以下命令:
        /> chmod +x test_dev_null.sh  #使该文件成为可执行文件
        /> cat > TestFile
        hello my friend
        CTRL + D                             #退出命令行文件编辑状态
        /> ./test_dev_null.sh
        Found                                 #这里并没有输出grep命令的执行结果。
        将以上Shell脚本做如下修改:
        /> vi test_dev_null.sh
        
        #!/bin/bash
        if grep hello TestFile
        then
            echo "Found"
        else
            echo "NOT Found"
        fi
        在vi中保存退出后,再次执行该脚本:
        /> ./test_dev_null.sh
        hello my friend                      #grep命令的执行结果被输出了。
        Found
        
        下面我们再来看/dev/tty的用途。当程序打开此文件时,Linux会自动将它重定向到一个终端窗口,因此该文件对于读取人工输入时特别有用。见如下Shell代码:
        /> vi test_dev_tty.sh
        
        #!/bin/bash
        printf "Enter new password: "    #提示输入
        stty -echo                               #关闭自动打印输入字符的功能
        read password < /dev/tty         #读取密码
        printf " Enter again: "             #换行后提示再输入一次
        read password2 < /dev/tty       #再读取一次以确认
        printf " "                               #换行
        stty echo                                #记着打开自动打印输入字符的功能
        echo "Password = " $password #输出读入变量
        echo "Password2 = " $password2
        echo "All Done"

        在vi中保存并退出后执行以下命令:
        /> chmod +x test_dev_tty.sh #使该文件成为可执行文件
        /> ./test_dev_tty
        Enter new password:             #这里密码的输入被读入到脚本中的password变量
        Enter again:                          #这里密码的输入被读入到脚本中的password2变量
        Password = hello
        Password2 = hello
        All Done

  • 相关阅读:
    Hadoop- Cluster Setup
    Hadoop- Cluster Setup
    【网络协议】动态主机配置协议DHCP
    【网络协议】动态主机配置协议DHCP
    数据流(任务并行库 TPL)
    数据流(任务并行库 TPL)
    js数据存储.html
    对象操作(2).html
    对象操作(1).html
    对象forin循环.html
  • 原文地址:https://www.cnblogs.com/tianzhiyi/p/5312015.html
Copyright © 2020-2023  润新知