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"一個語義。
那么 上面兩種方式中&>和>&有區別嗎?
語義上是沒有任何區別的,但是第一中方式是最佳選擇,一般使用第一種。
