當前位置:
首頁 > 知識 > linux exec操作文件描述符

linux exec操作文件描述符

linux每一個打開文件都會關聯一個文件描述符,需要的時候我們可以使用exec命令指定一個大於3的數字作為文件


linux默認文件描述符

每打開一個shell就會打開默認的三個文件描述符描0,1,2,分別代表標準輸入,標準輸出和標準錯誤輸出。


exec命令關聯文件描述符

exec 5>/tmp/a.txt 讀方式

exec 5

exec 5<>/tmp/a.txt 讀寫方式

exec 5<&-;exec5>&- 關閉文件描述符

應用案例:在shell腳本中重新關聯標準輸出,從而記錄日誌到指定文件

#!/bin/bash
exec 4>&1 #用4記錄標準輸出
exec 1>/tmp/abc #重定向標準輸出
echo "123"
echo "456"
exec 1>&4 #恢復標準輸出
exec 4>&- #關閉4

運行此腳本,腳本中的echo輸出會輸出到/tmp/abc文件中 腳本第二行用4>&1 是為了記錄標準輸出的文件描述符便於執行完畢後恢復標準輸出,恢復標準輸出也可以用exec 1>/dev/tty


注意點:

  1. echo "hello" >&4 向文件描述符中輸入內容只使用 > 不能用 >> ,此時的 > 不會清空文件
  2. 是否清空文件需要在exec命令關聯文件描述符到文件的時候區別使用 > 或 >>, 例有如下腳本:

    #!/bin/bash exec 4>/tmp/abc echo "123" >&4 echo "456" >&4 exec 4>&-

    則每次執行完腳本後/tmp/abc文件內容都是123
    456
    若把第二行換成exec 4>>/tmp/abc則會追加進去

  • 文件的清空操作是在exec命令的操作時進行的

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

python協程1:yield的使用
Azure經典門戶創建VM,如何設置使用靜態IP地址?
Mina 報文監聽器NioDatagramAcceptor一
Redis 集群搭建詳細指南

TAG:科技優家 |

您可能感興趣

linux中用locate查找文件
如何操作 Unix/Linux 文件系統
linux文件的複製
使用python將excel轉為lua文件
理解 Linux 中的 /etc/services 文件
Vdex Extractor:從Vdex文件反編譯和提取Android Dex位元組碼
Linux系統安裝Oracle,配置etc/security/limits.conf文件
Eclipse編輯Spring配置文件xml時自動提示類class包名
乾貨:詳解 Tomcat 配置文件 server.xml
如何在 Linux 伺服器上設置 ulimit 和文件描述符數限制
Linux rsync同步文件腳本
dbxfs:在 Linux 中本地掛載 Dropbox 文件夾
Spring Boot 配置文件 yml與properties
linux-RHEL/Centos都選擇了xfs文件系統
用fread和fwrite讀寫文件
Win10刪除需要trustedinstaller許可權的文件的方法
redis.conf配置文件詳解
Python使用pandas讀取Excel文件多個WorkSheet的數據並繪製柱狀圖和熱力圖
vue-cli 腳手架中 webpack 配置基礎文件詳解
tensorboard多個events文件顯示紊亂的解決辦法