Linux是目前應(yīng)用最廣泛的服務(wù)器操作系統(tǒng),基于Unix,開源免費(fèi),由于系統(tǒng)的穩(wěn)定性和安全性,市場占有率很高,幾乎成為程序代碼運(yùn)行的最佳系統(tǒng)環(huán)境。Linux可以長時間地運(yùn)行我們編寫的程序代碼,那么掌握Linux的相關(guān)命令,以此來讓操作系統(tǒng)反饋我們需要知道的結(jié)果,就是一個程序員不可或缺的技能。今天我們就來聊聊linux的基礎(chǔ)結(jié)構(gòu)和常用的命令。
一、linux的目錄結(jié)構(gòu)
Linux系統(tǒng)各個目錄的作用:
/:
根目錄。有且只有一個根目錄。所有的東西都是從根目錄開始。舉個例子:當(dāng)你在終端里輸入“/home”,你其實(shí)是在告訴服務(wù)器,先從/(根目錄)開始,再進(jìn)入到home目錄。
/root:
這是系統(tǒng)管理員(root user)的目錄。對于系統(tǒng)來說,系統(tǒng)管理員就好比是上帝,它能對系統(tǒng)做任何事情,甚至包括刪除你的文件。因此,請小心使用root帳號。
/bin, /sbin, /usr/bin, /usr/sbin:
這是系統(tǒng)預(yù)設(shè)的執(zhí)行文件的放置目錄,比如 ls 就是在/bin/ls 目錄下的。值得提出的是,/bin, /usr/bin 是給系統(tǒng)用戶使用的指令(除root外的普通用戶),而/sbin, /usr/sbin 則是給root使用的指令。
/etc:
這里主要存放了系統(tǒng)配置方面的文件。舉個例子:你安裝了docker這個套件,當(dāng)你想要修改docker配置文件的時候,你會發(fā)現(xiàn)它們(配置文件)就在/etc/docker目錄下。
/dev:
/dev目錄用來保存設(shè)備文件的【dev并不是存放外部設(shè)備的驅(qū)動程序。而是一個訪問這些外部設(shè)備的端口】,每個文件指向一個系統(tǒng)設(shè)備。用戶的程序可以通過使用這些設(shè)備文件,對真實(shí)的硬件設(shè)備進(jìn)行操作。如: hda是第1個IDE硬盤,sda是第1個SCSI硬盤【IDE和SCSI其實(shí)就是硬盤的兩種接口。其中,IDE類型的硬盤主要用于個人PC電腦,而SCSI類型的硬盤主要用于服務(wù)器】
設(shè)備文件分為兩種:塊設(shè)備文件(b)和字符設(shè)備文件(c)
設(shè)備文件一般存放在/dev目錄下,對常見設(shè)備文件作如下說明:
/dev/hd[a-t]:IDE設(shè)備
/dev/sd[a-z]:SCSI設(shè)備【小型計(jì)算機(jī)系統(tǒng)接口(英語:Small Computer System Interface; 簡寫:SCSI),一種用于計(jì)算機(jī)和智能設(shè)備之間(硬盤、軟驅(qū)、光驅(qū)、打印機(jī)、掃描儀等)系統(tǒng)級接口的獨(dú)立處理器標(biāo)準(zhǔn)。 SCSI是一種智能的通用接口標(biāo)準(zhǔn)?!?/p>
/dev/fd[0-7]:標(biāo)準(zhǔn)軟驅(qū)
/dev/md[0-31]:軟raid設(shè)備
/dev/loop[0-7]:本地回環(huán)設(shè)備
/dev/ram[0-15]:內(nèi)存
/dev/null:無限數(shù)據(jù)接收設(shè)備,相當(dāng)于黑洞
/dev/zero:無限零資源
/dev/tty[0-63]:虛擬終端
/dev/ttyS[0-3]:串口
/dev/lp[0-3]:并口
/dev/console:控制臺
/dev/fb[0-31]:framebuffer
/dev/cdrom => /dev/hdc
/dev/modem => /dev/ttyS[0-9]
/dev/pilot => /dev/ttyS[0-9]
/dev/random:隨機(jī)數(shù)設(shè)備
/dev/urandom:隨機(jī)數(shù)設(shè)備
(PS:隨機(jī)數(shù)設(shè)備,后面我會再寫篇博客總結(jié)一下)
/dev目錄下的節(jié)點(diǎn)是怎么創(chuàng)建的?
devf或者udev會自動幫你創(chuàng)建得。
kobject是sysfs文件系統(tǒng)的基礎(chǔ),udev通過監(jiān)測、檢測sysfs來獲取新創(chuàng)建的設(shè)備的。
/home:
這里主要存放你的個人數(shù)據(jù)。具體每個用戶的設(shè)置文件,用戶的桌面文件夾,還有用戶的數(shù)據(jù)都放在這里。每個用戶都有自己的用戶目錄,位置為:/home/用戶名。當(dāng)然,root用戶除外。
/tmp:
這是臨時目錄。對于某些程序來說,有些文件被用了一次兩次之后,就不會再被用到,像這樣的文件就放在這里。有些linux系統(tǒng)會定期自動對這個目錄進(jìn)行清理,因此,千萬不要把重要的數(shù)據(jù)放在這里。
/usr:
在這個目錄下,你可以找到那些不適合放在/bin或/etc目錄下的額外的工具。比如像游戲阿,一些打印工具拉等等。/usr目錄包含了許多子目錄:/usr/bin目錄用于存放程序;/usr/share用于存放一些共享的數(shù)據(jù),比如音樂文件或者圖標(biāo)等等;/usr/lib目錄用于存放那些不能直接運(yùn)行的,但卻是許多程序運(yùn)行所必需的一些函數(shù)庫文件。你的軟件包管理器(應(yīng)該是“新立得”吧)會自動幫你管理好/usr目錄的。
/opt:
這里主要存放那些可選的程序。你想嘗試最新的firefox測試版嗎?那就裝到/opt目錄下吧,這樣,當(dāng)你嘗試完,想刪掉firefox的時候,你就可以直接刪除它,而不影響系統(tǒng)其他任何設(shè)置。安裝到/opt目錄下的程序,它所有的數(shù)據(jù)、庫文件等等都是放在同個目錄下面。
舉個例子:剛才裝的測試版firefox,就可以裝到/opt/firefox_beta目錄下,/opt/firefox_beta目錄下面就包含了運(yùn)行firefox所需要的所有文件、庫、數(shù)據(jù)等等。要刪除firefox的時候,你只需刪除/opt/firefox_beta目錄即可,非常簡單。
/usr/local:
這里主要存放那些手動安裝的軟件,即不是通過“新立得”或apt-get安裝的軟件。它和/usr目錄具有相類似的目錄結(jié)構(gòu)。讓軟件包管理器來管理/usr目錄,而把自定義的腳本(scripts)放到/usr/local目錄下面,我想這應(yīng)該是個不錯的主意。
/media:
有些linux的發(fā)行版使用這個目錄來掛載那些usb接口的移動硬盤(包括U盤)、CD/DVD驅(qū)動器等等。
/var:
統(tǒng)上跑了很多程序,那么每個程序都會有相應(yīng)的日志產(chǎn)生,而這些日志就被記錄到這個目錄下,具體在/var/log 目錄下,另外mail的預(yù)設(shè)放置也是在這里。
/mnt:
系統(tǒng)提供該目錄是為了讓用戶臨時掛載別的文件系統(tǒng)的,我們可以將光驅(qū)掛載在/mnt/上,然后進(jìn)入該目錄就可以查看光驅(qū)里的內(nèi)容了。
/proc:
這個目錄是一個虛擬的目錄,它是系統(tǒng)內(nèi)存的映射,我們可以通過直接訪問這個目錄來獲取系統(tǒng)信息。
Linux在啟動一個進(jìn)程時,系統(tǒng)會在/proc下創(chuàng)建一個以PID命名的文件夾,在該文件夾下會有我們的進(jìn)程的信息,其中包括一個名為exe的文件即記錄了絕對路徑。
/boot:
這里存放的是啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件,自己的安裝別放這里
/srv:
service縮寫,該目錄存放一些服務(wù)啟動之后需要提取的數(shù)據(jù)。
/sys:
這是 Linux2.6 內(nèi)核的一個很大的變化。該目錄下安裝了 2.6 內(nèi)核中新出現(xiàn)的一個文件系統(tǒng) sysfs 。
/run:
是一個臨時文件系統(tǒng),存儲系統(tǒng)啟動以來的信息。當(dāng)系統(tǒng)重啟時,這個目錄下的文件應(yīng)該被刪掉或清除。如果你的系統(tǒng)上有 /var/run 目錄,應(yīng)該讓它指向 run。
二、linux常用命令
2.1 操作文件及目錄
2.2 系統(tǒng)常用命令
2.3 壓縮解壓縮
2.4 文件權(quán)限操作
我們先來了解rwx這幾個標(biāo)記的含義。
權(quán)限 | 權(quán)限數(shù)值 | 二進(jìn)制 | 具體作用 |
r | 4 | 00000100 | read,讀取。當(dāng)前用戶可以讀取文件內(nèi)容,當(dāng)前用戶可以瀏覽目錄。 |
w | 2 | 00000010 | write,寫入。當(dāng)前用戶可以新增或修改文件內(nèi)容,當(dāng)前用戶可以刪除、移動目錄或目錄內(nèi)文件。 |
x | 1 | 00000001 | execute,執(zhí)行。當(dāng)前用戶可以執(zhí)行文件,當(dāng)前用戶可以進(jìn)入目錄。 |
依照上面的表格,權(quán)限組合就是對應(yīng)權(quán)限值求和,如下:
7 = 4 + 2 + 1 讀寫運(yùn)行權(quán)限
5 = 4 + 1 讀和運(yùn)行權(quán)限
4 = 4 只讀權(quán)限
因此,大家也就明白了 chmod 777 filename 和chmod 754 filename 命令的含義了。
chmod 777 filename 這句命令的意思是將filename文件的讀寫運(yùn)行權(quán)限賦予文件所有者,把讀寫運(yùn)行權(quán)限的權(quán)限賦予群組用戶,把讀寫運(yùn)行權(quán)限賦予其他用戶。
chmod 754 filename 這句命令的意思是將filename文件的讀寫運(yùn)行權(quán)限賦予文件所有者,把讀和運(yùn)行的權(quán)限賦予群組用戶,把讀的權(quán)限賦予其他用戶。
常用 chmod -R 777 filename 其中 -R 表示:對目前目錄下的所有文件與子目錄進(jìn)行相同的權(quán)限變更(即以遞回的方式逐個變更)
三、linux系統(tǒng)常用快捷鍵及符號命令