?????????Hello大家好!很高興我們又見面啦!給生活添點passion,開始今天的編程之路!
我的博客:<但凡.
我的專欄:《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C++修煉之路》、《Linux修煉:終端之內 洞悉真理》
歡迎點贊,關注!
? ? ? ?從今天起正式開始更新linux的相關內容了。在學習linux的初期是比較枯燥的(各種指令),當然我會盡可能的解釋清楚各種指令。
????????使用環境:Centos 7
1、linux引入?
????????Linux是一種開源的操作系統內核,由林納斯·托瓦茲(Linus Torvalds)于1991年首次發布。它以Unix為設計靈感,但獨立開發,遵循自由和開源軟件(FOSS)原則。嚴格來說,“Linux”僅指內核,但通常被用來泛指基于Linux內核的完整操作系統(如Ubuntu、Fedora、Centos等),這些系統包含內核、工具鏈、庫及應用程序。
? ? ? ? 首先我們來說一下,什么是命令,為什么要學習命令?
? ? ? ? 類比我們的windows操作系統,我們可以使用圖形化界面這個“外殼程序”來使用操作系統,同樣我們可以使用命令行,也就是一串串的命令,來操作我們的linux系統。命令行就是外殼程序。一串串的指令,就相當于我們使用鼠標在windows系統上的一次次點擊,拖動。
? ? ? ? 那么我們用戶,通過命令行,對這個外殼程序“發號施令”,接著,外殼程序通過命令行解釋器,把我們的命令翻譯成機器能夠看懂的話,機器再根據這個翻譯出來的話去執行。接著,執行結果在通過外殼程序反饋給我們。
? ? ? ? 簡單總結一下外殼程序的意義:
? ? ? ? (1)可以保護操作系統。
? ? ? ? (2)可以便于用戶使用操作系統。
? ? ? ? 所以說,各種命令是程序員和linux系統打交道必不可少的技能。那么我們在介紹完linux系統之后先簡單介紹一些基礎指令。
Linux的特點
開源與自由
Linux內核及其多數發行版遵循GNU通用公共許可證(GPL),用戶可自由使用、修改和分發代碼。
多用戶與多任務
支持多用戶同時訪問,且能高效處理多任務并行運行。
高穩定性與安全性
由于模塊化設計和開源特性,漏洞修復迅速,系統崩潰概率低,適合服務器等關鍵場景。
跨平臺支持
兼容x86、ARM、PowerPC等多種硬件架構,從嵌入式設備到超級計算機均可運行。
常見的Linux發行版
Debian系
如Ubuntu、Linux Mint,以用戶友好性和豐富的軟件倉庫著稱。
Red Hat系
包括Fedora(社區版)和RHEL(企業版),強調穩定性和商業支持。
Arch Linux
滾動更新模式,適合高級用戶,提供高度自定義性。
其他專精發行版
如Kali Linux(安全測試)、CentOS(服務器優化)等。
Linux的應用場景
服務器領域
超過90%的互聯網服務器運行Linux,得益于其穩定性、低資源占用和開源生態。
嵌入式系統
智能家電、路由器、工業設備等廣泛采用輕量級Linux版本。
開發與云計算
開發者常用Linux作為開發環境,云平臺(如AWS、Azure)大量提供Linux虛擬機。
桌面與教育
部分發行版專注于桌面體驗,如Ubuntu;也用于計算機科學教育。
Linux與其他操作系統的區別
與Windows對比
Linux更輕量、可定制,但部分專業軟件(如Adobe套件)兼容性較差。
與macOS對比
macOS基于Unix(BSD),但閉源;Linux提供更自由的硬件選擇和開源生態。
2、基礎指令
? ? ? ? 我們在家目錄下創建以下這些文件,為了測試各種指令:
? ? ? ? ls指令
語法: ls [選項]? [目錄或文件]
? ? ? ? ls?指令可以列出當前目錄下的所有子目錄和文件。對于列出的每個文件,列出文件名以及其他信息。
? ? ? ? 常用選項:
-a 列出目錄下的所有文件,包括以.開頭的隱含文件。
-d 將目錄像文件一樣顯示,而不是顯示其下的文件。
-i 輸出文件的i節點的索引信息。如 ls -ai 指定文件
-k 以k字節的形式表示文件的大小。
-l 列出文件的詳細信息。ls -l可以用 ll 代替
-n 用數字的UID,GID代替名稱
-F 在每個文件名后附上一個字符以說明該文件的類型," * "表示可執行的普通文件;" /?"表示目錄;“@”表示符號鏈接;“|” 表示FIFOs;"="表示套接字。
-r 對目錄的反向排序
-t 以時間排序
-s 在l文件名后輸出該文件的大小。
-R 列出所有子目錄下的文件。
-l 一行只輸出一個文件
示例:
? ? ? ? pwd命令?
? ? ? ? pwd命令可以顯示用戶當前所在目錄。
示例:
? ? ? ? cd指令
?????????Linux系統中,萬物皆是文件。一個個文件通過目錄樹進行鏈接。對于某個文件,我們需要通過指定的路徑去訪問。
? ? ? ? 絕對路徑:一般從/開始,不依賴其他目錄的定位文件的方式。
? ? ? ? 相對路徑:相對于當前用戶所處目錄,定位文件的路徑方式。
? ? ? ? cd指令可以改變工作目錄。將當前工作目錄改變到指定的目錄下。cd+絕對路徑或cd+相對路徑。cd ~ 快速進入家目錄。
示例:
? ? ? ? touch指令
? ? ? ? touch指令可以更改文檔或目錄的日期時間,包括存取時間和更改時間,或者新建一個文件。
語法:touch [選項]? 文件...
? ? ? ? 常用選項:
-a? 僅更改訪問時間
-c? 僅更改修改時間
示例:
? ? mkdir指令?
? ? ? ? mkdir指令可以創建目錄
語法: mkdir [選項] dirname
示例:?
? ? ? ? rmdir 指令
????????rmdir是和mkdir相對的指令。可以使用rmdir刪除目錄。
語法:rmdir [選項] [dirname]
? ? ? ? 常用選項:?-p 當子目錄被刪除后父目錄也變成空目錄的話,就連父目錄一起刪除。
? ? ? ? rm指令
????????rm命令可以同時刪除文件或目錄。
語法: rm [選項] [dirname/dir]
?????????常用選項:
-f 即使文件屬性為只讀,也直接刪除
-i 刪除前注意詢問確認
-r 刪除目錄及其下所有文件? ??
示例:?
? ? ? ? man指令
? ? ? ? ?我們可以通過man指令查看linux命令手冊
語法: man [選項] 命令
? ? ? ? 常用選項:
-k 根據關鍵字搜索聯機幫助
num 只在第num章節查找
-a 將所有章節的都顯示出來
Linux 手冊頁分為多個章節,不同章節內容不同:
- 用戶命令(如?
ls
、cd
)。 - 系統調用(如?
open
、fork
)。 - 庫函數(如?
printf
、malloc
)。 - 設備文件(如?
/dev/null
)。 - 文件格式(如?
/etc/passwd
?的格式)。 - 游戲和屏保。
- 雜項(如宏包、協議)。
- 系統管理命令(如?
ifconfig
、iptables
)。
? ? ? ? ?cp指令
? ? ? ? cp指令可以復制文件和目錄
語法:? cp [選項] 源文件或目錄 目標文件或目錄
? ? ? ? 常用選項:
-f 強制復制文件或目錄,不論目的文件或目錄是否已經存在
-i 覆蓋文件之前先詢問用戶
-r 遞歸處理,將指定目錄下的文件與子目錄一并處理。
示例:
? ? ? ? mv指令?
? ? ? ? mv指令是move的縮寫,可以用來移動文件或者將文件改名。
語法:mv [選項] 源文件或目錄 目標文件或目錄
? ? ? ? 常用選項:
-f 如果目標文件存在則強制覆蓋
-i 如果目標文件存在會詢問是否覆蓋?
?示例:
? ? ? ? 移動文件:
? ? ? ?修改文件名:
????????cat指令?
? ? ? ? cat指令可以查看目標文件的內容
語法: cat [選項] [文件]
? ? ? ? 常用選項:
-b 對非空輸出行編號
-n 對輸出的所有行編號
-s 不輸出多行空行
示例:
? ? ? ? 我事先在code.c文件中寫入了一萬行重復內容,如果cat code.c的話,這些內容會一股腦的顯示出來:
? ? ? ? more指令?
? ? ? ? ?more命令功能類似cat,但是比cat更好一些,因為他支持向下翻頁(空格鍵)
? ? ? ? 常用選項:
-n 指定輸出行數
q 退出more
示例:
? ? ? ? less指令?
? ? ? ? ?less比more更強大,因為在使用less的時候我們既可以往前翻,也可以往后翻(通過上下箭頭或空格鍵)。也就是說less可以隨意瀏覽文件,而more僅能向前移動。less在查看之前不會加載整個文件。
? ? ? ? 所以說,在less存在的情況下前面兩個指令就有點小丑了。
語法: less [參數] 文件
? ? ? ? 常用選項:
-i 忽略搜索時的大小寫
-N 顯示每行的行號
/ 字符串? 向下搜索字符串
?字符串 向上搜索字符串
n 重復前一個搜索
N 反向重復前一個搜索
q 退出?
示例: ?
? ? ? ? ? ?搜索功能不好通過截圖展示,大家自己測試吧
? ? ? ? 我們也可以在下方直接輸入數字,他就會自動跳轉這個數字行數。?
? ? ? ? head指令
?????????head與tail就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head用來顯示檔案的開頭至標準輸出中,而tail是查看文檔的結尾。
語法:head [參數...] [文件...]
? ? ? ? 常用選項:
-n<行數> 顯示的行數
? ? ? ? tail指令?
? ? ? ? 用于顯示指定文件末尾內容,不指定文件時,作為輸入信息進行處理。常用于查看日志文件。
? ? ? ? 常用選項:
-f 循環讀取
-n<行數> 顯示行數
示例:
? ? ? ? date 指令
?????????可以用指定格式顯示系統時間
語法:data [選項] ...
? ? ? ? 常用選項:
%H 小時
%M 分鐘
%S 秒
%X 相當于 %H:%M:%S
%d 日
%m 月份
%Y 完整年份
%F 相當于%Y-%m-%d
%s 時間戳
-s 修改時間
? ? ? ? 時間戳:以1970年1月1日(UTC)為起點,計算經過的秒數或毫秒數。例如,1625097600
表示2021年6月30日0點0分0秒(UTC)。
示例:
? ? ? ? cal指令
? ? ? ? cal命令可以用來顯示公歷日歷。
格式:cal [選項]? 年份
? ? ? ? ?常用選項:
-3 顯示系統前一個月,當前月,下一個月的月歷
-j 顯示在當年中的第幾天
-y 顯示當前年份的日歷
示例:
? ? ? ? find指令?
? ? ? ? find指令可以在目錄中搜索文件。find指令時比較復雜的,因為他的選項比較多,我們就介紹一個常用的,find指令是有可能會訪問磁盤的。
語法:find pathname [選項]
? ? ? ? 常用選項:
? ? ? ? -name 按照文件名查找文件。
示例:
?????????which指令
? ? ? ? which指令可以搜索系統指令的命令。
語法: which + 指令
示例:
? ? ? ? whereis 指令
? ? ? ? 用于找到程序的源,二進制文件或手冊。可以理解為升級版的which
示例:
?????????alias 指令
? ? ? ? 用于設置命令的別名
語法:alias 別名=' 指令 '
示例:
? ? ? ? ?grep指令
? ? ? ? grep指令可以在指定文件中搜索字符串,并將他所在的行打印出來
語法:grep [選項] 搜索字符串 文件
?常用選項:
-i?
忽略大小寫(case-insensitive)。
-v?
反向匹配,輸出不包含模式的行。
-n?
顯示匹配行的行號。
-r
?或?-R?
遞歸搜索目錄中的文件。
-l?
僅輸出包含匹配項的文件名。
-c?
統計匹配的行數而非顯示內容。
-w?
全詞匹配(避免部分匹配)。
-A NUM?
顯示匹配行及后續NUM行(After context)。
-B NUM?
顯示匹配行及前導NUM行(Before context)。
示例:
? ? ? ? ?我提前在code.c中寫了一小段代碼。
? ? ? ? zip/unzip 指令
? ? ? ? 壓縮與解壓指令
語法: zip 壓縮文件.zip 目錄或文件
? ? ? ? 常用選項:
-r 遞歸處理
?示例:
? ? ? ? 將text1,text2壓縮成combine.zip
? ? ? ? 解壓縮到testunzip文件夾,其中這個-d必不可少,他是告訴系統我們是要解鎖到指定文件夾下,默認是解壓到當前目錄下。
? ? ? ? ?tar 指令
? ? ? ? 這個指令也是打包/解包,但是這個指令更常用也更重要
語法:tar [選項]? dst? src
? ? ? ? 常用選項:
-c? 建立一個壓縮文件的參數指令
-x? 解開一個壓縮文件的參數指令
-t? 查看tarfile里面的文件?
-z? 是否同時具有gzip的屬性(帶著就是打包并壓縮)
-j? 是否具有bzip2的屬性
-v? 壓縮的過程中顯示文件(常用)
-f? 使用檔名,在f之后要立即接檔名
-C? 解壓到指定目錄
? ? ? ? 其實對于tar命令,我們一般使用的選項是-czvf(壓縮)和-xzvf(解壓)、如果去掉z就是打包和解包。
示例:
?????????壓縮:
? ? ? ? 解壓:
? ? ? ? 這里的-C也是用來告訴系統我們要解壓到特定文件夾。
? ? ? ? echo指令
? ? ? ? echo命令默認是在終端輸出文本或變量的值。也就是把文本輸出到顯示器文件。
? ? ? ? 當然echo命令也可以搭配重定向符號>把文本輸出到指定文件中。
? ? ? ? 示例:
? ? ? ? 其中>是覆蓋內容,>>是追加內容。另外,我們!有特殊語義,所以說用 \?轉義一下。
? ? ? ? bc指令
? ? ? ? bc其實就是計算器。并且我們還可以設置計算器的精度。
? ? ? ? 示例:
? ? ? ? ?其中設置精度僅對除法有效。
? ? ? ? uname命令
? ? ? ? ?uname命令可以獲取電腦和操作系統的相關信息。
? ? ? ? 常用選項:-a,全部顯示。
? ? ? ? 示例:
? ? ? ? 我們也可以使用lsb_release -a查看軟件方面更詳細的內容:
? ? ? ?history指令
? ? ? ? 我們可以使用history指令查看歷史上使用過的命令。linux系統可以自動記錄最近的一千條命令。
? ? ? ? 我們可以把歷史命令都放到指定文件中:
????????shutdown指令
? ? ? ? 這個命令就是關機,沒啥好說的。如果你是服務器的話,在執行這個命令之后如果你想重新開啟服務器,就得去你買服務器的那個官網上(比如阿里云,華為,火山...)重新開啟服務器。
? ? ? ? 在linux中,萬物皆文件,而我們各種命令,其實也是別人已經提前寫好的可執行程序而已。?
3、幾個常用熱鍵
? ? ? ? (1)tab補全
? ? ? ? ? ? ? ? 輸入命令的一部分,按tab可以補全命令,或者展示以這串字符開頭的命令都有哪些。
? ? ? ? (2)ctrl+c
? ? ? ? ? ? ? ? ctrl+c可以直接終止當前程序。
? ? ? ? (3)ctrl+d
? ? ? ? ? ? ? ? ctrl+d可以退出。我們可以用ctrl+d退出xshell的登錄。?我們可以使用xshell遠程訪問服務器。
? ? ? ? (4)上下箭頭
? ? ? ? ? ? ? ? 上下箭頭可以看歷史命令。
? ? ? ? (5)ctrl+r
? ? ? ? ? ? ? ? ctrl+r可以搜索歷史命令。
? ? ? ? (6)!
? ? ? ? ? ? ? ? !+字符 可以自動執行歷史上最近的以這個字符開頭的命令。
? ? ? ? 好了,今天的內容就分享到這,我們下期再見!