1、file 命令及其用法
man file
file /root
/root: directory
file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
Windows
PE: 可移植的可執行文件
Linux
ELF:
一種可執行文件的存儲格式
可執行的可鏈接的文件類型
Linux上常見的可執行二進制文件格式
文件系統是內核的核心功能之一,目的是實現本機上某一個分區上的文件管理
文件系統:
rootfs: 根文件系統
對 Linux 而言,每一個文件都必須是根文件系統下的某一個路徑
必須要通過根文件系統才能訪問
根, root ,用 / 表示
文件系統分爲目錄和文件,除了目錄的都是文件
所有的文件都存放在目錄當中,都能夠通過目錄查找的到
FHS: Filesystem Hierarchy Standard(文件系統層次化標準)
ls / :
2、關鍵路徑說明
/boot: 系統啓動相關的文件,如內核、initrd,以及 grub (bootloader 引導加載器)
如果 /boot 目錄不存在,或對應的幾個文件不存在,系統根本無法啓動。
操作系統啓動時所要用到的內核 vmlinuz ,以及暫時性的小 linux 系統
vmlinuz :
initrd (initramfs) : 磁盤映像文件,類似虛擬機,假的贏怕,能創建分區
/dev: 設備文件
設備文件:
塊設備: 隨機訪問,數據塊, 磁盤,硬盤
字符設備: 線性訪問,鍵盤,輸入 abc 顯示 abc ,鼠標,顯示器
整個屏幕上顯示的內容都是在顯存中按位存儲的
設備號: 主設備號(major) 和次設備號(minor)
一個設備只有有設備文件,才能被 linux 所訪問
在主機上要接入一個新設備,例如插入U盤,要想訪問U盤,首先在 dev 目錄下創建一個設備文件, 由系統自動完成。
Linux 哲學思想,一切皆文件。因此,所有的硬件設備,也被識別爲各個文件
device 設備
ls -l /dev
lrwxrwxrwx. 1 root root 3 Jan 15 05:08 cdrom -> sr0
lrwxrwxrwx. 1 root root 3 Jan 15 05:08 dvd -> sr0
鏈接 (Windows 快捷方式)
brw-rw----. 1 root cdrom 11, 0 Jan 15 05:08 sr0
設備文件沒有大小,直接存儲元數據,而且是作爲設備的訪問入口存在的
/etc : 配置文件
Linux 哲學思想,將程序的配置文件保存爲純文本格式
/home: 用戶的家目錄,每一個用戶的家目錄通常默認爲 /home/USERNAME
/root: root 用戶的家目錄不再 /home 下,並且他的名稱就叫 /root
在傳統的 Unix 系統上,root 用戶是沒有家目錄的,因爲 root 用戶從來都不需要登錄操作系統
Windows 下不允許格式化 C 盤,Linux 不阻止你自殺
生產環境使用普通用戶登錄,不要用 root 用戶登錄,只有要用到管理功能的時候,才切換到 root 用戶。
/lib: 庫文件
靜態庫: .a
動態庫: .dll , .so (shared object)
任何程序和數據都必須要載入內存之後才能被程序所使用,
對於共享庫,任何程序要使用共享庫,把共享庫載入內存就可以使用,如果第二個程序也用到這個共享庫,它就不用再載入了,因爲內存中已經有了,拿來就用。共享庫在內存中只存在一份即可。
對於靜態庫,直接鏈接到程序的地址空間中去,作爲程序的一部分運行的。
靜態方式便於程序單個文件管理,例如把一個程序從一個 linux 主機移動到另一個 linux 主機,只需要把文件從 a 主機複製到 b 主機就能直接運行
但是,如果要使用動態鏈接庫的方式的話,那就意味着它自己的運行還要依賴於庫。所以將程序從 a 主機挪到 b 主機還不夠,還必須保證 b 主機有程序運行時所依賴的共享對象才行。
/lib/modules: 內核模塊文件
/lost+found:
任何一個新建的分區上都會有的目錄,通常跟文件系統相關,是用於存儲那些文件系統在機器突然間斷電的時候,文件沒有輸入屬組,並且尚未來得及保存的文件,是爲了實現丟失並找回的目的的。
/media: 掛載點目錄,掛載移動設備,U盤,光盤
/mnt: 額外的臨時文件系統,比如第二塊硬盤,只要跟當前文件系統沒有關係,都需要掛載
掛載點:
在 Windows 上要想訪問光盤中的內容,光盤放進光驅,雙擊
在 Linux 中,光盤放入光驅以後,必須要將這個設備關聯到當前整個文件系統樹上的某一個節點上,才能進行訪問。這個過程,把某個設備,跟當前文件系統上的某一個目錄建立關聯關係的過程,稱爲掛載。
/dev/cdrom 是設備文件,只是設備上數據的訪問入口
光盤放入光驅後,將 /dev/cdrom 關聯到 /media 目錄下,通過 /media 目錄就可以訪問
/misc
雜項
/opt:
可選目錄
早期通常用於安裝第三方程序,現在放在 /usr/local
/proc
僞文件系統
內核映射文件,大多數文件都是內核中的可調參數,或內核工作的統計數據。
例如網卡,只有內核能訪問,要想看看網卡接收了多少個數據包,發送了多少個數據包,這些統計數據都在這裏面。
所以要想改變操作系統的根本工作屬性,通常都是通過改變這個目錄下的某個文件來完成的。事實上改的不是文件,而是內核屬性,只不過被映射成了文件。都是假文件,事實上不是文件。只不過表現成了文件的樣子而已。
這個目錄是空的,但系統啓動以後文件就不空了。
系統調優,絕大多數都跟這個目錄相關。
整個系統的性能數據的監控,也跟這個目錄相關。
/sys:
僞文件系統
跟硬件設備相關的屬性映射文件,跟內核也相關,只不過把它獨立出來了。
通常用於實現硬件設備管理,尤其是像硬盤這樣的設備。
關機後這個目錄也是空的,只是映射出來的信息而已。
/tmp: /var/tmp
臨時文件系統
存放可以被其他用戶訪問到的文件
如果一個月這個目錄沒有被訪問,這個目錄會被系統腳本自動清除。
每一個人都可以在裏面創建文件,但是只能在裏面刪除自己的文件,卻不能刪除別人創建的文件
/var:
可變化的文件
/bin:
二進制
可執行文件
用戶命令
/sbin: super
管理命令
/usr: universal shared readonly
全局的共享的只讀文件
/usr/bin
/usr/sbin
/usr/lib
/bin 和 /sbin 下放的是跟系統自身啓動相關的命令
/usr/bin 、/usr/sbin 是系統啓動後,爲了提供一些基本功能所具備的命令或可執行程序
/usr/local:
/usr/local/bin
/usr/local/sbin
/usr/local/lib
第三方軟件的安裝路徑
3、命名規則
Linux 是嚴格區分文件名稱大小寫的
1. 長度不能超過 255 個字符
2. 不能使用 / 當文件名
3. 嚴格區分大小寫
除此之外其他任何字符都合法,包括 * 和空格等特殊字符
4、目錄管理
ls
cd
pwd
mkdir: 創建空目錄
-p:
-v: verbose 詳細信息
mkdir x
mkdir x/y 當前目錄
mkdir ./x/y 作爲參數 ./ 可以省略,當前目錄
mkdir -pv m/n/q
linux 哲學思想,沒有信息就是最好的信息,執行完命令沒有信息,說明成功了。
命令行展開
mkdir -pv /mnt/test/x/m /mnt /mnt/test/y
tree:
查看目錄樹
tree x
刪除目錄
rmdir: 刪除空目錄 (remove directory)
文件的創建和刪除
touch 修改文件時間戳
touch a
file a
stat 查看文件狀態
創建文件,可以使用文本編輯器
ASCII:
128 個不同的字符
2^7 = 0, 127
計算機存儲數據的最小單位是字節,一個字節是8位 。
雖然只有7位,但存儲的時候也要用 一個字節 8位來存儲。
ASCII 碼錶,是一個標準,約定大家用同一個二進制表示的字符相同。
漢字:
常用漢字幾千個
所有漢字大概十幾萬個
2^16 = 65535 ,用兩個自己存儲漢字,可以存儲六萬多個漢字
標準 GB18030 、GB2312、GBK、Unicode
0000 1001 0000 1110 : 上、衛
notepad++ 文本編輯器 (純文本)
word 字處理軟件 (文本、樣式)
notepad++ 編輯的文本,拿到 linux 裏可以當配置文件用
nano:
nano hello : 創建一個文本文件 hello
^ : 脫字符 ctrl
^O: 保存
Linux 中的文本編輯器
ls -lh hello
file hello