一、概述
我們為什么要學習Linux
linux誕生了這么多年,以前還喊著如何能取代windows系統,現在這個口號已經小多了,任何事物發展都有其局限性都有其天花板,就如同在國內再搞一個社交軟體取代騰訊一樣,想想而已基本不可能,因為用戶已經習慣于使用微信交流,不是說技術上實作不了解而是老百姓已經習慣了,想讓他們不用,即使他們自己不用親戚朋友還是要用,沒有辦法的事情,
用習慣了windows作業系統,再讓大家切換到別的作業系統基本上是不可能的事情,改變一個人已經養成的習慣太難,沒有辦法深入到普通老百姓的生活中,并不意味著linux就沒有用武之地了,在服務器端,在開發領域linux倒是越來越受歡迎,很多程式員都覺得不懂點linux都覺得不好意思,linux在開源社區的地位依然巋然不動,
尤其是作為一個后端程式員,是必須要掌握Linux的,因為這都成為了你找作業的基礎門檻了,所以不得不學習!
Linux 簡介
Linux 內核最初只是由芬蘭人林納斯·托瓦茲(Linus Torvalds)在赫爾辛基大學上學時出于個人愛好而撰寫的,
Linux 是一套免費使用和自由傳播的類 Unix 作業系統,是一個基于 POSIX(可移植作業系統介面) 和 UNIX 的多用戶、多任務、支持多執行緒和多 CPU 的作業系統,
Linux 能運行主要的 UNIX 工具軟體、應用程式和網路協議,它支持 32 位和 64 位硬體,Linux 繼承了 Unix 以網路為核心的設計思想,是一個性能穩定的多用戶網路作業系統,
Linux 發行版
Linux 的發行版說簡單點就是將 Linux 內核與應用軟體做一個打包,

目前市面上較知名的發行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等,
Linux 應用領域
今天各種場合都有使用各種 Linux 發行版,從嵌入式設備到超級計算機,并且在服務器領域確定了地位,通常服務器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)組合,
目前 Linux 不僅在家庭與企業中使用,并且在政府中也很受歡迎,
- 巴西聯邦政府由于支持 Linux 而世界聞名,
- 有新聞報道俄羅斯軍隊自己制造的 Linux 發布版的,做為 G.H.ost 專案已經取得成果,
- 印度的 Kerala 聯邦計劃在向全聯邦的高中推廣使用 Linux,
- 中華人民共和國為取得技術獨立,在龍芯處理器中排他性地使用 Linux,
- 在西班牙的一些地區開發了自己的 Linux 發布版,并且在政府與教育領域廣泛使用,如 Extremadura 地區的 gnuLinEx 和 Andalusia 地區的 Guadalinex,
- 葡萄牙同樣使用自己的 Linux 發布版 Caixa Mágica,用于 Magalh?es 筆記本電腦和 e-escola 政府軟體,
- 法國和德國同樣開始逐步采用 Linux,
二、環境配置
1、安裝
Linux 的安裝,安裝步驟比較繁瑣,現在其實云服務器挺普遍的,價格也便宜,如果直接不想搭建,也可以直接買一臺學習用用!
安裝CentOS(虛擬機安裝,耗資源)
阿里云鏡像
購買云服務器
虛擬機安裝后占用空間,也會有些卡頓,我們作為程式員其實可以選擇購買一臺自己的服務器,這樣的話更加接近真實線上作業;
1、阿里云購買服務器:https://www.aliyun.com/minisite/goods?userCode=0phtycgr
2、購買完畢后,獲取服務器的ip地址,重置服務器密碼,就可以遠程登錄了
3、下載 xShell 工具,進行遠程連接使用!連接成功效果如下:
2、VM中的三種網路模式
1 橋接模式
橋接網路是指本地物理網卡和虛擬網卡通過VMnet0虛擬交換機進行橋接,物理網卡和虛擬網卡在拓撲圖上處于同等地位,
那么物理網卡和虛擬網卡就相當于處于同一個網段,虛擬交換機就相當于一臺現實網路中的交換機

