衆所周知,前段時間華爲在自家的Matebook上裝上了深度linux,一時之間引來大家熱議。而在近日,華爲更是將絕大部分自家的筆記本電腦換上了深度linux,尤其是一些新電腦,不再有windows版本,直接上深度linux系統。而從實際銷售情況來看,據經銷商表示沒有windows的華爲筆記本一樣賣得不錯,甚至還頗受歡迎,有消費者表示,就喜歡安裝了linux版本的華爲筆記本。今天就帶大家來了解一下Linux系統到底是個什麽怪物。
操作系統(Operation System)
首先開片一張圖帶你了解什麽是操作系統:
操作系統是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。操作系統需要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入設備與輸出設備、操作網絡與管理文件系統等基本事務。操作系統也提供一個讓用戶與系統交互的操作界面。在計算機中,操作系統是其最基本也是最爲重要的基礎性系統軟件。從計算機用戶的角度來說,計算機操作系統體現在其提供的各項服務;從程序員的角度來說,其主要是指用戶登錄的界面或者接口;如果從設計人員的角度來說,就是指各式各樣模塊和單元之間的聯系。
沒有安裝操作系統的計算機,通常被稱爲裸機,如果想在裸機上運行自己所編寫的程序,就必須用機器語言書寫程序。如果計算機上安裝了操作系統,就可以在操作系統上安裝支持的高級語言環境,用高級語言開發程序。
不同應用領域的主流操作系統
- 桌面操作系統
- Windows 系列用戶群體大
- macOS 適合于開發人員
- Linux 應用軟件少
- 服務器操作系統
- Linux安全、穩定、免費占有率高
- Windows Server付費占有率低
- 嵌入式操作系統:機頂盒、數字電視、網絡電話、程控交換機、手機、PDA等
- Linux
- 移動設備操作系統
- iOS
- Android(基于 Linux)
由上可知,Linux在各個領域都有存在。
Linux發展史
- Unix
1969 年Ken Thompson 當時在實驗室無聊時,爲了讓一台空閑的電腦上能夠運行 "星際旅行(Space Travel)" 遊行,在 8 月份左右趁著其妻子探親的時間,用了 1 個月的時間,使用彙編寫出了 Unix 操作系統的原型。1971 年,同樣酷愛 "星際旅行(Space Travel)" 的 Dennis M.Ritchie 爲了能早點兒玩上遊戲,加入了 Thompson 的開發項目,合作開發 UNIX。1973 年初,Dennis M.Ritchie 在 B 語言 的基礎上最終設計出C 語言的主體,Thompson 和 Ritchie 迫不及待地開始用它完全重寫了現在大名鼎鼎的 Unix 操作系統。
- Minix
因爲 AT&T(通用電氣) 的政策改變,在 Version 7 Unix 推出之後,發布新的使用條款,將 UNIX 源代碼私有化,在大學中不能再使用 UNIX 源代碼。Andrew S. Tanenbaum(塔能鮑姆) 教授爲了能 在課堂上教授學生操作系統運作的細節,決定在不使用任何 AT&T 的源代碼前提下,自行開發與 UNIX 兼容的操作系統,以避免版權上的爭議。以 小型 UNIX(mini-UNIX)之意,將它稱爲 MINIX。
- Linux
1991 年 林納斯(Linus) 就讀于赫爾辛基大學期間,對 Unix 産生濃厚興趣,嘗試著在Minix 上做一些開發工作。林納斯 利用 GNU 的 bash 當做開發環境,gcc 當做編譯工具,編寫了 Linux 內核,一開始 Linux 並不能兼容 Unix,即 Unix 上跑的應用程序不能在 Linux 上跑,即應用程序與內核之間的接口不一致,一開始 Linux 只適用于 386,後來經過全世界的網友的幫助,最終能夠兼容多種硬件。
- Linux 發行版
Linux 發行版(也被叫做 GNU/Linux 發行版)通常包含了包括桌面環境、辦公套件、媒體播放器、數據庫等應用軟件。常見的發行版本如下:
Elementary OS:號稱是世界上最“漂亮”的發行版,設計精巧,精美出色的桌面,環境預裝的應用程序不多;
Linux Mint:對于Linux新手來說,這是一個很好的選擇,適用于從Windows/Mac系統切換的用戶,完整的多媒體支持,真正實現開箱即用,大量定制選項;
Arch Linux:吸引經驗豐富的用戶,而不是初學者,巨大的定制潛力,Arch Linux提供了一種更加友好的Linux體驗,不適合容易放棄的人;
Ubuntu:Ubuntu是很好的選擇,安全穩定的LTS版本,Lubuntu spin非常適合低功耗的個人電腦;
Tails:一個專爲有隱私意識的人准備的發行版,強調安全性和隱私性,仍然維護用戶友好的UI,功能比較基本;
CentOS:Red Hat Linux企業版的分支,專爲穩定性而設計,非常適合服務器使用,不太適合日常桌面使用;
當然還有其他的很多發行版本,比如國産比較火爆的深度Deepin操作系統,Redhat,Fedora,openSUSE,Debian,Manjaro,Mageia等等。
Linux文件和目錄
我們通過Windows來對比兩者文件系統的區別:
在 Windows 下,打開 “計算機”,我們看到的是一個個的驅動器盤符:
每個驅動器都有自己的根目錄結構,這樣形成了多個樹並列的情形。
我們以Ubuntu爲例看看,在 Linux 下,我們是看不到這些驅動器盤符,我們看到的是文件夾(目錄):
Ubuntu 沒有盤符這個概念,只有一個根目錄 /,所有文件都在它下面。
Linux 主要目錄速查表
常用 Linux 命令的基本使用
很多人可能在電視或電影中看到過類似的場景,黑客面對一個黑色的屏幕,上面飄著密密麻麻的字符,梆梆一頓敲,就完成了竊取資料的任務。
Linux 剛出世時沒有什麽圖形界面,所有的操作全靠命令完成,就如同電視裏的黑客那樣,充滿了神秘與晦澀。近幾年來,盡管 Linux 發展得非常迅速,圖形界面越來越友好,但是在真正的開發過程中,Linux 命令行的應用還是占有非常重要的席位,而且許多Linux功能在命令行界面要比圖形化界面下運行的快。可以說不會命令,就不算會 Linux。
最常用的基礎命令:
- 在敲出 文件/目錄/命令 的前幾個字母之後,按下 tab 鍵如果輸入的沒有歧義,系統會自動補全如果還存在其他 文件/目錄/命令,再按一下 tab 鍵,系統會提示可能存在的命令
- 按 上/下 光標鍵可以在曾經使用過的命令之間來回切換
- 如果想要退出選擇,並且不想執行當前選中的命令,可以按 ctrl + c
終端命令格式:
command [-options] [parameter]
說明:
- command:命令名,相應功能的英文單詞或單詞的縮寫
- [-options]:選項,可用來對命令進行控制,也可以省略
- parameter:傳給命令的參數,可以是 零個、一個 或者 多個
其他常用命令:
1. 啓動終端: ctr+alt+t
2. 終端字體放大: ctr+shift+'+',終端字體縮小: ctr+'-'
3. ls: 查看當前目錄下的文件信息
4. pwd: 查看目錄所在的路徑
5. touch: 創建文件
6. mkdir: 創建文件夾
7. rmdir: 刪除文件夾,提示:只能是空文件夾
8. rm: 默認刪除的是文件,如果刪除文件夾需要加上-r選項,-r:以遞歸的方式把文件夾下的所有文件信息刪除掉
9. cd:切換目錄
9.1 cd 目錄名 : 切換到指定目錄
9.2 cd .: 切換到當前目錄
9.3 cd ..: 切換到上一級目錄
9.4 cd ~: 切換到當前用戶的目錄
9.5 cd: 等價與cd ~ 切換到當前用戶的目錄
9.6 cd -: 切換到上一次目錄
10. 絕對路徑: 從根目錄算起的路徑叫做絕對路徑,比如: /home/python
11. 相對路徑: 從當前目錄算起的路徑叫做相對路徑, 比如: ./AAA ../BBB
12. 路徑的使用總結: 如果離當前目錄近使用相對路徑,如果離根目錄近使用絕對路徑,如果進入的是中間目錄建議使用絕對路徑
13. 自動補全: tab鍵
14. cp: 拷貝
14.1 cp 文件名 路徑: 把文件拷貝到指定路徑
14.2 cp 路徑/文件名 路徑: 把指定路徑的文件拷貝到指定路徑
14.3 cp 文件名 路徑/新的文件名 : 先把文件拷貝到指定目錄然後再重命名
14.4 cp 文件夾 路徑 -r: 拷貝文件夾 -r:以遞歸的方式把文件夾下的所有文件拷貝過去
15. mv: 移動(剪切)
15.1 mv 文件名 路徑: 把文件移動到指定路徑
15.2 mv 路徑/文件名 路徑: 把指定路徑的文件移動到指定路徑
15.3 mv 文件名 新的文件名: 重命名
15.4 mv 文件夾 路徑: 把文件夾移動到指定目錄,不需要加上-r
16. tree: 以目錄樹方式顯示當前文件夾信息
16.1 tree / : 以目錄樹方式顯示指定路徑的文件信息
17. 命令的格式
17.1 命令名 選項 參數, 提示:有些命令選項可以放到參數的後面,但是:scp 選項必須要放到命令名的後面
18. ls 選項
21.1 -l: 以列表的方式取顯示
21.2 -a: 顯示隱藏文件
21.3 -h: 顯示文件大小的單位
21.4 ll: ls -al 顯示隱藏文件並且以列表方式顯示 , l->ls
19. mkdir 選項
22.1 -p: 把依賴文件夾提取創建好,比如: mkdir 123/456/789 -p
20. rm選項
23.1 -r: 以遞歸的方式刪除文件夾裏面的所有內容
23.2 -i: 顯示刪除的時候提醒信息
23.3 -v: 顯示刪除後的描述信息
23.4 -d: 刪除空目錄
23.5 -f: 如果文件或者目錄存在則刪除,否則就不刪除也不會報錯
21. cp選項
24.1 -i:拷貝文件的時候如果指定目錄有該文件需要顯示提醒信息
24.2 -v:顯示拷貝文件的路徑描述
24.3 -r:以遞歸的方式拷貝文件夾裏面的所有內容
22. mv選項
25.1 -i:移動文件顯示提醒信息
25.2 -v:顯示移動後的路徑描述
23. 重定向(>,>>): 在終端顯示的內容信息重寫規定方向,保存到指定文件裏面,以後查看數據是文件查看就可以了
23.1 > :如果文件不存在,那麽先創建,否則會先把原有文件的數據清空然後再寫入
23.2 >> : 在原有數據的基礎上進行追加
23.3 總結: ls, cat, tree都可以使用重定向
24. gedit:文本編輯工具,可讀可編輯
25. cat: 內容在終端顯示,不能進行編輯,提示:適合查看小型文件,大型文件使用分屏方式顯示(more)
26. more:分屏顯示
29.1 f:表示下一頁
29.2 空格:表示下一頁
29.3 回車: 表示下一行
29.4 b:表示上一頁
29.5 q:退出
27. 文件合並
cat 1.txt 2.txt > 3.txt
28. 管道: 可以理解成是一個容器,存放在終端顯示的內容
28.1 總結: ls /bin | more , cat, tree, ls都是可以結合管道使用完成分屏顯示的
29. 鏈接ln
29.1 -s軟連接:可以理解成快捷方式,把原文件刪除掉通過軟鏈接無法打文件的數據, 提示:創建軟連接不會對硬鏈接數加1
29.2 硬連接: 同一個數據有多個文件名在使用,某個文件刪除掉,還可以通過其它文件名訪問這個文件的數據, 提示:創建硬鏈接硬鏈接數會加1
29.3 提示:如果創建的軟鏈接沒有和原文件在同一個目錄裏面,那麽需要使用絕對路徑創建軟連接
30. grep: 根據指定的內容在文件中進行查找
30.1 grep "a" 8.txt : 根據指定內容在文件中進行查找
30.2 -n:行號, -i:忽略大小寫 -v: 取反
30.3 總結: ^,$ [], . 支持的正則表達式
31. find:在指定目錄查找對應的文件
31.1 find . -name ".txt": 在當前目錄查找後綴是.txt的文件, -name根據文件名查找
31.3 find . -perm 666: 在當前目錄查找文件權限是可讀可寫的, -perm根據權限查找
31.3 總結: ? [] 支持的通配符
32. ls:支持的通配符: _,? , [], []:表示匹配任意列舉中的一個字符
33. 通配符: ? _ [],起到了模糊查詢的作用
34. tar: 打包、壓縮、解包、解壓縮
34.1 打包 tar -cvf test.tar *.txt, -c: 表示要打包, -v:顯示文件打到包裏面 -f:表示文檔名稱,提示-f必須放到所有選項的後面
34.2 解包 tar -xvf test.tar , -x:表示解包
34.3 打包及壓縮合並的命令:tar -zcvf test.tar.gz *.txt
34.4 解壓縮及解包合並的命令:tar -zxvf test.tar.gz ->得到對應的文件
34.5 指定解壓縮的路徑 tar -zxvf test.tar.gz -C ../BBB, -C:指定解壓縮後的路徑
34.6 tar -jcvf test.bz2 *.txt -> test.bz2
34.7 tar -jxvf test.bz2 -> 得到對應的文件
34.8 -C: 指定解壓縮的路徑: tar -jxvf test.bz2 -C ../BBB
35. zip的壓縮及解壓縮
35.1 zip test *.txt -> test.zip ,提示:壓縮包的後綴不需要指定默認是.zip
35.2 unzip test.zip -> 得到是壓縮包裏面的文件
35.3 unzip -d ./123 test.zip -> 解壓到指定路徑 , -d:表示解壓的路徑
36. chmod:修改權限
36.1 -r(4):可讀 -w(2):可寫 -x(1):可執行
36.2 u:當前用戶 g: 同組用戶 o: 其它用戶 a:所有用戶
36.3 +:添加權限, -:撤銷權限 , = : 賦值權限
36.4 chmod 000 1.txt : 全部沒有權限
36.5 chmod a=- 1.txt chmod a= 1.txt : 全部沒有權限
36.6 chmod 777 1.txt chmod a=rwx 1.txt : 都權限,可讀可讀可執行
36.7 chmod 664 1.txt chmod u=rw,g=rw,o=r 1.txt 設置不同用戶不同權限
37. cp選項
37.1-a: 保留文件原有權限,-a包含-r,也就是使用-a也可以拷貝文件夾
38. which : 查看命令的路徑
39. sudo -s: 切換到管理員賬號
40. passwd:修改密碼
41. who :當前那些用戶登陸
42. whoami:當前電腦登陸的用戶是誰
43. exit:退出
44. ssh: 遠程登陸 44.1 ssh : 可以遠程登陸服務端可以通過vim修改文件
45. scp: 遠程拷貝
45.1 scp 1.txt [email protected]:/home/python/Desktop ,把本地文件拷貝到服務器端
45.2 scp -r test [email protected]:/home/python/Desktop,把本地文件夾拷貝到服務器端
45.3 scp [email protected]:/home/python/Desktop/1.txt . , 把服務端的文件拷貝的本地
46.4 scp -r [email protected]:/home/python/Desktop/test . , 把服務端的文件夾拷貝的本地
46. sudo apt-get install 安裝包名 :安裝軟件
sudo apt-get remove 安裝包名:卸載軟件
sudo apt-get update :更新源碼
sudo dpkg -I 安裝包文件:安裝已下載的文件
sudo dpkg -r xxSoftName :卸載
47. vim的使用
47.1 命令模式Esc, 編輯模式i, 末行模式:, 命令模式是編輯模式和末行模式的中轉站
48. vim常用命令
48.1. i: 進入編輯模式
48.2. yy: 複制光標所在行 複制多行: 數字+yy
48.3. p: 粘貼, 粘貼多次: 數字+p
48.4. dd(刪除、剪切), 剪切或者刪除多行:數字+dd
48.5. V: 選中多行
48.6. 上下左右: k:上, j:下, l:右 ,h:左 等同于方向鍵
48.7. x: 從前往後刪除一個字母
48.8. X: 從後往前刪除一個字母
48.9. u: 撤銷
48.10. shift + >: 往右縮進
48.11. shift + <: 往左縮進
48.12. .:重複上一次操作
48.13. G: 回到最後一行
48.14. gg: 回到第一行 1G
48.15. 18G: 回到指定行
48.16. shift + 4:回到行末
48.17. shift + 6:回到行首
48.18. 搜索: :/1 n:查看下一個搜索到的內容, N:查看上一個搜索到的內容
48.19. 替換: :%s/1/2/g %: 整個文件, s:替換 g:全局
48.20. ctr+f: 下一頁
48.21. ctr+b: 上一頁
48.22. :wq, :x: 保存退出
開關機
sync :把內存中的數據寫到磁盤中(關機、重啓前都需先執行sync)
shutdown -r now或reboot :立刻重啓
shutdown -h now :立刻關機
shutdown -h 20:00 :預定時間關閉系統(晚上8點關機,如果現在超過8點,則明晚8點)
shutdown -h +10 :預定時間關閉系統(10分鍾後關機)
shutdown -c :取消按預定時間關閉系統
系統信息
who am i :查看當前使用的終端
who 或 w : 查看所有終端
uname -m :顯示機器的處理器架構(如x86_64)
cat /proc/version :查看linux版本信息
uname -r :顯示正在使用的內核版本
lsb_release -a :查看系統發行版本(如CentOS7)
rpm -qa | grep kernel-devel :查看kernel-devel版本(安裝軟件時編譯內核用,故需要保持內核版本一致性)
yum install -y "kernel-devel-uname-r == $(uname -r)":安裝和Linux內核版本匹配的kernel-devel
date :顯示系統日期 (date +%Y/%m/%d : 顯示效果如2018/01/01)
date 070314592018.00 :設置時間(格式爲月日時分年.秒 )
clock -w :將時間修改保存到 BIOS
cal 2018 :顯示2018年的日曆表
clear :清空命令行
ifconfig :顯示或設置網卡(查ip等)(類似windows中ipconfig)
ping -c 3 www.baidu.com :測試百度與本機的連接情況( -c 3表示測試3次)
cat /proc/cpuinfo :顯示CPU的信息
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l :查看物理CPU個數
cat /proc/cpuinfo| grep "cpu cores"| uniq :查看每個物理CPU的核數
cat /proc/cpuinfo| grep "processor"| wc -l :查看邏輯CPU個數即線程數
系統性能
top :動態實時顯示cpu、內存、進程等使用情況(類似windows下的任務管理器)
top -d 2 -p 7427 :-d爲畫面更新的秒數,默認5秒,-p爲指定進程pid的信息
vmstat 2 10 :每隔2秒采集一次服務器狀態,采集10次(查看內存、io讀寫狀態、cpu)
free -h :查看系統內存及虛擬內存使用情況
df -h :顯示磁盤的空間使用情況
iostat :可查io讀寫、cpu使用情況
sar -u 3 5 :查看cpu使用情況(3秒一次,共5次)
sar -d 2 3 :評估磁盤性能
ps aux|grep firefox :獲取火狐的進程號(PID)(可查看進程占用cpu、內存百分比及進程觸發指令的路徑)
kill -9 進程號 :強制殺死進程
systemctl :查看正在運行的服務
至此Linux基本介紹及使用已經講解完畢了,大家想學習的可以下載一個上面適合自己的系統用VMware虛擬機安裝嘗試一下。
作者簡介:Python菜鳥工程師,將在接下來的一段時間內與大家分享一些與Python相關的知識點。如若文中出現問題,各位大佬多多指點,互相學習。喜歡的關注一個吧!謝謝!