linux exec操作檔案描述符

2022-08-24 15:48:10 字數 891 閱讀 2624

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

每開啟乙個shell就會開啟預設的三個檔案描述符描0,1,2,分別代表標準輸入,標準輸出和標準錯誤輸出。

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

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

echo "hello" >&4 向檔案描述符中輸入內容只使用 > 不能用 >> ,此時的 > 不會清空檔案

是否清空檔案需要在exec命令關聯檔案描述符到檔案的時候區別使用 > 或 >>,

例有如下指令碼:

#!/bin/bash

exec 4>/tmp/abc

echo "123" >&4

echo "456" >&4

exec 4>&-

則每次執行完指令碼後/tmp/abc檔案內容都是123\n456

若把第二行換成exec 4>>/tmp/abc則會追加進去

linuxexec和檔案描述符妙用技巧

最近在看 精通unix shell指令碼程式設計 時,看到exec outfile,一下看的我就蒙了。網上看了大半天,終於搞定,記錄如下。對於 linux 而言,所有對裝置和檔案的操作都使用檔案描述符來進行的。檔案描述符是乙個非負的整數,它是乙個索引值,並指向核心中每個程序開啟檔案的記錄表。當開啟乙...

Python IO操作 檔案操作

讀檔案使用python內建的函式open 可以開啟乙個檔案 類似c語言 f open file.txt r f.read f.close 檔案讀寫時可能都會出錯,產生ioerror,一旦出錯f.close 就不能用,所以我們可以使用try finally try f open file.txt r ...

基本操作 檔案操作

開啟檔案 f open yesterday r encoding utf 8 讀寫 f open yesterday w encoding utf 8 寫讀 f open yesterday a encoding utf 8 追加寫讀 f open yesterday wb 寫讀 二進位制檔案 vi...