0.寫在前面:
這篇文章主要寫給 Linux 初學者的,文章中會分享給初學者應該著重掌握的一些東西,這些內容都是本人從事 Linux 作業多年的心得體會,相信會幫初學者更快的掌握 Linux 的相關使用技能,后續作者會系統化地更新linux相關初級,中級,高級,終級篇系列文章,并且會在每個篇幅,章節給出學習意見,
本系列學完目標:
- 小白,大學生學完可以滿足日常linux相關開發
- 普通運維/開發查漏補缺,提升技能,開發經驗

學linu的初衷?
從事于 IT 相關作業的同學,應該都或多或少的了解一些linux系統,其實,隨著互聯網行業的不斷發展,大家已經每時每刻都在使用著linux系統,Linux早已滲透進我們生活中的每個角落,我們生活中使用的一切軟體系統基本都是基于linux作業系統在運行,
包括那些火熱的技術,比如云計算、虛擬化、容器、大資料、人工智能,幾乎都是基于 Linux 技術的,那些平臺系統,電商、團購、社交、新聞、快遞,都是部署在服務器端,也幾乎都是基于 Linux 技術的,
在編程的世界中,Linux 依然成為主流,如果你想要從事編程相關的作業,不論是前端、后端、運維、還是測驗,Linux 都是你必須掌握技能,只有了解了 Linux ,你才可能成為合格的軟體工程師,
1.常用的linux發行版本(了解)
如果你的學習目標是為了以后能在作業中使用,下面兩個系統學習最適合:
一、RedHat(紅帽)
官方網站:https://www.redhat.com/zh(紅帽中國官方 )
二、CentOS
官方網站:https://www.centos.org/(CentOS官方)
中文站:https://www.centoschina.cn/(CentOS中文站)
這兩個系統其實是一樣的,紅帽是正版,CentOS是重新編譯后的紅帽;想從事運維作業的童鞋,學會使用這兩個系統,基本就無問題了,在中國市場,CentOS比紅帽多,因為開源嘛!紅帽呢因為售后比較貴,使用的企業不多,大多數是銀行、國企使用,私企基本上都是CentOS.
三,Ubuntu
Ubuntu作為Linux發行版中的后起之秀,Ubuntu 在短短幾年時間里便迅速成長為從Linux初學者到實驗室用計算機/服務器都適合使用的發行版,那么Ubuntu和Centos的區別是哪?如何選擇?
如果是作為服務器的話,這一點是CentOS更勝一籌,雖然它們同樣是開源,免費,CentOS它的原始碼是來自由商業服務器Red Hat Enterprise Linux,有很多公司都是用CentOS來代替商業版的Red Hat Linux,同時它的穩定性也是值得信賴的,而Ubuntu的開發目的是為了使個人電腦變得簡單易用,雖然也提供相應的企業服務器,不過專業的還是CentOS,當前其他版本也有很多,可以忽略吧,
推薦一個適合學習linux的網站:linux公社
2. Linux 的內核結構
(1)用戶空間:用戶空間中又包含了用戶的應用程式,C庫
(2)內核空間:內核空間包括,系統呼叫,內核,以及與平臺架構相關的代碼

尖叫提示:普通用戶了解即可,專業linux開發,運維需要了解深入些,
3. Linux 系統的安裝部署
Linux的系統安裝在這里就不多做贅述了,具體的安裝步驟具體可以自行百度,也可以參考這篇文章:https://zhuanlan.zhihu.com/p/41940739 整體比較簡單,
尖叫提示:普通用戶了解即可,專業linux運維,需要熟練掌握,生產實際部署都是模塊化部署,專業工具同時裝幾十臺,配置幾十臺機器,后續運維系列會告訴大家如何系統化,批量化安裝部署配置系統,
4. Linux 系統的登錄
一般作業環境中,我們都是在Windows下遠程連接Linux的ssh客戶端進行登錄訪問linux 服務器,此時我們就需要借助像Xshell,SecureCRT 這樣的終端模擬器軟體,兩個軟體使用起來也很方便,下面給出了一些可以學習參考的鏈接:
Xshell 的安裝和使用詳情:https://www.xshellcn.com/xsh_column/lianjie-linux.html
SecureCRT的安裝和使用詳情:https://blog.csdn.net/Haiyang_Duan/article/details/53302378
5. Linux 系統重啟
進入linux系統之后,會出現終端命令列界面,此時我們可以在命令列操作我們想要執行的命令,
**新手嚴重告警:切勿使用 rm -rf ***

