zoukankan      html  css  js  c++  java
  • linux中 > 、>> 的用法

    linux中>表示覆盖原文件内容(文件的日期也会自动更新),>>表示追加内容(会另起一行,文件的日期也会自动更新)

    1 将history命令执行的结果保存到history.log文件中

    [root@gxzs-solr1 ~]# history > history.log      (history.log 文件 会自动生成)
    [root@gxzs-solr1 ~]# cat history.log 

    2 执行命令 curl 'xxx' ,将其返回结果保存到 log.log 中

    [root@gx-solr1 ~]# curl 'http://192.168.0.110:8983/solr/scan_detail/admin/file?_=1544066402749&contentType=text/plain;charset=utf-8&file=managed-schema&wt=json' > log.log

    3 执行命令 cat /etc/hosts , 将其返回结果保存到 hosts.log 中

    [root@slave1 ~]# cat /etc/hosts > hosts.log
    [root@slave1 ~]# more hosts.log 
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

    注意:
    使用  >   ,执行命令时,每次都会新生成一个 > 后面的文件,将之前生成的文件替换掉(文件创建时间也会跟着改变)。

    4 使用 >> 向 hosts.log中追加 当前日期

    [root@slave1 ~]# echo "当前日期是 `date`" >> hosts.log
    [root@slave1 ~]# ls -l hosts.log 
    -rw-r--r--. 1 root root 11 Dec 13 16:04 hosts.log # 查看hosts.log 的日期
    [root@slave1 ~]# cat hosts.log                    # 查看hosts.log 文件的内容
     I am OK! 
    [root@slave1 ~]# echo "当前日期是 `date`" >> hosts.log  # 向hosts.log中追加 当前日期
    [root@slave1 ~]# cat hosts.log                    # 再次查看hosts.log 文件的内容
     I am OK! 
    当前日期是 Thu Dec 13 16:05:18 CST 2018         
    [root@slave1 ~]# ls -l hosts.log                  # 再次查看hosts.log 的日期
    -rw-r--r--. 1 root root 56 Dec 13 16:05 hosts.log
    [root@slave1 ~]# 

     1 和 2 在 Linux 中代表什么

    在Linux系统中0 1 2是一个文件描述符

     从上表看的出来,我们平时使用的

    echo "hello" > t.log 

    其实也可以写成

    echo "hello" 1> t.log

    为什么2>&1要放在后面

    考虑如下一条shell命令

    nohup java -jar app.jar >log 2>&1 &

    我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的:

    本来1----->屏幕 (1指向屏幕)
    执行>log后, 1----->log (1指向log)
    执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)
    ``
    再来分析下
    nohup java -jar app.jar 2>&1 >log &
    本来1----->屏幕 (1指向屏幕)
    执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕)
    执行>log后, 1----->log (1指向log,2还是指向屏幕)

    java代码如下:

    public class Htest {
        public static void main(String[] args) {
            System.out.println("out1");
            System.err.println("error1");
        }
    }

    javac编译后运行下面指令:

    java Htest 2>&1 > log

    你会在终端上看到只输出了"error1",log文件中则只有"out1"

    每次都写">log 2>&1"太麻烦,能简写吗?

    有以下两种简写方式

    &>log
    >&log

    比如上面小节中的写法就可以简写为:

    nohup java -jar app.jar &>log &

    上面两种方式都和">log 2>&1"一个语义。

    那么 上面两种方式中&>和>&有区别吗?

    语义上是没有任何区别的,但是第一中方式是最佳选择,一般使用第一种。

    故乡明
  • 相关阅读:
    Springboot使用ehcache缓存
    Tomcat启用HTTPS协议配置过程
    细说document.ready和window.onload
    科技创新
    SpringBoot的ApplicationRunner
    禁用Chrome的“请停用以开发者模式运行的扩展程序”提示
    论文排版问题
    mathType换行等号对齐
    内部类调用外部类的成员,同名时怎么调用?
    Tomcat的manager app管理web项目
  • 原文地址:https://www.cnblogs.com/luweiweicode/p/14759773.html
Copyright © 2011-2022 走看看