經過前3節的内容,你已經安裝好一個linux系統,并且學會了基礎的文件相關的操作。接下來,我們更深入地學習使用這個linux系統,以便我們在這裡安裝編譯好一個本地的python解釋器。
上一節,我們一口氣執行了9條新的命令,通過help或man你會發現有些命令的參數達數十個以上,且個個晦澀難懂。不過,即使像我這樣縱橫數年的工作者,常用的參數也僅僅才幾個而已。所以别看某個命令有大量的參數,但是我們可能隻用那麼僅僅幾個參數,在某些特别情況下,我們才會用到其它的參數。
這裡舉個例子,比如我想建立"/tmp/linux/test/1/"這樣一個路徑,該怎麼辦?肯定是用mkdir來辦,所以我打開命令行輸入以下命令執行:
mkdir /tmp/linux/test/1/
就在我滿心歡喜,以為它執行成功時,卻發現系統報了個"No such file or directory"。mkdir默認隻會建立一級目錄,但是"/tmp/linux/test/1/"是一個多級目錄,我們建立一個多級目錄難道要一個一個建太麻煩了吧?别急,我們再來研究一下mkidr,輸入"mkdir --help"再來看一下。
-p, --parents no error if existing, make parent directories as needed
注意到這個參數了嗎?我們的多級目錄是層層關聯的,上級目錄也就是父目錄(parent directories)如果不存在,那也就一同創建。為了觀察它的創建過程,我們還可以再加一個"-v"的參數。所以你可以運行以下命令:
mkdir -pv /tmp/linux/test/1
可以看到如下效果:
所以别看某些命令參數一大堆,我們可能隻會用那麼幾個常用的。特殊情況下,我們可以通過幫助手冊,了解其它參數後來達成我們的特殊目的。
接下來,講一個小知識,極大地提高大家的便利。
剛剛建立好的多級目錄"/tmp/linux/test/1",我們進入到最末端的目錄”1“裡面:
cd /tmp/linux/test/1
pwd
ls
那如果我們想跳轉到上一級目錄test或者看看test裡有什麼東西沒,該怎麼辦?難道使用"cd /tmp/linux/test"跳回去?雖然有tab鍵自動補齊的加持,可是還是太麻煩了。在linux terminal中,有些字符是有特殊作用的,就比如現在這個需求,就可以使用'.'來完成。我們來試試以下的命令:
pwd
# 确保你處于/tmp/linux/test/1之中
cd ..
# 英文中的句号,一個點表示當前目錄,兩個點表示上一級(父目錄)目錄
pwd
# 此時你應該位于/tmp/linux/test之中
cd .
# 在命令行中輸入“cd .”,此時不要按下回車鍵,連按tab鍵兩下,你會發現有兩個目錄:./ 和 ../
# ./ 就是表示當前目錄,而../就是上一級目錄,這個符号不止cd命令可以這麼用,其它命令都可以,比如ls
# 我們先進入到一個目錄中
cd /etc/sysconfig/network-scripts/
# 看一下有什麼東西
ls
# 看一下當前所處的位置
pwd
# 我們看看上一級目錄的内容
ls ..
# 看看本級目錄的内容
ls .
# 接下來我們試試mv和cp能不能使用這個特性
pwd
# 你應該在/etc/sysconfig/network-scripts目錄下
cp ifcfg-ens160 /tmp/linux/test/1/
# 把這個目錄中的文件複制一個到我們剛剛創建好的目錄中
cd /tmp/linux/test/1/
# 回到我們創建的目錄中
ls
# 查看複制過來的文件
cp ifcfg-ens160 ..
# 複制到上級目錄中
cd ..
# 去上級目錄
ls
# 查看剛剛複制過來的文件
mv ifcfg-ens160 ..
# 移動到上一級目錄中
ls
# 這個文件沒有了,被我們移走了
cd ..
# 去上級目錄
ls ifcfg-ens160
# 查看該文件
有了一個便利的特性,在我們浏覽翻閱各種目錄時,會非常方便。
由于我們剛剛做實驗,創建了"/tmp/linux/test/1",tmp是系統的臨時文件夾,我想把我創建的linux及之下的目錄删除掉,怎麼做?
cd /tmp/
rmdir linux/
# rmdir: failed to remove 'linux/': Directory not empty
# Remove the DIRECTORY(ies), if they are empty. 通過--help你會發現rmdir隻會删除空目錄,但linux目錄中還有1這個目錄
# 那試試rm?
rm linux/
# rm: cannot remove 'linux/': Is a directory
# rm也不能删除,那怎麼辦?rm --help看看有什麼特殊參數?
# -r, -R, --recursive remove directories and their contents recursively
# 這一條就是我們需要的,所以試一試?
rm -r linux/
# 看一下linux/目錄還在不在
ls linux/
# ls: cannot access 'linux/': No such file or directory. 看來這個目錄被幹掉了
現在我們學會了文件和文件夾的移動(mv)複制(cp)删除(rm)查看(ls, cat),再學習一點知識就可以在這個linux系統中編譯安裝python解釋器了。
在使用windows系統的過程中,你有沒有遇到下面的情況:
在涉及系統設置更改時,windows會彈出這個窗口提示你是否同意某個軟件對你的系統進行修改,而linux中也有同樣的機制。之後我們編譯安裝python解釋器時,就會對系統進行修改,而我們當前的賬号是普通賬号,當你執行相關操作時,linux系統會拒絕你,比如我們在系統中執行以下命令:
yum install httpd
# yum是redhat的一個軟件安裝管理的命令,Yellowdog Updater, Modified (YUM)
# 我們先不用理會它具體怎麼用,上面的命令是在安裝一個叫httpd的軟件
就會出現如下錯誤:
superuser就是超級用戶,就是指管理員的意思。而windows中彈出的窗口也是在詢問你要不要同意某軟件使用管理員權限,而linux中則是直接拒絕。而linux中想要觸發類似的機制,需要使用一個特殊的命令sudo。
# sudo - execute a command as another user, 以另一個用戶的身份運行命令
sudo yum install httpd
在我們輸入密碼後,就可以安裝這個軟件了:
當你輸入y之後,它就會開始下載安裝httpd這個軟件,我們這裡選擇N,取消掉。
yum是redhat系linux系統中的軟件安裝管理命令,軟件安裝卸載操作會修改系統的某些設置,所以這需要管理員權限才能操作。我們在安裝這個rocky linux時,創建了一個帶有管理員權限的普通用戶:
所以我們在執行yum這個管理員命令時,在前面加一個sudo就可以執行這個操作了,否則就無法執行。
linux系統中有很多機制,這些東西在之後的教程中慢慢講解,一下子講解太多的機制,記不過來也會擾亂學習過程,所以我們細水長流,在linux系列教程中慢慢穿插這些概念。
而今天遇到的機制就是普通用戶與管理員用戶。這兩類用戶在linux系統中可以幹的事情大相徑庭,管理員又稱超級用戶(superuser),它可以在系統中做任何事,linux系統中的默認超級管理員用戶是root,在安裝系統時我們也給它設置過密碼:
而剛剛"sudo yum install httpd",正是使用它的身份執行的這一命令。
而普通用戶不能修改絕大多數的系統設置,僅僅隻能在自己的"home"目錄及公共區域(如/tmp)搞事情。比如你登錄系統後,默認是在自己的家目錄下,比如"/home/lucas"。普通用戶可以在這裡做任何事情,但它不能去"/etc"下搞事情,也不能安裝軟件,重啟網絡等等。
盡管如此,大家在日常工作中都是使用普通用戶進行工作,因為超級管理員權限太大,極易出現誤删除誤操作等危險動作。普通用戶誤删除誤操作并不會危及系統,但是管理員的誤操作非常危險。
打個比方:普通用戶就是家裡的小孩子,而家長就是管理員,我們把金融賬戶當作系統。小孩子再怎麼瘋也不會把家裡的積蓄花掉,隻能消費自己手裡的,而家長就可以分配管理金融賬戶裡的錢,但如果把金融賬号裡的錢讓小孩管理,很可能全部花掉,這對于這個家庭來說是緻命的
所以今後操作時,一定要注意自己的操作,盡量使用普通用戶。确實需要使用超級用戶時,可以使用sudo,特殊需要時再切換到root用戶下。
目前我們所掌握到的東西,足夠支撐我們開始編譯安裝Python解釋器了,當python解釋器安裝完成之後,我們就可以繼續python編程的教程了,同時linux系統的教程也會更新,因為熟悉了解linux對于python編程也是有極大幫助的。
本次教程就到這裡,希望你有所收獲。
,