ls -l 命令中文件類型 c 的含義
我想知道 ls 命令中的 c 類型是什麼。
我在 /dev/stdin 跟踪符號連結並以 /dev/pts/0 結束
$ ls -l /dev/pts/0 crw--w---- 1 blue tty 136, 0 Apr 8 21:50 /dev/pts/0
我可以看到模式輸出中的第一個符號是
c
. 現在我試圖找出這意味著什麼。我可以找到一些資訊,但 c 沒有列出,其中一些似乎也有點錯誤。至少在我的盒子上,符號連結有一個小寫的 l,而不是大寫的 L。
d if the entry is a directory; a if the entry is an append-only file; D if the entry is a Unix device; L if the entry is a symbolic link; P if the entry is a named pipe; S if the entry is a socket; - if the entry is a plain file.
來源: http: //manpages.ubuntu.com/manpages/jammy/en/man1/ls.1plan9.html
我可以讀到
man pts
這些是偽終端主從對。ptmx, pts - 偽終端主機和從機
當程序打開 /dev/ptmx 時,它會獲取偽終端主機的文件描述符,並在 /dev/pts 目錄中創建偽終端從設備。通過打開 /dev/ptmx 獲得的每個文件描述符都是一個獨立的偽終端主機,具有自己的關聯從機,可以通過將文件描述符傳遞給 ptsname(3) 來找到其路徑。
那麼
c
代表什麼?我認為這意味著這是一個pseudoterminal slave device
.編輯:
在閱讀和思考更多之後,我猜是
c
因為它本質上是一個控制台。
“c”表示該設備是“字元特殊設備”。如果您查看,
/dev
您還會看到“b”表示“塊特殊設備”,例如所有磁碟。參見維基百科。設備文件允許直接訪問設備驅動程序。從歷史上看,UNIX 會同時為塊結構設備(如磁碟)提供字元設備和塊設備。“c” 設備允許直接訪問設備而無需通過系統緩衝區。這個名字有點誤導,“raw”會更好,但歷史決定了“c”。對於終端,這允許一次輸出或輸入一個或多個字元。對於磁碟,雖然它不允許字節級訪問,但呼叫者必須確保所有塊對齊和定址都由呼叫者完成。“b”設備可能更好地稱為“緩衝”設備。I/O 對系統的緩衝區進行,並在系統決定的某個點移動到磁碟。