關機命令:shutdown -h now(立刻進行關機)
halt(立刻進行關機)
poweroff(立刻進行關機)
重啟命令:shutdown -r now(現在重新啟動計算機)
reboot(現在重新啟動計算機)
區別:shutdown -h now和shutdown -r now必須是root用戶或者具有root權限的用戶才能使用,而halt和reboot是Linux系統中的任何用戶都可使用,不需要root權限,
尖叫提示:普通用戶了解即可,實際除了你自己的本地虛擬機可以不停重啟外,生產環境機器一般不會重啟,一般都是重啟服務,有些機器甚至都是開機跑了好幾年都不帶關機的,除非特殊情況,硬體維修,死機,搬遷等,
6. Linux 密碼修改
root 用戶在linux 系統中具有最高管理員權限,可以修改任意用戶的密碼,忘了密碼都無所謂,具體操作命令如下,其他用戶密碼設定切換用戶設定即可,root用戶直接 su - username即可:
[root@testzhuji ~]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
7. Linux 檔案與目錄管理,相關命令
7.1檔案與目錄概述
我們知道Linux里一切皆檔案,要不就是檔案目錄,
linux的目錄結構為樹狀結構,最頂級的目錄為根目錄 /,類似如下:

其他目錄通過掛載可以將它們添加到樹中,通過解除掛載可以移除它們,
在開始本教程前我們需要先知道什么是絕對路徑與相對路徑,
絕對路徑:
路徑的寫法,由根目錄 / 寫起,例如: /usr/share/doc 這個目錄,
相對路徑:
路徑的寫法,不是由 / 寫起,例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: cd …/man 這就是相對路徑的寫法,
處理目錄的常用命令
接下來我們就來看幾個常見的處理目錄的命令吧,要記住命令名稱意思其實很簡單,只要知道它是什么的簡稱即可:
ls(英文全拼:list files): 列出目錄及檔案名
cd(英文全拼:change directory):切換目錄
pwd(英文全拼:print work directory):顯示目前的目錄
mkdir(英文全拼:make directory):創建一個新的目錄
rmdir(英文全拼:remove directory):洗掉一個空的目錄
cp(英文全拼:copy file): 復制檔案或目錄
rm(英文全拼:remove): 洗掉檔案或目錄
mv(英文全拼:move file): 移動檔案與目錄,或修改檔案與目錄的名稱
你可以使用 man [命令] 來查看各個命令的使用檔案,所以命令的引數不用詳細去記,沒必要,知道有這么個命令,實際使用時查詢下即可,man的用處就是這個,如 :man cp,
7.2檔案與目錄相關命令演示
7.2.1. ls (列出目錄)
在Linux系統當中, ls 命令可能是最常被運行的,我個人習慣直接使用ll,這個命令比較簡單,常用要掌握
語法:
[root@www ~]# ls [-aAdfFhilnrRSt] 目錄名稱
[root@www ~]# ls [–color={never,auto,always}] 目錄名稱
[root@www ~]# ls [–full-time] 目錄名稱
選項與引數:
- -a :全部的檔案,連同隱藏檔案( 開頭為 . 的檔案) 一起列出來(常用)
- -d :僅列出目錄本身,而不是列出目錄內的檔案資料(常用)
- -l :長資料串列出,包含檔案的屬性與權限等等資料;(常用)
將家目錄下的所有檔案列出來(含屬性與隱藏檔)
7.2.2 cd (切換目錄)
cd是Change Directory的縮寫,這是用來變換作業目錄的命令,
語法:
cd [相對路徑或絕對路徑]
示例:切換到 /home 路徑下
[root@10-90-50-75-jhdxyjd home]# cd /home/
[root@10-21-141-81-jhdxyjd home]# ll
total 4
drwx------ 3 app app 70 Jun 13 2018 app
drwx------ 2 bigdata bigdata 59 Sep 1 18:54 bigdata
drwx------ 2 ga ga 59 Aug 17 16:13 ga
drwx------ 3 logview logview 70 Feb 27 2020 logview
drwx------ 2 mobdi_prd mobdi_prd 59 Feb 20 2021 mobdi_prd
drwx------ 4 ops ops 4096 Jun 21 17:54 ops
drwx------ 2 packer packer 59 Sep 21 2017 packer
drwx------ 2 spark2 spark2 79 Aug 16 21:13 spark2
d-wx------ 4 test test 107 Apr 21 19:35 test
drwx------ 2 test2 test 59 Jul 9 15:17 test2
drwx------ 2 test3 test3 59 Jul 15 17:51 test3
drwx------ 2 yangyuying yangyuying 59 May 11 2020 yangyuying
drwx------ 2 zabbix zabbix 59 Nov 16 2017 zabbix
drwx------ 2 zhagjch zhagjch 59 Jan 4 2021 zhagjch
[root@10-21-141-81-jhdxyjd home]# cd app
[root@10-21-141-81-jhdxyjd app]# pwd
/home/app
[root@10-21-141-81-jhdxyjd app]# cd ..
[root@10-21-141-81-jhdxyjd home]# pwd
/home
[root@10-21-141-81-jhdxyjd home]# cd ./bigdata/
[root@10-21-141-81-jhdxyjd bigdata]# pwd
/home/bigdata
這個命令沒啥說的,注意cd ..,表示回傳上一層,.表示當前目錄,..表示上一層目錄,直接cd回車 回傳根/目錄,比如進入當前目錄的下一層目錄a 就是cd ./a
7.2.3 mkdir (創建新目錄) (常用)
如果想要創建新的目錄的話,那么就使用mkdir (make directory)吧,
基礎語法:
mkdir [-mp] 目錄名稱
選項與引數:
- -m :組態檔的權限喔!直接配置,不需要看默認權限 (umask) 的臉色~
- -p :幫助你直接將所需要的目錄(包含上一級目錄)遞回創建起來!
示例:使用絕對路徑創建test目錄
[root@10-90-50-75-jhdxyjd home]# mkdir /test
加了這個 -p 的選項,可以自行幫你創建多層目錄!
[root@10-90-50-75-jhdxyjd home]# mkdir -p /test/test2/test3
7.2.3 pwd (顯示目前所在的目錄)
pwd 是 Print Working Directory 的縮寫,也就是顯示目前所在目錄的命令,
示例:顯示當前所在的目錄
[root@10-90-50-75-jhdxyjd home]# pwd
/home
7.2.4 rmdir (洗掉空的目錄)與rm
基礎語法:
rmdir [-p] 目錄名稱
選項與引數:
- -p :連同上一級『空的』目錄也一起洗掉
示例:洗掉多級目錄 /test/test2/test3/(如果目錄下有內容會報錯)
[root@10-90-50-75-jhdxyjd home]# rmdir /test/test2/test3/
不過要注意的是
[root@10-90-50-75-jhdxyjd home]# rm -rf /test/
這個 rmdir 僅能洗掉空的目錄,你可以使用 rm -rf 命令來強制洗掉非空目錄,
示例:
[root@10-90-50-75-jhdxyjd home]# rm -rf /test/
rm (移除檔案或目錄),這個才是常用的,但要慎用,
rm [-fir] 檔案或目錄
選項與引數:
- -f :就是 force 的意思,忽略不存在的檔案,不會出現警告資訊;
- -i :互動模式,在洗掉前會詢問使用者是否動作
- -r :遞回洗掉啊!最常用在目錄的洗掉了!這是非常危險的選項!!!
7.2.5 cp (復制檔案或目錄)
cp 即拷貝檔案和目錄,
[root@www ~]# cp [-adfilprsu] 來源檔(source) 目標檔(destination)
[root@www ~]# cp [options] source1 source2 source3 … directory
選項與引數:
- -a:相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)
- -d:若來源檔為連結檔的屬性(link file),則復制連結檔屬性而非檔案本身;
- -f:為強制(force)的意思,若目標檔案已經存在且無法開啟,則移除后再嘗試一次;
- -i:若目標檔(destination)已經存在時,在覆寫時會先詢問動作的進行(次常用)
- -l:進行硬式連結(hard link)的連結檔創建,而非復制檔案本身;
- -p:連同檔案的屬性一起復制過去,而非使用默認屬性(備份常用);
- -r:遞回持續復制,用於目錄的復制行為;(常用)
- -s:復制成為符號連結檔 (symbolic link),亦即『捷徑』檔案;
- -u:若 destination 比 source 舊才升級 destination !
示例:用 root 身份,將 root 目錄下的 .bashrc 復制到 /tmp 下,并命名為 bashrc
[root@10-90-50-75-jhdxyjd ~]# cp ~/.bashrc /tmp/bashrc
7.2.6 mv (移動檔案與目錄,或修改名稱)
基礎語法:
mv [-fiu] source destination
mv [options] source1 source2 source3 … directory
選項與引數:
- -f :force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆寫;
- -i :若目標檔案 (destination) 已經存在時,就會詢問是否覆寫!
- -u :若目標檔案已經存在,且 source 比較新,才會升級 (update)
示例:復制一檔案,創建一目錄,將檔案移動到目錄中
[root@10-90-50-75-jhdxyjd tmp]# cd /tmp/
[root@10-90-50-75-jhdxyjd tmp]# cp ~/.bashrc bashrc
[root@10-90-50-75-jhdxyjd tmp]# mkdir mvtest1
[root@10-90-50-75-jhdxyjd tmp]# mv bashrc mvtest1
尖叫提示:mv速度賊快,因為他其實就是系統層面的檔案重命名rename,要比cp快N倍,所以能mv不要cp尤其大檔案,但是mv檔案只有一份,重命名挪動了位置,cp則有多份,
8. Linux 檔案內容查看
Linux系統中使用以下命令來查看檔案的內容:
cat 由第一行開始顯示檔案內容
tac 從最后一行開始顯示,可以看出 tac 是 cat 的倒著寫!
nl 顯示的時候,順道輸出行號!
more 一頁一頁的顯示檔案內容
less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
head 只看頭幾行
tail 只看尾巴幾行
你可以使用 man [命令]來查看各個命令的使用檔案,如 :man cp,
8.1 cat 【由第一行開始顯示檔案內容】和tac
基礎語法:
cat [-AbEnTv]
選項與引數:
- -A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
- -b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
- -E :將結尾的斷行位元組 $ 顯示出來;
- -n :列印出行號,連同空白行也會有行號,與 -b 的選項不同;
- -T :將 [tab] 按鍵以 ^I 顯示出來;
- -v :列出一些看不出來的特殊字符
示例:查看 /etc/hosts 這個檔案的內容
[root@10-90-50-75-jhdxyjd tmp]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
tac 【與cat命令剛好相反,檔案內容從最后一行開始顯示,可以看出 tac 是 cat 的倒著寫!】
示例:
[root@10-90-50-75-jhdxyjd tmp]# tac /etc/hosts
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
8.2 nl 【顯示行號】,不常用
基礎語法:
nl [-bnw] 檔案
選項與引數:
-b :指定行號指定的方式,主要有兩種:
-b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
-b t :如果有空行,空的那一行不要列出行號(默認值);
-n :列出行號表示的方法,主要有三種:
-n ln :行號在熒幕的最左方顯示;
-n rn :行號在自己欄位的最右方顯示,且不加 0 ;
-n rz :行號在自己欄位的最右方顯示,且加 0 ;
-w :行號欄位的占用的位數,
示例:用 nl 列出 /etc/hosts 的內容
[root@10-90-50-75-jhdxyjd tmp]# nl /etc/hosts
1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
8.3 more 【一頁一頁翻動】,常用
在 more 這個程式的運行程序中,你有幾個按鍵可以按的:
空白鍵 (space):代表向下翻一頁;
Enter :代表向下翻『一行』;
/字串 :代表在這個顯示的內容當中,向下搜尋『字串』這個關鍵字;
- :f :立刻顯示出檔名以及目前顯示的行數;
- q :代表立刻離開 more ,不再顯示該檔案內容,
- b 或 [ctrl]-b :代表往回翻頁,不過這動作只對檔案有用,對管線無用,
[root@10-90-50-75-jhdxyjd tmp]# more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
8.4 less 【一頁一頁翻動】
less運行時可以輸入的命令有:
- 空白鍵 :向下翻動一頁;
- [pagedown]:向下翻動一頁;
- [pageup] :向上翻動一頁;
- /字串 :向下搜尋『字串』的功能;
- ?字串 :向上搜尋『字串』的功能;
- n :重復前一個搜尋 (與 / 或 ? 有關!)
- N :反向的重復前一個搜尋 (與 / 或 ? 有關!)
- q :離開 less 這個程式;
[root@10-90-50-75-jhdxyjd tmp]# less /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
/etc/hosts (END)
8.5 head 【取出檔案前面幾行】
head [-n number] 檔案
選項與引數:
- -n :后面接數字,代表顯示幾行的意思
示例:默認的情況中,顯示前面 10 行!若要顯示前 20 行,就得要這樣
[root@10-90-50-75-jhdxyjd tmp]# head -n 20 /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6f
#
# For more information about this file, see the man pages man(1)
# and man.conf(5).
#
# This file is read by man to configure the default manpath (also used
# when MANPATH contains an empty substring), to find out where the cat
# pages corresponding to given man pages should be stored,
# and to map each PATH element to a manpath element.
# It may also record the pathname of the man binary. [This is unused.]
# The format is:
#
# MANBIN pathname
# MANPATH manpath_element [corresponding_catdir]
# MANPATH_MAP path_element manpath_element
#
8.6 tail 【取出檔案后面幾行】
基礎語法:
tail [-n number] 檔案
選項與引數:
- -n :后面接數字,代表顯示幾行的意思
- -f :表示持續偵測后面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測
示例:默認的情況中,顯示最后的十行!若要顯示最后的 20 行,執行如下命令
[root@10-90-50-75-jhdxyjd tmp]# tail -n 20 /etc/man.config
# Decompress with given decompressor when input file has given extension
# The command given must act as a filter.
#
.gz /usr/bin/gunzip -c
.bz2 /usr/bin/bzip2 -c -d
.lzma /usr/bin/unlzma -c -d
.z
.Z /bin/zcat
.F
.Y
#
# Enable/disable makewhatis database cron updates.
# If MAKEWHATISDBUPDATES variable is uncommented
# and set to n or N, cron scripts
# /etc/cron.daily/makewhatis.cron
# /etc/cron.weekly/makewhatis.cron
# will not update makewhatis database.
# Otherwise the database will be updated.
#
#MAKEWHATISDBUPDATES n
9. Linux 檔案權限管理
LInux作為更安全的作業系統,為不同的檔案配置不同的檔案權限進行管理,單個檔案來看權限大致分為下面三種:
所有者權限:檔案所有者能夠進行的操作
組權限:檔案所屬用戶組能夠進行的操作
外部權限(其他權限):其他用戶可以進行的操作,
9.1 .檔案權限的查看
示例:
[root@10-90-50-75-jhdxyjd tmp]# ls -l /etc/hosts
-rw-r--r-- 1 root root 200 Sep 8 13:02 /etc/hosts