2 NAT模式
? 在NAT網路中,會用到VMware Network Adepter VMnet8虛擬網卡,主機上的VMwareNetworkAdepter VMnet8虛擬網卡被直接連接到VMnet8虛擬交換機上與虛擬網卡進行通信,
? VMware NetworkAdepterVMnet8虛擬網卡的作用僅限于和VMnet8網段進行通信,它不給VMnet8網段提供路由功能,所以虛擬機虛擬一個NAT服務器,使虛擬網卡可以連接到Internet,在這種情況下,我們就可以使用埠映射功能,讓訪問主機80埠的請求映射到虛擬機的80埠上,
? 虛擬出來的網段和NAT模式虛擬網卡的網段是一樣的,都為192.168.111.X,包括NAT服務器的IP地址也是這個網段,在安裝VMware之后同樣會生成一個虛擬DHCP服務器,為NAT服務器分配IP地址,
? 當主機和虛擬機進行通信的時候就會呼叫VMware NetworkAdepterVMnet8虛擬網卡,因為他們都在一個網段,所以通信就不成問題了,
? 實際上,VMware NetworkAdepterVMnet8虛擬網卡的作用就是為主機和虛擬機的通信提供一個介面,即使主機的物理網卡被關閉,虛擬機仍然可以連接到Internet,但是主機和虛擬機之間就不能互訪了,

3 Host-Onlt模式
? 在Host-Only模式下,虛擬網路是一個全封閉的網路,它唯一能夠訪問的就是主機,其實Host-Only網路和NAT網路很相似,不同的地方就是Host-Only網路沒有NAT服務,所以虛擬網路不能連接到Internet,主機和虛擬機之間的通信是通過VMwareNetworkAdepter VMnet1虛擬網卡來實作的,
? 同NAT一樣,VMware NetworkAdepterVMnet1虛擬網卡的IP地址也是VMware系統指定的,同時生成的虛擬DHCP服務器和虛擬網卡的IP地址位于同一網段,但和物理網卡的IP地址不在同一網段,

三、目錄結構
1、概述
linux的檔案系統是采用級層式的樹狀目錄結構,在此結構中的最上層是根目錄“/”,然后在此 目錄下再創建其他的目錄, (與windows的CDEFG盤不一樣)
記住一句經典的話:在Linux世界里,一切皆檔案
2、目錄結構樹狀圖

