一、淺談操作系統
1、操作系統是什么?
操作系統是一款做軟硬件管理的軟件
我們可以發現除了上面的應用軟件,操作系統、設備驅動和硬件都是為軟硬件服務的,為了滿足用戶的不同需求,在操作系統之上需要有各種不同的應用軟件。
2、一個好的操作系統衡量標準是什么?
假如你是用戶,在你進行各種操作的時候,一會系統崩潰藍屏了,響應操作一會卡頓,一會正常的,你肯定下次不會再考慮使用了,所以操作系統的穩定是其中的一個標準;當我們正準備和朋友來一場激情的雙人大戰時,電腦開機的速度十分龜速,但好在成功開機了,正興致沖沖的點開游戲時,發現鼠標怎么點擊也沒有反應,等到右下角彈起鼠標驅動程序加載完成,鼠標這才有了反應,由此一個操作系統的速度快不快也是標準之一;在網絡時代,我們對于自己的隱私是及其關注的,如果一個操作系統連最基本的安全都做不到,那就很難有人使用了。
所以穩定、速度、安全是衡量操作系統是否良好的標準。
3、為什么要有操作系統?
操作系統的核心工作:通過對下管理好軟硬件資源的手段,達到對上提供良好的(穩定、速度、安全)的操作環境/使用環境
4、如何理解我們在計算機上的所有操作?
例如我們c語言的printf->將內容打印到顯示屏上
c語言文件操作->對磁盤文件的讀寫操作等等
我們能發現我們在計算機上的所有行為都會轉換成硬件行為!
我們所有的行為,全部都要自上而下貫穿計算機的軟硬件結構。
這種自上而下打個生動形象的比方,硬件就像下面的“牛馬”程序員,設備驅動就像項目經理,管理和分配任務,給我們下面的“牛馬”程序員,而操作系統像是我們的大boos,評判和決策項目,將指標丟給我們項目經理也就是設備驅動。
因此,我們也能推斷出幾乎我們的所有行為,未來都和操作系統直接或間接相關!
5、Linux操作系統和windows操作系統
Linux操作系統的特點:純命令行,當然Linux也有圖形化界面,不過早期Linux都是科研人員、專業人員使用的;windows操作系統的特點:圖形化界面,為了用戶的使用體驗,比起一行行命令行,清晰可視化的圖像化界面無疑更加,不過我們仍然可以通過win+R,輸入cmd打開windows的命令行終端。無論是指令還是圖形化界面,本質其實都是相同的。
6、是先有指令,還是現有圖形化界面?是先有鍵盤,還是現有鼠標?為什么?
第一個問題肯定是現有指令,后有圖形化界面。鍵盤和鼠標誰先出現呢?通過指令和圖形化界面的順序我們能推斷出鍵盤肯定是先出現的,為什么呢?首先早期計算機是關注輸入和輸出的,鍵盤硬件的出現,實現了計算機的輸入。可能大家都曾好奇過,為什么鍵盤的排列順序這么奇怪,而鍵盤的前身正是沿用老式打字機排版。鼠標的出現為圖形化界面帶來實際意義,如果沒有鼠標的點擊,圖形化界面,就發揮不了原本的功能。
二、部分基本指令和知識的補充
1、ls指令
語法:ls空格[選項]空格[目錄或文件]
功能:對于目錄,該命令列出該目錄下的所有子目錄與文件。對于文件,將列出文件名以及其他信息
?常見選項:
-l:列出文件的詳細信息
[xzx@instance-157t533k ~]$ mkdir dir1
[xzx@instance-157t533k ~]$ mkdir dir2
[xzx@instance-157t533k ~]$ mkdir text.txt
[xzx@instance-157t533k ~]$ ls -l
total 12
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt
我們通過mkdir新建目錄,dir1、dir2和test.txt,通過ls -l,我們能看到目錄的名字,目錄的最近一次修改時間,目錄的內存大小
[xzx@instance-157t533k ~]$ ls
dir1 dir2 text.txt
而我們單獨使用ls只會列出該目錄下的所有子目錄與文件
同時我們的ls -l 是等價于ll的
[xzx@instance-157t533k ~]$ ls -l
total 12
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt
[xzx@instance-157t533k ~]$ ll
total 12
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt
可以看到兩次的結果是相同的,所以在日常使用中可以簡寫命名行
-a:列出目錄下的所有文件,包括以.開頭的隱含文件、
[xzx@instance-157t533k ~]$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .cache .config dir1 dir2 text.txt
此時能看到與之前ls展示的文件相比,多出了以.開頭的文件和.、..這兩個文件(后面在單獨解釋)
我們的-l -a可以一起使用,并且-l -a 等價與-al等價與-la
[xzx@instance-157t533k ~]$ ls -a -l
total 44
drwx------ 7 xzx xzx 4096 Aug 30 11:40 .
drwxr-xr-x. 3 root root 4096 Aug 29 19:42 ..
-rw------- 1 xzx xzx 216 Aug 30 11:53 .bash_history
-rw-r--r-- 1 xzx xzx 18 Nov 25 2021 .bash_logout
-rw-r--r-- 1 xzx xzx 193 Nov 25 2021 .bash_profile
-rw-r--r-- 1 xzx xzx 231 Nov 25 2021 .bashrc
drwxrwxr-x 3 xzx xzx 4096 Aug 29 16:24 .cache
drwxrwxr-x 3 xzx xzx 4096 Aug 29 16:24 .config
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt
[xzx@instance-157t533k ~]$ ls -al
total 44
drwx------ 7 xzx xzx 4096 Aug 30 11:40 .
drwxr-xr-x. 3 root root 4096 Aug 29 19:42 ..
-rw------- 1 xzx xzx 237 Aug 30 11:58 .bash_history
-rw-r--r-- 1 xzx xzx 18 Nov 25 2021 .bash_logout
-rw-r--r-- 1 xzx xzx 193 Nov 25 2021 .bash_profile
-rw-r--r-- 1 xzx xzx 231 Nov 25 2021 .bashrc
drwxrwxr-x 3 xzx xzx 4096 Aug 29 16:24 .cache
drwxrwxr-x 3 xzx xzx 4096 Aug 29 16:24 .config
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt
[xzx@instance-157t533k ~]$ ls -la
total 44
drwx------ 7 xzx xzx 4096 Aug 30 11:40 .
drwxr-xr-x. 3 root root 4096 Aug 29 19:42 ..
-rw------- 1 xzx xzx 256 Aug 30 11:58 .bash_history
-rw-r--r-- 1 xzx xzx 18 Nov 25 2021 .bash_logout
-rw-r--r-- 1 xzx xzx 193 Nov 25 2021 .bash_profile
-rw-r--r-- 1 xzx xzx 231 Nov 25 2021 .bashrc
drwxrwxr-x 3 xzx xzx 4096 Aug 29 16:24 .cache
drwxrwxr-x 3 xzx xzx 4096 Aug 29 16:24 .config
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:39 dir1
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 dir2
drwxrwxr-x 2 xzx xzx 4096 Aug 30 11:40 text.txt
-al或者-la或者-l -a:列出所有文件,包括隱藏文件的詳細信息
文件類型:以d開頭:是一個目錄,以-開頭:是一個普通文件
-d:將目錄像文件一樣顯示,而不是顯示其下的文件
[xzx@instance-157t533k ~]$ ls
dir1 dir2 text.txt
[xzx@instance-157t533k ~]$ ls -dl
drwx------ 7 xzx xzx 4096 Aug 30 11:40 .
我們的ls展示當前目錄下我們的子目錄,但我們想要知道我們當前目錄的詳細信息,則可以通過-d -l或者-dl,得到當前目錄的詳細信息
-F:在每個文件名后附上一個字符以說明該文件的類型,“*”表示可執行的普通文件;“/”表示目錄;“@”表 示符號鏈接;“|”表示FIFOs;“=”表示套接字(sockets)。(目錄類型識別)
[xzx@instance-157t533k ~]$ ls -aF
./ .bash_history .bash_profile .cache/ dir1/ text.txt/
../ .bash_logout .bashrc .config/ dir2/
2、pwd指令
語法:pwd
功能:顯示用戶當前所在的目錄
常用選項:無
[xzx@instance-157t533k ~]$ cd dir1
[xzx@instance-157t533k dir1]$ pwd
/home/xzx/dir1
[xzx@instance-157t533k dir1]$ mkdir dirr1
[xzx@instance-157t533k dir1]$ cd dirr1
[xzx@instance-157t533k dirr1]$ pwd
/home/xzx/dir1/dirr1
我們通過cd進入到dirr1,pwd打印的結果也證明了我們進入到dirr1目錄中
這里展示的路徑由“/”分割,所以“/”又叫做路徑分隔符
一個目錄里面可以放多個目錄或者普通文件嗎?可以的
由此我們能推斷出Linux的整個目錄結構:一定是一個多叉樹的樣子
Linux的目錄結構整體是一個多叉樹,它的葉子節點一定是空目錄或者非目錄文件,路上節點一定是分空目錄
所以我們所有的對文件或者目錄的增刪查改,本質都是對這顆多叉樹的增刪查改
.和..是什么?
Linux下任何一個目錄下面都有兩個隱藏文件.和..
.:表示當前路徑
通過pwd:顯示當前命令行操作時所處的目錄。超級用戶/root...,普通用戶/home/名字
[xzx@instance-157t533k dir1]$ pwd
/home/xzx/dir1
[xzx@instance-157t533k dir1]$ cd .
[xzx@instance-157t533k dir1]$ pwd
/home/xzx/dir1
這里使用普通用戶演示,cd:進入目錄,我們先pwd查看自己當前所在目錄,cd .后繼續pwd,發現我們所處目錄未改變
而.存在的意義:幫助用戶定位當前目錄下的一個文件
..:表示當前路徑的上級路徑
[xzx@instance-157t533k 8_30]$ cd test
[xzx@instance-157t533k test]$ pwd
/home/xzx/8_30/test
[xzx@instance-157t533k test]$ cd ..
[xzx@instance-157t533k 8_30]$ pwd
/home/xzx/8_30
我們通過cd進入test目錄,pwd顯示當前所在目錄。cd ..后再pwd,可以看到我們退回到了8_30這個目錄
借用上面的示例圖,我們如何找到test.c這個文件呢?
很明顯就像一條路線一樣,從/->home->bit->test.c,所以我們定位一個文件,通常用路徑來進行定位,而路徑定位則需要確保唯一性。
為什么路徑定位具有唯一性?
對于任何一個節點都只有一個父節點,由子到父的順序是唯一,所以路徑定位具有唯一性
路徑的分類
1、絕對路徑
對于/home/bit/test.c,這樣從根目錄(/)開始定位到指定位置,具有唯一的路徑,稱之為絕對路徑
2、相對路徑
假如我們的lin路徑下有一個c++.txt的文件,而我們當前所在目錄為/usr/bin,我們從bin到c++.txt,只需要../lin/c++.txt即可,而這種以當前所處的路徑為起始參考位置,來進行特定文件的定位,這種路徑稱為:相對路徑
相對路徑的缺點:當所處的路徑發生變化,可能會導致相對路徑發生變化
我們該怎么使用?
1、絕對路徑往往比較長,但是能保證不變,一般在固定場景配置文件中使用
2、一般命令行輸入,比較常用相對路徑
3、cd指令
語法:cd空格目錄名
功能:改變工作目錄。將當前工作目錄改變到指定的目錄下
常見選項:
1、cd ..:返回上級路徑
[xzx@instance-157t533k 8_30]$ cd test
[xzx@instance-157t533k test]$ pwd
/home/xzx/8_30/test
[xzx@instance-157t533k test]$ cd ..
[xzx@instance-157t533k 8_30]$ pwd
/home/xzx/8_30
2、cd /home/zhangsan/Linux/:絕對路徑
3、cd ../lisi/Linux/:相對路徑
4、cd ~:進入用戶的家目錄
[xzx@instance-157t533k 8_30]$ pwd
/home/xzx/8_30
[xzx@instance-157t533k 8_30]$ cd ~
[xzx@instance-157t533k ~]$ pwd
/home/xzx
家目錄的區別:root用戶的家目錄是/root,普通用戶的家目錄是/home/xxx這里xxx代表用戶的名字
5、cd -:返回最近(上一次)訪問的目錄
[xzx@instance-157t533k 8_30]$ pwd
/home/xzx/8_30
[xzx@instance-157t533k 8_30]$ cd test
[xzx@instance-157t533k test]$ pwd
/home/xzx/8_30/test
[xzx@instance-157t533k test]$ cd -
/home/xzx/8_30
4、touch指令
語法:touch空格[選項]...文件...
功能:touch命令參數可更改文檔或者目錄的日期時間,包括存取時間和更改時間,或者建立一個不存在的文件
常見選項:
touch空格+文件名:創建一個普通文件
[xzx@instance-157t533k 8_30]$ touch data.txt
[xzx@instance-157t533k 8_30]$ ll
total 192
-rw-rw-r-- 1 xzx xzx 0 Aug 30 22:53 data.txt
-rw-rw-r-- 1 xzx xzx 168894 Aug 30 19:55 log.txt
-rw-rw-r-- 1 xzx xzx 16233 Aug 30 20:44 temp.txt
drwxrwxr-x 2 xzx xzx 4096 Aug 30 22:01 test
-rw-rw-r-- 1 xzx xzx 133 Aug 30 18:51 test.c
5、mkdir指令
語法:mkdir空格[選項]dirname...
功能:在當前目錄下創建一個名為“dirname”的目錄
常用選項:
[xzx@instance-157t533k 8_30]$ mkdir d1
[xzx@instance-157t533k 8_30]$ cd d1
[xzx@instance-157t533k d1]$ mkdir d2
[xzx@instance-157t533k d1]$ cd d2
[xzx@instance-157t533k d2]$ mkdir d3
[xzx@instance-157t533k d2]$ cd d3
[xzx@instance-157t533k d3]$ pwd
/home/xzx/8_30/d1/d2/d3
我們想要創建d1/d2/d3這樣的路徑,如果這樣一層一層的創建,顯然十分麻煩,此時-p排上用場
-p:-p,-parents可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄
[xzx@instance-157t533k 8_30]$ mkdir -p d11/d22/d33
[xzx@instance-157t533k 8_30]$ tree
.
├── d1
│?? └── d2
│?? └── d3
├── d11
│?? └── d22
│?? └── d33
├── data.txt
├── log.txt
├── temp.txt
├── test
└── test.c
通過mkdir -p d11/d22/d33,一次性創立出一整條路經,對于這種樹形展示當前目錄和文件,下面會單獨介紹
樹形展示
1、xshell是沒有自帶的,我們輸入tree指令沒有反應
2、需要一個root賬號
3、輸入 yum install -y tree 回車后,系統自動開始安裝
結尾
到這里,關于操作系統的基礎認知和 Linux 核心指令的分享就暫告一段落了。從理解操作系統如何充當軟硬件的 “中間人”,到親手用指令操控文件與目錄,其實我們每一次輸入命令、查看結果的過程,都是在和計算機的底層邏輯對話。
這些基礎指令看似簡單,卻是玩轉 Linux 的第一步 —— 后續無論是處理文件、管理進程,還是搭建服務,都離不開這些 “基本功”。如果剛開始記不住所有選項也沒關系,多動手嘗試ls -l
看文件詳情、用cd ..
回退目錄、拿mkdir -p
創建層級路徑,慢慢就會形成肌肉記憶。
操作系統的世界遠不止這些,還有更多底層原理和實用技巧等著探索。希望這篇內容能幫你推開大門,接下來就帶著好奇心,繼續在指令行里 “折騰” 吧!