內容解讀:
第一列就表示的是檔案/etc/hosts的相關權限,
第一列的字符可以詳細的列為三部分,每一部分有三個小字符組成,每個字符都代表不同的權限,r讀權限、w寫權限、x執行權限:
第一部分字符(2-4)表示檔案所有者的權限,-rw-r–r--表示所有者擁有r讀權限、w寫權限,
第二部分字符(5-7)表示檔案所屬用戶組的權限,-rw-r–r-- 表示該組擁有r讀權限,
第三部分字符(8-10)表示所有其他用戶的權限,-rw-r–r-- 表示其他用戶只有r讀取權限,
9.2 .檔案權限更改
可以使用 chmod (change mode) 命令來改變檔案權限,
一種是數字,一種是符號,
檔案的權限字符為: -rwxrwxrwx , 這九個權限是三個三個一組的!其中,我們可以使用數字來代表各個權限,各權限的分數對照表如下:
r:4 w:2 x:1
每種身份(owner/group/others)各自的三個權限(r/w/x)分數是需要累加的,
示例: -rwxrwx— 分數則是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0
所以該檔案的權限數字就是 770
命令語法:
chmod [-R] xyz 檔案或目錄
操作示例:很多人懶省事,直接都是777,所有權限都有了
[root@10-90-50-75-jhdxyjd hadoop]# chmod 770 1.txt
[root@10-90-50-75-jhdxyjd hadoop]# ls -l
total 8
-rwxrwx--- 1 root root 0 Sep 8 17:33 1.txt
符號型別改變檔案權限
user:用戶
group:組
others:其他
那么我們就可以使用 u, g, o 來代表三種身份的權限,
示例:如果我們需要將檔案權限設定為 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 檔案名 來設定,
操作示例:
[root@10-90-50-75-jhdxyjd hadoop]# touch test2 //創建檔案
[root@10-90-50-75-jhdxyjd hadoop]# ls -al test2 //查看現有權限
-rw-r--r-- 1 root root 0 Sep 8 17:37 test2
[root@10-90-50-75-jhdxyjd hadoop]# chmod u=rwx,g=rx,o=r test2 //更改權限
[root@10-90-50-75-jhdxyjd hadoop]# ls -al test2 //查看權限
-rwxr-xr-- 1 root root 0 Sep 8 17:37 test2
[root@10-90-50-75-jhdxyjd hadoop]# chmod a-x test2 //去掉指定權限
[root@10-90-50-75-jhdxyjd hadoop]# ls -al test2
-rw-r--r-- 1 root root 0 Sep 8 17:37 test2
這些是lunix初級入門,后面繼持續更新中級,高級系列,歡迎大家關注收藏,交流, 
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298947.html
標籤:其他