3、目錄功能詳解
-
/bin (/usr/bin 、 /usr/local/bin)
- 是Binary的縮寫, 這個目錄存放著最經常使用的命令
-
/sbin (/usr/sbin 、 /usr/local/sbin)
- s就是Super User的意思,這里存放的是系統管理員使用的系統管理程式
-
/home
- 存放普通用戶的主目錄,在Linux中每個用戶都有一個自己的目錄,一般 該目錄名是以用戶的賬號命名
的,
? 測驗可以打開終端輸入 useradd tom 加一個用戶后查看檔案夾
? 增加用戶后 可以輸入 userdel -r tom 洗掉指定用戶
-
/root
- 該目錄為系統管理員,也稱作超級權限者的用戶主目錄,
-
/lib
- 系統開機所需要最基本的動態連接共享庫,其作用類似于Windows里的DLL檔案,幾 乎所有的應用程式都需要用到這些共享庫,
-
/lost+found
- 這個目錄一般情況下是空的,當系統非法關機后,這里就存放了一些檔案,
-
/etc
- 所有的系統管理所需要的組態檔和子目錄 my.conf
-
/usr
- 這是一個非常重要的目錄,用戶的很多應用程式和檔案都放在這個目錄下,類似與 windows下的program fifiles目錄,
-
/boot
- 存放的是啟動Linux時使用的一些核心檔案,包括一些連接檔案以及鏡像檔案
-
以下三個目錄涉及linux內核最好別動
- /proc
- 這個目錄是一個虛擬的目錄,它是系統記憶體的映射,訪問這個目錄來獲取系統資訊
- /srv
- service縮寫,該目錄存放一些服務啟動之后需要提取的資料,
- /sys
- 這是linux2.6內核的一個很大的變化,該目錄下安裝了2.6內核中新出現的一個檔案系統
- /proc
-
/tmp
- 這個目錄是用來存放一些臨時檔案的,
-
/dev
- 類似于windows的設備管理器,把所有的硬體用檔案的形式存盤,
-
/media
- linux系統會自動識別一些設備,例如U盤、光驅等等,當識別后,linux 會把識別的設備掛載到這個目錄
下,
- /mnt
- 系統提供該目錄是為了讓用戶臨時掛載別的檔案系統的,我們可以將外部的存盤掛 載在/mnt/上,然后進
入該目錄就可以查看里的內容了, (比如共享檔案夾)
-
/opt
- 這是給主機額外安裝軟體所擺放的目錄,如安裝ORACLE資料庫就可放到該目錄下, 默認為空
-
/usr/local
- 這是另一個給主機額外安裝軟體所安裝的目錄,一般是通過編譯原始碼方式安裝的程式
-
/var
- 這個目錄中存放著在不斷擴充著的東西,習慣將經常被修改的目錄放在這個目錄下, 包括各種日志檔案
-
/selinux [security-enhanced linux] (類似于windows中的安全防護)
- SELinux是一種安全子系統,它能控制程式只能訪問特定檔案
四、Vi與Vim編輯器
1、概述
所有的 Linux 系統都會內建 vi 文本編輯器,
Vim 具有程式編輯的能力,可以看做是Vi的增強版本,可以主動的以字體顏色辨別語法的正確性,方便程式設計,代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式員中被廣泛使用,
2、vi、vim常用的三種模式
正常模式:
? 以vim打開一個檔案就直接進入一般模式了(默認),
? 在這個模式中可以使用【上下左右】按鍵來移動游標,你可以使用【洗掉字符】或【洗掉整行】來處理檔案內容,也可以使用【復制、粘貼】來處理檔案資料
插入模式:
? 按下i,I,o,O,a,A,r,R等任何一個字母后才會進入編輯模式,一般來說 按i即可
命令列模式:
? 在這個模式中,可以提供相關指令,完成讀取、存盤、替換、離開vim、顯示行號等的動作則是在此模式中達成的
3、三種模式的切換

4、鍵盤圖

五、Linux操作
Linux系統是一個多用戶多任務的作業系統,任何一個要使用系統資源的用戶,都必須首先向 系統管理員申請一個賬號,然后以這個賬號的身份進入系統,
1 用戶體系
用戶體系中有幾個概念: 組、家目錄、用戶
Linux中的用戶至少需要一個組

2 添加用戶
語法
useradd 用戶名
細節
- 當創建用戶成功后,會自動創建和用同名的家目錄
- 也可以通過useradd -d指定目錄 新的用戶名,給新創建的用戶指定家目錄

3 指定/修改密碼
語法
passwd 用戶名
密碼隱式輸入(完全看不見)

4 洗掉用戶
語法
userdel 用戶名
#洗掉用戶與家目錄
userdel -r 用戶名
細節
? 一般來說,在企業中不會去洗掉用戶的家目錄(保留資料)
5 查詢用戶
語法
id 用戶名

細節
當用戶不存在時,回傳無此用戶
- uid 用戶id
- gid 組id
- 組 組名
6 切換用戶
介紹
在操作Linux中,如果當前用戶的權限不夠,可以通過 su - 指令,切換到高權限用戶,比如root
語法
su – 切換用戶名

細節:
- 從權限高的用戶切換到權限低的用戶,不需要輸入密碼,反之需要
- 當需要回傳到原來用戶時,使用exit指令(需要時高權限進入低權限)
7 查看當前用戶
語法:
whoami / who am i

8 用戶組
概述
類似于角色,系統可以對有共性的多個用戶進行統一的管理,
新增組
語法
groupadd 組名
洗掉組
語法
groupdel 組名
增加用戶時直接加上組
語法
userad -g 用戶組 用戶名
修改用戶的組
語法
usermod -g 用戶組 用戶名
用戶組相關檔案
/etc/passwd 檔案
-
用戶(user)的組態檔,記錄用戶的各種資訊
-
每行的含義:用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄Shell

