目錄
- 1. 引子:
- 1.1 簡述:操作系統
- 1.2 學習工具
- 2. Linux操作系統中的一些基礎概念與指令
- 2.1 簡單指令
- 2.2 ls指令與文件
- 2.3 cd指令與目錄
- 2.4 文件目錄的新建與刪除指令
- 2.5 補充指令1:
- 2.6 文件編輯與拷貝剪切
- 2.7 文件的查看
- 2.8 時間相關指令
- 2.9 查找指令
- 2.10 行文本過濾工具與打包壓縮
- 2.11 補充指令2:
1. 引子:
1.1 簡述:操作系統
在我們日常的認識中,計算機是由硬件(顯示器,鍵盤等)與軟件(視頻,游戲軟件等)組成的。當我們去更深入了解時,可知計算機可以簡單劃分為如下的層狀結構:
從圖中可見,操作系統正處于承上啟下的位置。而操作系統也正是一款進行軟硬件資源管理的軟件,它合理高效的調配軟硬件資源來對其上的應用程序提供良好的穩定的運行服務。
1.2 學習工具
在學習Linux操作系統的過程中我所使用的工具為Xshell,其是一款遠程終端軟件,通過計算機網絡調用云服務器。
- 下載鏈接:Xshell官網
- 云服務器將操作系統桌面的部分裁剪掉了,而命令行與圖標的操作方式本質上沒有什么不同,命令行相交于圖標反而更高效。
- Xshell中的粘貼(Ctrl + insert)與復制(Shift + insert)快捷鍵。
- 于Xshell終端中輸入 ifconfig 指令,可查看ip地址
- Xshell終端中登錄遠程服務器的方式:ssh @[用戶名][服務器公網ip]
2. Linux操作系統中的一些基礎概念與指令
注:指令的出現時間早于圖形化界面,二者在本質上并無區別。
2.1 簡單指令
指令1:whoami
指令意義:查看當前賬號
指令2:who
指令意義:查看當前系統中有哪些賬戶
指令3:pwd
指令意義:查看當前所處目錄
2.2 ls指令與文件
<1> 指令:ls
指令意義: 顯示當前目錄下所有可見文件的名稱
<2> 指令:ls -l
指令意義:顯示當前目錄下所有可見文件與目錄的信息(文件類型,大小,文件名等)
注:文件信息被也稱為文件與目錄屬性
補充:以d
開頭的為目錄,以l
開頭的為文件
<3> 指令:ls -a
指令意義:顯示當前目錄下的所有文件與目錄名
注:目錄中存在著我們正常情況下不可見的隱藏文件與目錄,隱藏文件的文件名都以.
開頭
<4> 指令:ls -al
指令意義:指令ls -a 與 指令ls -l的復合使用,其意義為查看所有文件(包含隱藏文件)的文件屬性
<5> 指令:ls -d
指令意義:只查看當前目錄的目錄名
<6> 知識拓展:文件的構成
- 當我們創建一個新空文件后,其文件內容顯示為0kb,可此文件是否在真的不占用磁盤呢。試試上,空文件并非不占用空間,文件實則由兩部分構成,一是文件內容,二是文件屬性。
- 注:文件 = 文件信息 + 文件屬性(文件信息:文件名,文件內容代銷,文件創建時間等)
2.3 cd指令與目錄
<1> 知識拓展:Linux操作系統中的目錄結構
目錄的結構為一棵多叉樹
圖1:
路徑:本質上,路徑為多叉樹的一條條搜索路徑
<1> 絕對路徑:從根目錄開始一直到達指定目錄的路徑(只有一條,具有唯一性)
<2> 相對路徑:相對自身為參考點到達指定目錄的路徑路徑的寫法:
<1> 根目錄:在樹這一數據結構的學習中,我們知道根結點為沒有父親結點(父親結點為其自身)的結點。根目錄的概念亦是相同,根目錄,即為沒有上級目錄的目錄,其名稱為/
<2> 路徑的表示方式:當我們想要表示一個目錄的絕對路徑時,我們需從根目錄開始,逐步進入下級目錄,直至到達尋找目錄停止。在這一過程中我們經過所有目錄,按照先后順序將他們串聯起來其間以路徑分隔符/
分開,即為這一目錄的絕對路徑。
注:以圖1中的目錄dir_b1為例,其絕對路徑為/dir_b/dir_b1
<3> 隱藏目錄與相對路徑:每個目錄下都存在著兩個隱藏目錄,在我們使用指令ls -l查看目錄中的文件信息時,我們會發現名為..與.
的兩個目錄,其中..
代表上級目錄.
代表此目錄。因此,同樣表示dir_d1目錄的路徑時我們所處dir_a目錄,可以使用相對路徑的表示方式,進行如下操作:
../dir_b/dir_b1
補充:
<1> 目錄結構的葉子結點一定是普通文件或者空目錄
<2> 目錄結構的路上結點一定時目錄
<2> 指令:cd [目錄路徑](change dir)
指令意義:更改所處目錄
<3> 指令:cd ~
- 指令意義:跳轉回當前用戶的家目錄。
- 補充:在操作系統中用戶都有一個屬于自己的家目錄,超級用戶為
/root
,普通用戶為/home/用戶名
<4> 指令:cd -
指令意義:跳轉回最近上一次所處的目錄
<5> 指令:tree [目錄路徑]
- 指令意義:將指定目錄中的文件與子目錄以樹狀的結構表示出來
- 例:
tree.
列出當前目錄- 安裝指令:
yum install -y tree
2.4 文件目錄的新建與刪除指令
<1> 指令:touch [文件]
- 指令意義:新建一個不存在的文件
- 補充:一個目錄下不能存在同名的文件和目錄
<2> 指令:mkdir [目錄]
- 指令意義:創建一個新目錄
- 補充:midir -p [目錄路徑]
遞歸創建多級目錄
<3> 指令: rmdir [目錄]
- 指令意義:刪除目錄(只能刪除空目錄)
- 補充:rm -f[目錄/文件]
強制刪除目錄或文件- 補充:rm -rf[目錄/文件]
強制性遞歸刪除目錄及其中的內容不再詢問
2.5 補充指令1:
<1> 拓展指令:stat [文件名]
指令意義:查看文件更多的屬性列表,ACM時間等
<2> 指令:man [指令]
- 指令意義:查看參數指令的意義
- 安裝額外手冊:
yum install -y man-pages
- 補充:man [手冊編號] [指令]
在指定手冊中查找參數指令- 注:指令的本質是可執行程序,printf 在Linux操作系統中也是一條指令(C語言編寫的可執行文件)
2.6 文件編輯與拷貝剪切
<1> 指令:cp [文件/目錄] [目錄]
- 指令意義:將文件拷貝至指定目錄(當目錄不為空時,無法正常拷貝)
- 補充: cp -rf [目錄][目錄]
將目錄即中的所有內容強制遞歸拷貝至指定目錄- 補充:cp -rf指令 在拷貝目錄時,若不存在指定目錄,則會將拷貝過去的目錄更改為指定目錄參數的名字
- 補充: 拷貝目錄時,不會拷貝目錄中的隱藏文件
- 補充:
cp -rf * [目錄]
,將當前目錄下的所有內容拷貝至指定目錄(通配符*
,代表指定目錄下的全部內容)
<2> 指令:mv [文件/目錄] [目錄]
- 指令意義:剪切目錄或文件到指定目錄
- 補充:當參數目錄不存在時,剪切目錄會更改為參數目錄的名字。
因此,我們可以通過在當前目錄異名剪切指定目錄/文件來實現重命名。
<3> 補充:指令:alias [新指令別名]=‘指令’
- 指令意義:將指令重命名(重啟系統后失效)
- 指令:which [指令]
可查看到指令在系統的位置- 指令的本質時可執行程序,所以實際上指令的
安裝就是將可執行程序拷貝到系統可以識別的路徑下
刪除就是從此路徑下移除。
<4> 指令:nano [文件]
- 指令意義:打開文件,對文件進行編輯
- nano編輯器安裝指令
yum install -y nano
2.7 文件的查看
<1> 指令:echo [字符] / echo “字符”(自帶換行)
- 指令意義:在顯示器上打印指定內容
補充1:Linux操作系統的設計思想
echo(回響)指令向顯示器上打印內容,我們亦可以理解為向顯示器上寫入內容,然后顯示器進行了回顯。
在Linux操作系統中,我們將一切軟硬件資源都理解為文件,這樣減少了編碼維護的成本。大部分的硬件都由其的讀寫方法,根據作用不同,有些為空,鍵盤有寫方法,讀方法為空。
補充2:輸入輸出重定向
指令:echo “字符” > [文件]
此條指令的含義為將原本向顯示器輸出的內容,寫入到一個指定文件中(當文件不存在,新建一個文件)
! 輸出重定向操作符>
與輸入重定向操作符<
- 使用輸出重定向
>
向文件寫入內容時,每次寫入都會將文件內的已有內容清空。- 在我們想要向文件追加內容而不清空原有內容時,我們應使用追加重定向操作符
>>
。
<2> 指令:cat [文件]
- 指令意義:打印文件內容
- 指令:cat(從鍵盤中讀取打印,不自帶換行)
鍵盤文件讀取什么,就像顯示器寫入什么(輸入什么,打印什么)- 指令:cat -n(帶行號的打印)
- 指令:cat -s(不輸出多行空行的打印)
- 指令:tac [文件](逆向輸出文件內容)
- 指令:cat < [文件](從文件中讀取內容打印)
(聯系C中的fopen函數)
<3> 指令:more [文件] / less [文件]
注:cat只適合查看小文件,當我們需要查看大文件時,我們應使用more/less命令。
- 指令:more(通過 Ctrl + Enter鍵換行,Ctrl + C中斷)
- 指令:less(可使用上下鍵,輸入跳轉至指定行號,更加靈活,q鍵退出)
- 大文件創造命令
i=0; while [ $i -le 100000 ]; do echo "hello $i"; let i++; done > file.txt
<4> 指令: head -[行數] [文件] / tail -[行數] [文件]
- 指令:head查看前n行的文件內容
- 指令:tail查看后n行的文件
補充:獲取大文件指定區間內的內容
讀取[80000, 80010]之間的內容:
- 先讀取前80010行的內容創建一個文件,再讀取新建文件的后10行內容。
- 命令行通道:
|
(將前一個命令的輸出結果傳輸給下一個命令)
由此,可以將創建中間文件的步驟優化,實際指令如下:
head -80010 file.txt | tail -10
2.8 時間相關指令
<1> 指令:date
- 指令意義:顯示時間
- 補充:(格式化輸出選項)
<1> date +%Y(輸出年份)
<2> date +%m(輸出月份)
<3> date + %d(輸出日期)
<4> date + %H(輸出小時)
<5> date + %M(輸出分鐘)
<6> date + %S(輸出秒數)
注:格式化輸出選項可進行復合使用
date +%Y-%m-%d / %H:%M:%S
(以年-月-日 / 時:分:秒的格式輸出時間,分隔符可以任意替換)- date -d @0
(返回時間戳,1970年1月1日00:00:00,根據時區略有不同)- 時間在軟件開發,操作系統中的意義:
因為時間戳的連續性唯一性,其衍生出的使用開發日志,記錄軟件開發的關鍵結點,當項目出現問題時可以輔助程序員進行問題查找。
<2> 指令:cal
- 指令意義:打印當前月份的日歷
- cal [年份](打印指定年份的日歷)
- cal -1,cal -3(打印當前一個月的日歷,打印先在往后三個月的日歷)
2.9 查找指令
<1> 指令:find -name [文件名]
注:此指令的指令選項很多,日后慢慢了解學習。
- 指令意義:查找當前目錄下所有文件名為文件參數的文件。
(以深度優先的算法遍歷樹狀結構,初次較慢,其后調用有緩存)
<2> 指令: which [指令]
- 指令意義:在系統中查找參數指令的位置
<3> 指令 whereis [關鍵字符]
- 指令意義:查找文檔
(whereis test.*,含test的文檔,文件后綴任意,通配符)
2.10 行文本過濾工具與打包壓縮
<1> 指令:grep ‘字符’ [文件]
- 指令意義:篩選出文件存在指定字符的行
- grep -i ‘字符’ [文件](忽略字符大小寫篩選)
- grep -n ‘字符’ [文件](打印刪選行時標識行號)
- grep -v ‘字符’ [文件](篩選出不含指定字符的行)
- ps指令,查看進程,ps ajx指令查看所有進程
ps 指令配合使用可篩選出指定日志等級(error等)的信息
ps ajx | grep ‘sleep’
<2> 指令:sort [文件]
- 指令意義:將文件中的內容按照特定排序規則排序
- sort -r [文件] (反向排序)
<3> 指令:uniq [文件]或uniq -u [文件]
- 指令意義:將文件相鄰且內容相同的行去重合并
- uniq -d [文件](顯示出重復的行)
- uniq -c [文件](列出所有行重復的次數)
- 補充:wc [文件](統計文件中的字符數)
wc -l [文件](統計出文件的行數)
補充:sort指令與uniq指令一起使用可以將文件去重(sort [文件] | uniq)
<5> 指令:zip 與 unzip
補充:壓縮與打包
文件項目的打包與壓縮是文件傳輸的常用手段
- 打包:將多個文件合并為一個文件,防止文件丟失
- 壓縮:通過各種壓縮算法將文件內容減少
(網絡傳輸更節省時間,不同的壓縮文件有不同的壓縮算法)
- 指令:zip [文件.zip] [文件]
- 指令意義:將文件壓縮(當目錄不為空是,無法正常將整個目錄壓縮,只能壓縮為一個空目錄)
- zip -r [文件.zip] [目錄](遞歸式的將整個目錄壓縮為一個文件)
- 指令:unzip [文件.zip] -d [目錄]
- 指令意義:將壓縮的文件解壓縮到一個目錄中或解壓縮為一個新目錄
<6> 指令:tar -cxf [文件.tar] [目錄]
- 指令意義:(-c創建,-z壓縮,-f檔名)以tar的方式壓縮真個目錄
- tar -cvxf [文件.tar] [目錄] (壓縮目錄,顯示過程)
- tar -xvzf [文件.tar] -C [目錄](解壓縮文件到指定目錄,顯示過程)(-v 顯示過程)
2.11 補充指令2:
<1> 指令:uname -a
- 指令意義:查看系統體系結構
- 補充: uname -r
查看計算機架構(發行版,內存信息等)
<2> 指令:historty
- 指令意義:查看登錄開始目前為止輸入過的所有指令
<3> 指令:‘字符提示’ + 雙擊Tab鍵
- 指令意義:檢索含提示字符的所有指令
<4> 快捷鍵 Ctrl + C(中斷)快捷鍵 Ctrl + D(直接退出系統)
<5> 指令:shutdown
- 指令意義:關機
- shudown -t [秒數]
多少秒后關機- shutdown -h
立即關機- reboot(直接關機)
<6> 指令:sz [文件]
- 指令意義:從Linux操作系統中傳輸文件至windows系統
- 安裝指令:
yum install -y lrzsz
<7> 補充:Linux系統向另一個Linux系統中傳輸文件
指令:scp [文件.tgz] [用戶]@[公網ip] : [指定目錄]