使用 linux的幾個需要注意的問題 之二

2021-08-25 07:00:10 字數 912 閱讀 6329

1.在shell指令碼中改變當前目錄

cd只能改變current目錄,因此不能指望在乙個指令碼中實現cd ...(long path)的目的,指令碼是通過fork/exec執行的,等於說在乙個新的程序環境中執行的,一旦這個指令碼執行完畢,當前程序的pwd還將是原來的shell的pwd,shell指令碼中的cd對pwd的改變隨著shell指令碼的exit而一同消失,還是老老實實敲路徑吧,其實為了避免敲過於長的路徑,可以將自己的登入路徑設定成那個很長的路徑,另外shell提供了乙個方法,那就是用source執行指令碼,source和cd一樣,都是shell的內建命令,當你執行source abc的時候,並不會以fork/exec的方式來執行abc而是直接讀取abc的每一行,讀一行便執行一行,但是要注意,用source執行shell指令碼的時候,指令碼中不要有exit,否則一下子連shell都退出了

2./etc/passwd維護了乙個uid和使用者名稱的對應關係,而很多程式比如ls -l都需要這個對映關係,因此所有的使用者都必須對該檔案可讀

3.getspnam函式的行為其實就是對/etc/password檔案的f2i行為,將檔案資料轉換為了內部資料,但是為何不將password檔案也定義成二進位制的呢,比如utmpx檔案一樣?將password定義成二進位制是非常方便的,每一行乙個記錄,一條記錄對應乙個結構體,若干個記錄正好是乙個結構體陣列,豈不很好?是很好,但是那樣做的話每個需要讀取password檔案的程式都應該知道這個結構體的文件描述,如果是文字檔案,雖然每個程式也依然需要知道檔案各個欄位的含義,但是卻可以將說明文件寫入同乙個檔案中,比如用注釋的形式存在,unix和linux中很多配置檔案都是這樣的,沒有單獨的文件,頂多乙個隨程式安裝的man/info,由於文件是文字的,因此為了將文件和對應的檔案整合,檔案也最好是文字的,程式設計者看見了檔案,同時也可以隨即參考文件,最終看懂了檔案,開始編碼,省去了文件的管理,這也許就是unix使用人可讀的文字格式的深層次的原因吧。

使用linux的幾個需要注意的問題 後續增補

一.vim編輯檔案時可以實現單詞自動補全嗎?vim自動補全的功能請嘗試ctrl n 二.vim編輯器可以開啟多個視窗嗎?vim在終端中執行,並且在執行時獨佔整個終端,但是在vim內部,你卻可以使用 new name vnew name split name等命令來將vim 視窗 進行分割,實現win...

使用linux的幾個需要注意的問題 後續增補

一.vim編輯檔案時可以實現單詞自動補全嗎?vim自動補全的功能請嘗試ctrl n 二.vim編輯器可以開啟多個視窗嗎?vim在終端中執行,並且在執行時獨佔整個終端,但是在vim內部,你卻可以使用 new name vnew name split name等命令來將vim 視窗 進行分割,實現win...

使用 linux的幾個需要注意的問題 之二

1.在shell指令碼中改變當前目錄 cd只能改變current目錄,因此不能指望在乙個指令碼中實現cd long path 的目的,指令碼是通過fork exec執行的,等於說在乙個新的程序環境中執行的,一旦這個指令碼執行完畢,當前程序的pwd還將是原來的shell的pwd,shell指令碼中的c...