/etc/shadow 檔案
口令的組態檔
每行的含義:登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志
標志
/etc/group 檔案
組(group)的組態檔,記錄Linux包含的組的資訊
每行含義:組名:口令:組標識號:組內用戶串列
直接執行 groups 命令可以查看當前登陸用戶所屬的組
六、Linux常用指令
1、運行級別
Linux系統有運行級別之分,就像windows系統有普通啟動模式與安全模式一樣
運行級別說明
0 :關機
1 :單用戶【找回丟失密碼】
2:多用戶狀態沒有網路服務
3:多用戶狀態有網路服務
4:系統未使用保留給用戶
5:圖形界面
6:系統重啟
常用運行級別是3和5 ,要修改默認的運行級別可改檔案 /etc/inittab的id:5:initdefault:這一行中的數字
命令:init [012356]

忘記root密碼,如何找回密碼
- 開機在引導時按回車

- 輸入e,進入系統的啟動編輯,并且選擇到第二行內核編輯的位置再按e

- 進入內核編輯后 輸入1 進入單用戶模式

- 告訴好內核啟動級別后按回車回到之前的選擇頁面, 按b

-
這時候就可以不用輸入密碼就進入系統,之后就正常修改當前用戶密碼就行了

注意:用XShell(遠程登陸)是無法完成進入單用戶這個操作的, 出于安全性的考慮
2、幫助指令
說白了就是幫助你了解一些指令的介紹, 如果英文不好可以直接面向百度更快
1 man
語法
man [命令或組態檔](功能描述:獲得幫助資訊)
查看ls命令的幫助資訊:man ls

2 help
語法
help 命令 (功能描述:獲得shell內置命令的幫助資訊)

3、檔案目錄相關指令
1 pwd指令
pwd (功能描述:顯示當前作業目錄的絕對路徑)
2 ls指令
ls [選項] [目錄或是檔案]
常用選項
-a :顯示當前目錄所有的檔案和目錄,包括隱藏的,
-l :以串列的方式顯示資訊

3 cd指令
cd [引數] (功能描述:切換到指定目錄)
常用引數
絕對路徑和相對路徑
cd ~ 或者cd :回到自己的家目錄
cd … 回到當前目錄的上一級目錄
4 mkdir指令
mkdir指令用于創建目錄
mkdir [選項] 要創建的目錄

常用選項
-p :創建多級目錄
5 rmdir指令
rmdir指令洗掉空目錄
rmdir [選項] 要洗掉的空目錄
細節
rmdir 洗掉的是空目錄,如果目錄下有內容時無法洗掉的,
提示:如果需要洗掉非空目錄,需要使用 rm -rf 要洗掉的目錄
6 touch指令
touch指令創建空檔案
touch 檔案名稱
7 cp指令
cp指令 拷貝檔案到指定目錄
cp [選項] source dest
常用選項
-r :遞回復制整個檔案夾
細節
強制覆寫不提示的方法:\cp
8 rm指令
rm 指令移除檔案或目錄
rm [選項] 要洗掉的檔案或目錄
常用選項
-r :遞回洗掉整個檔案夾
-f : 強制洗掉不提示
9 mv指令
mv 移動檔案與目錄或重命名
mv oldNameFile newNameFile #(功能描述:重命名)
mv /temp/movefile /targetFolder #(功能描述:移動檔案)
10 cat指令
cat 查看檔案內容
cat [選項] 要查看的檔案
常用選項
-n :顯示行號
細節
cat 只能瀏覽檔案,而不能修改檔案,為了瀏覽方便,一般會帶上 [ 管道命令 | ] more
11 more指令
more指令是一個基于VI編輯器的文本過濾器,它以全螢屏的方式按頁顯示文本檔案的內容, more指令中內置了若干快捷鍵,詳見操作說明
more 要查看的檔案
操作說明

12 less指令
less指令用來分屏查看檔案內容,它的功能與more指令類似,但是比more指令更加強大,支 持各種顯示終端,less指令在顯示檔案內容時,并不是一次將整個檔案加載之后才顯示,而是 根據顯示需要加載內容,對于顯示大型檔案具有較高的效率,
less 要查看的檔案
操作說明

13 echo指令
echo輸出內容到控制臺,
echo [選項] [輸出內容]
14 head指令
head用于顯示檔案的開頭部分內容,默認情況下head指令顯示檔案的前10行內容
head 檔案 #(功能描述:查看檔案頭10行內容)
head -n 5 #檔案 (功能描述:查看檔案頭5行內容,5可以是任意行數)
tail -f #檔案 (功能描述:實時追蹤該檔案的所有更新,作業中常用、可以查看日志實時改變)
15 >指令和>>指令
‘>‘輸出重定向和’>>’ 追加
ls -l >檔案 #(功能描述:串列的內容寫入檔案a.txt中(覆寫寫))
ls -al >>檔案 #(功能描述:串列的內容追加到檔案aa.txt的末尾)
cat 檔案1 > 檔案2 #(功能描述:將檔案1的內容覆寫到檔案2)
echo “內容”>> 檔案 # 直接追加echo后面跟著的內容到指定檔案中
16 ln指令
軟鏈接也成為符號鏈接,類似于windows****里的快捷方式,主要存放了鏈接其他檔案的路徑
ln -s [原檔案或目錄] [軟鏈接名] #(功能描述:給原檔案創建一個軟鏈接)
細節
當我們使用pwd指令查看目錄時,仍然看到的是軟鏈接所在目錄
17 history指令
查看已經執行過歷史命令,也可以執行歷史指令
history #(功能描述:查看已經執行過歷史命令)
history [數字] #(查看最近執行的指定數的命令)
![行數] #(執行指定行數的歷史命令)
4、時間相關指令
1 顯示當前日期
date #(功能描述:顯示當前時間)
date +%Y #(功能描述:顯示當前年份)
date +%m #(功能描述:顯示當前月份)
date +%d #(功能描述:顯示當前是哪一天)
date “+%Y-%m-%d %H:%M:%S” #(功能描述:顯示年月日時分秒)
2 設定日期
date -s 字串時間
3 cal指令
cal [選項] #(功能描述:不加選項,顯示本月日歷)
5、搜索查找相關
1 find指令
fifind指令將從指定目錄向下遞回地遍歷其各個子目錄,將滿足條件的檔案或者目錄顯示在終端,
find [搜索范圍] [選項]

2 locate指令
locaate指令可以快速定位檔案路徑,locate指令利用事先建立的系統中所有檔案名稱及路徑 的locate資料庫實作快速定位給定的檔案,Locate指令無需遍歷整個檔案系統,查詢速度較快, 為了保證查詢結果的準確度,管理員必須定期更新locate時刻
locate 搜索檔案
注意
由于locate指令基于資料庫進行查詢,所以第一次運行前,必須使用updatedb指令創建locate資料庫,
3 grep指令和管道符號 |
grep 過濾查找 , 管道符,“|”,表示將前一個命令的處理結果輸出傳遞給后面的命令處理
grep [選項] 查找內容 源檔案

在 hello.txt 檔案中,查找 “yes” 所在行,并且顯示行號
cat hello.txt | grep -n yes
6、壓縮和解壓類
1 gzip/gunzip指令
gzip 用于壓縮檔案, gunzip 用于解壓的(用的不多)
gzip 檔案 #(功能描述:壓縮檔案,只能將檔案壓縮為*.gz檔案)
gunzip 檔案.gz #(功能描述:解壓縮檔案命令)
細節
用這個指令壓縮檔案源檔案不保留
2 zip/unzip指令
zip 用于壓縮檔案, unzip 用于解壓的,這個在專案打包發布中很有用的
zip [選項] XXX.zip 將要壓縮的內容 #(功能描述:壓縮檔案和目錄的命令)
unzip [選項] XXX.zip #(功能描述:解壓縮檔案)
zip常用選項
-r:遞回壓縮,即壓縮目錄
unzip的常用選項
-d<目錄> :指定解壓后檔案的存放目錄
3 tar指令
tar 指令 是打包指令,最后打包后的檔案是 .tar.gz 的檔案,
tar [選項] XXX.tar.gz 打包的內容 #(功能描述:打包目錄,壓縮后的檔案格式.tar.gz)
選項

注意
解壓到指定目錄添加選項 -C 表示解壓全部 并且指定目錄要事先存在
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/283066.html
標籤:其他
