Linux筆記day03:快速上手幾個(gè)Linux命令

? ? ? ? Linux操作系統(tǒng)有很多功能,我們有很多種方式可以使用這些功能,其中最簡(jiǎn)單和直接的方式就是命令行。命令行就相當(dāng)于我們請(qǐng)求服務(wù)使用的專業(yè)術(shù)語(yǔ)。做任何事情,第一步就是要學(xué)會(huì)使用正確的術(shù)語(yǔ)。這樣,Linux作為服務(wù)方,才能夠聽(tīng)懂。

? ? 1用戶和密碼

? ? ? ? Windows系統(tǒng)中有一個(gè)默認(rèn)的叫Administrator的用戶,也就是系統(tǒng)管理員,它的權(quán)限很大,可以在這個(gè)系統(tǒng)上干任何事。Linux上面也有一個(gè)類似的用戶,叫做Root,同樣的,它也具有最高的操作權(quán)限。

? ? ? ? 有了用戶名,也需要一個(gè)密碼,不管是Windows還是Linux,它們的密碼都是在操作系統(tǒng)安裝的過(guò)程中就設(shè)置好的。

? ? ? ? 也可以對(duì)密碼進(jìn)行修改,命令:passwd,輸入這個(gè)命令后會(huì)提示輸入新的密碼。

? ? ? ? 在Linux中我們也可以創(chuàng)建新的用戶,命令:useradd。

? ? ? ? 如,useradd lv

? ? ? ? 執(zhí)行這個(gè)命令后lv這個(gè)用戶就被創(chuàng)建了,它并不會(huì)彈出提示輸入密碼的命令,因?yàn)榻酉聛?lái)需要自己執(zhí)行:passwd lv,來(lái)設(shè)置密碼。

? ? ? ? 在Linux中,用戶也是分組的,剛剛我們創(chuàng)建用戶的時(shí)候并沒(méi)有說(shuō)明是哪個(gè)組的,于是默認(rèn)就會(huì)創(chuàng)建一個(gè)和用戶名同名的組。

? ? ? ? 當(dāng)然我們也可以在創(chuàng)建用戶的時(shí)候直接指定屬于哪個(gè)組,可以使用命令:man useradd,查看詳細(xì)的幫助文檔,找到指定group的命令參數(shù)。

? ? ? ? 我們都知道,Linux里是“命令行+文件”模式,對(duì)于用戶管理來(lái)說(shuō),也是一樣的。咱們通過(guò)命令創(chuàng)建的用戶,其實(shí)是放在/etc/passwd文件里的。這是一個(gè)文本文件。我們可以通過(guò)cat命令,將里面的內(nèi)容輸出在命令行上。組的信息我們放在/etc/group文件中。

? ? ? ? 在passwd文件里,x的地方是密碼,密碼可是秘密呢,不能放在這里,不然誰(shuí)都知道啦。接下來(lái)是用戶ID和組ID,我們可以對(duì)照著下面的group文件來(lái)看。

? ? ? ? /root和/home/cliu8分別是root用戶和cliu8用戶的主目錄,主目錄是用戶登錄進(jìn)去后默認(rèn)的路徑。

? ? ? ? /bin/bash的位置是用于配置登錄后的默認(rèn)交互命令行的。

? ? 2瀏覽文件

? ? ? ? Linux下我們列出當(dāng)前目錄下的文件使用ls,常用的是ls -l,用列表的方式列出文件。

? ? ? ? 其中第一個(gè)字段的第一個(gè)字符是文件類型。

? ? ? ? 若是“-”,表示普通文件;若是“d”,表示目錄。其他文件類型后面遇到了再說(shuō)~

? ? ? ? 第一個(gè)字段剩下的9個(gè)字符是模式,其實(shí)就是權(quán)限位,3個(gè)一組,每一組rwx表示“讀(read)”“寫(xiě)(write)”“執(zhí)行(execute)”。如果是字母,就說(shuō)明有這個(gè)權(quán)限,如果是橫線,就是沒(méi)有這個(gè)權(quán)限。

? ? ? ? 這三組權(quán)限位分別表示文件所屬的用戶權(quán)限、文件所屬的組權(quán)限、其他用戶的權(quán)限。

? ? ? ? 如果想改變權(quán)限,可以使用命令chmod 711 hosts。

? ? ? ? 第二個(gè)字段是硬鏈接數(shù)目。這個(gè)比較復(fù)雜,后面講文件的時(shí)候再說(shuō)~

? ? ? ? 第三個(gè)字段是所屬用戶,第四個(gè)字段是所屬組,第五個(gè)字段是文件的大小,第六個(gè)字段是文件被修改的日期,最后是文件名。我們可以通過(guò)命令:chown,改變所屬用戶,命令:chgrp,改變所屬組。

? ? 3安裝軟件

? ? ? ? 現(xiàn)在我們會(huì)瀏覽文件夾啦,嘻嘻(#^.^#)

? ? ? ? 接下來(lái)應(yīng)該做什么吶?當(dāng)然是安裝哪些“裝機(jī)必備”的軟件啦。

? ? ? ? 以安裝jdk為例,應(yīng)該去哪里下載呢?

? ? ? ? 為了安全起見(jiàn),一般去官網(wǎng)比較好。在JDK的官網(wǎng),它會(huì)給我們這樣一個(gè)列表:

? ? ? ? 對(duì)于windows系統(tǒng),最方便的方式就是下載exe。對(duì)于Linux來(lái)講,我們需要下載rpm或者deb,它們是Linux下面的安裝包。為什么有兩種呢?因?yàn)長(zhǎng)inux現(xiàn)在常用的有兩大體系,一個(gè)是CentOS體系,一個(gè)是Ubuntu體系,前者使用rpm,后者使用deb。

? ? ? ? 在Linux上沒(méi)有雙擊安裝一說(shuō),我們需要命令去按裝。CentOS使用rpm -i jdk-XXX_linux-x64_bin.rpm進(jìn)行安裝,Ubuntu下面使用dpkg -i jdk-XXX_linux-x64_bin.deb。其中-i就是install的意思。

? ? ? ? 安裝好了,怎么查看安裝的軟件列表呢?

? ? ? ? 命令:rpm -qa或者dpkg -l。其中,-q就是query,a就是all,-l就是list。

? ? ? ? 但是如果真的用如上命令去運(yùn)行的話,我們會(huì)發(fā)現(xiàn)這個(gè)列表hin長(zhǎng)hin長(zhǎng),很難找到我們安裝的軟件。這時(shí)我們可以用一個(gè)很好用的搜索工具grep

? ? ? ? rpm -qa|grep jdk,這個(gè)命令是將列出來(lái)的所有軟件形成一個(gè)輸出。|管道,用于連接兩個(gè)程序。前面rpm -qa的輸出就放進(jìn)管道里面,然后作為grep的輸入,grep在它的輸出結(jié)果中再進(jìn)行搜索帶關(guān)鍵詞jdk的行,并且輸出出來(lái)。grep支持正則表達(dá)式,因此搜索的時(shí)候很靈活,再加上管道,這是一個(gè)很常用的模式。同理dpkg -l|grep jdk也是OK的。

? ? ? ? 如果我們不知道關(guān)鍵詞,可以使用rpm -qa|morerpm -qa|less這兩個(gè)命令,它們可以將很長(zhǎng)的結(jié)果分頁(yè)展示出來(lái),這樣我們就可以一個(gè)個(gè)來(lái)找了。

? ? ? ? 其中,more是分頁(yè)后只能往后翻頁(yè),翻到最后一頁(yè)自動(dòng)結(jié)束,返回命令行。less是往前往后都能翻頁(yè),需要輸入q返回命令行,q就是quit。

? ? ? ? 如果要?jiǎng)h除,可以用rpm -edpkg -r-e就是erase,-r就是remove。

? ? ? ? 上面是在沒(méi)有電腦管家的情況下的命令,和windows一樣,Linux也有自己的軟件管家,CentOS下面是yum,Ubuntu下面是apt -get。

? ? ? ? 我們可以通過(guò)關(guān)鍵詞搜索,例如搜索jdk,命令:yum search jdkapt-cache search jdk,可以搜索出很多可以安裝的jdk版本。如果數(shù)目太多,我們可以通過(guò)管道grep、more、less來(lái)進(jìn)行過(guò)濾。? ? ? ??

? ? ? ? 選中之后,我們可以通過(guò)命令:yum install java-11-openjdk.x86_64apt-get install openjdk-9-jdk來(lái)進(jìn)行安裝。

? ? ? ? 卸載的命令是:yum erase java-11-openjdk.x86_64apt-get install openjdk-9-jdk

? ? ? ? Linux允許我們配置從哪里下載這些軟件的,地點(diǎn)就是在配置文件里面。對(duì)于CentOS來(lái)講,配置文件在/etc/yum.repos.d/CentOS-Base.repo里。

? ? ? ? 對(duì)于Ubuntu來(lái)講,配置文件在/etc/apt/sources.list里面。

? ? ? ? 我們看到他們配置的服務(wù)器都是163.com。Linux服務(wù)器遍布全球,最好選一個(gè)就近的地方下載,在中國(guó)的話,163.com就是其中的一個(gè)選擇,這樣就不用跨越重洋請(qǐng)求服務(wù)啦。

? ? ? ? 其實(shí)無(wú)論是先下載再安裝,還是通過(guò)軟件管家進(jìn)行安裝,都是下載一些文件,然后將這些文件放在某個(gè)路徑下,然后在相應(yīng)的配置文件中配置一下。例如,在Windows里面,最終會(huì)變成C:\Program Files下面的一個(gè)文件夾以及注冊(cè)表里的一些配置。而在Linux中則會(huì)存放的更散一些,例如,主執(zhí)行文件會(huì)放在/usr/bin或者/usr/sbin下面,其他的庫(kù)文件會(huì)放在/var下面,配置文件會(huì)放在/etc下面。

? ? ? ? 說(shuō)到這里,還有一個(gè)簡(jiǎn)單粗暴的方法,就是將安裝好的路徑直接下載下來(lái),然后解壓縮稱為一個(gè)完整的路徑。在JDK的安裝目錄中,Windows以后jdk-XXX_Windows-x64_bin.zip,這是Windows下常用的壓縮模式。Linux有jdk-XXX_linux-x64_bin.tar.gz,這是Linux下常用的壓縮模式。

? ? ? ? 我們用Linux上上面的一個(gè)工具wget,后面加上鏈接,就能從網(wǎng)上下載了。下載下來(lái)后,就可以進(jìn)行解壓縮,Linux下面默認(rèn)會(huì)有tar程序來(lái)解壓縮。如:tar xvzf jdk-XXX_linux-x64_bin.tar.gz

? ? ? ? 采用下載壓縮包的方式,我們下面還需要配置一下環(huán)境變量,可以通過(guò)export命令來(lái)完成:

? ? ? ? 但是存在一個(gè)問(wèn)題,export命令僅在當(dāng)前命令行中有效,一旦退出又重新登錄,這個(gè)配置就失效了。

? ? ? ? 下面這個(gè)方法可以進(jìn)行永久配置,在當(dāng)前用戶的默認(rèn)工作目錄,例如/root或者/home/cliu8下面,有一個(gè).bashrc文件,這個(gè)文件是以點(diǎn)點(diǎn)開(kāi)頭的,默認(rèn)看不到,需要ls -la才能看到,a就是all。每次登陸的時(shí)候,這個(gè)文件都會(huì)運(yùn)行,因而把它放在這兒。

? ? ? ? 要編輯.bashrc文件,可以使用文本編輯器vi,也可以使用更加友好的vim。如果默認(rèn)沒(méi)有安裝,可以通過(guò)yum install vim或者apt-get install vim進(jìn)行安裝。

? ? ? ? vim就像windows里的notepad一樣,使我們第一個(gè)要學(xué)會(huì)使用的工具。要不然編輯、查看配置文件,這些操作我們都無(wú)法完成。

? ? ? ? vim是一個(gè)很復(fù)雜的工具,剛上手的時(shí)候我們只需要記住幾個(gè)基本的命令:

? ? ? ? vim hello,打開(kāi)一個(gè)名字叫hello的文件,若不存在,就先創(chuàng)建一個(gè)。

? ? ? ? 打開(kāi)后,如果想要編輯,就將光標(biāo)移動(dòng)到相應(yīng)的位置,輸入i,意思是insert,進(jìn)入編輯模式,可以插入、刪除字符。

? ? ? ? 若想保存編輯的文本,我們使用esc鍵退出編輯模式,然后輸入“”,在它的后面再輸入w,意思是write,這樣就可以保存文本了。

? ? ? ? 若在“:”后面輸入q,意思是quit,這樣就會(huì)退出vim。

? ? ? ? 如果編輯了,還沒(méi)保存,不想要了,可以輸入q!

? ? ? ? 回到剛剛說(shuō)的配置永久的環(huán)境變量,通過(guò)vim .bashrc,將export的兩行加入后,輸入:wq,寫(xiě)入并且退出,這樣就編輯好了。

? ? 5運(yùn)行程序

? ? ? ? Linux執(zhí)行程序有三種方式。

? ? ? ? 1.通過(guò)shell在交互命令行里面運(yùn)行。

? ? ? ? 這是Linux執(zhí)行程序最常用的一種方式。Linux不是根據(jù)后綴名(exe)來(lái)執(zhí)行的,只要文件有x執(zhí)行權(quán)限,都能到文件所在的目錄下,通過(guò)./filename運(yùn)行這個(gè)程序。當(dāng)然,如果放在PATH里設(shè)置的路徑下面,就不用./了,直接輸入文件名就可以運(yùn)行了,Linux會(huì)幫你找。

? ? ? ? 這樣執(zhí)行的程序可能需要和用戶進(jìn)行交互,例如允許讓用戶輸入,然后輸出結(jié)果也打印到交互命令行上。這種方式比較適合運(yùn)行一些簡(jiǎn)單的命令,比如通過(guò)date獲取當(dāng)前時(shí)間。

? ? ? ? 這種模式的缺點(diǎn)是,一旦當(dāng)前的交互命令行退出,程序就停止了。

? ? ? ? 2.后臺(tái)運(yùn)行。

? ? ? ? 用shell在交互命令行里運(yùn)行不能用來(lái)運(yùn)行哪些需要“永遠(yuǎn)”在線的程序。

? ? ? ? 這個(gè)時(shí)候,我們往往使用nohup命令。這個(gè)命令的意思是no hung up(不掛起),也就是說(shuō),當(dāng)前交互命令行退出的時(shí)候,程序還要在。

? ? ? ? 當(dāng)然這個(gè)時(shí)候程序不能霸占交互命令行,而是應(yīng)該在后臺(tái)運(yùn)行。最后加一個(gè)&,就表示后臺(tái)運(yùn)行。

? ? ? ? 使用shell在交互命令行里面運(yùn)行的時(shí)候,有什么都打印在命令行里了,現(xiàn)在在后臺(tái)運(yùn)行了,輸出到文件中則是最好的。

? ? ? ? 最終命令的一般形式為:nohup command>out.file 2>&1 &。其中,“1”表示文件描述符1,表示標(biāo)準(zhǔn)輸出,“2”表示文件描述符2,表示標(biāo)準(zhǔn)錯(cuò)誤輸出,“2>&1”表示標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出合并了。合并到哪里去呢?到out.file里。

? ? ? ? 關(guān)閉這個(gè)進(jìn)程的命令:ps -ef|grep 關(guān)鍵字|awk '{print $2}'|xargs kill -9

? ? ? ? 從這個(gè)命令中,我們多少能看出shell的靈活性和精巧組合。

? ? ? ? 其中ps -ef可以單獨(dú)執(zhí)行,列出所有正在運(yùn)行的程序。

? ? ? ? grep上面介紹過(guò)了,通過(guò)關(guān)鍵字找到咱們剛才啟動(dòng)的程序。

? ? ? ? awk工具可以很靈活地對(duì)文本進(jìn)行處理,這里的awk '{print $2}'是指第二列的內(nèi)容,即運(yùn)行程序的ID。

? ? ? ? 最后我們可以通過(guò)xargs傳遞給kill -9,也就是發(fā)給這個(gè)運(yùn)行的程序一個(gè)信號(hào),讓它關(guān)閉。

? ? ? ? 當(dāng)然,如果我們已經(jīng)知道運(yùn)行程序的ID,可以直接使用kill關(guān)閉運(yùn)行的程序。

? ? ? ? 3.以服務(wù)的方式運(yùn)行。

? ? ? ? 就像Windows中一樣,Linux也有一種程序,在系統(tǒng)啟動(dòng)的時(shí)候就在,稱為服務(wù)。

? ? ? ? 例如常用的數(shù)據(jù)庫(kù)MySQL,就可以使用這種方式運(yùn)行。

? ? ? ? 在Ubuntu中,我們可以通過(guò)apt-get install mysql-server的方式安裝MySQL,然后通過(guò)命令systemctl start mysql啟動(dòng)MySQL,通過(guò)systemctl enable mysql設(shè)置開(kāi)機(jī)啟動(dòng)。之所以成為服務(wù)并且能夠開(kāi)機(jī)啟動(dòng),是因?yàn)樵?b>/lib/systemd/system目錄下會(huì)創(chuàng)建一個(gè)XXX.service的配置文件,里面定義了如何啟動(dòng)、如何關(guān)閉。

? ? ? ? 在CentOS里有些特殊,MySQL被Oracle收購(gòu)后,因?yàn)閾?dān)心授權(quán)問(wèn)題,改為使用MariaDB,它是MySQL的一個(gè)分支,通過(guò)命令yum install mariadb-server mariadb進(jìn)行安裝,命令systemctl start mariadb啟動(dòng),命令systemctl enable mariadb設(shè)置開(kāi)機(jī)啟動(dòng)。這些啟動(dòng)方式的命令和Ubuntu中都是一樣的~同理,它也會(huì)在上述目錄下創(chuàng)建一個(gè)上述名稱的配置文件,從而成為一個(gè)服務(wù)。

? ? ? ? 最后的小知識(shí):

? ? ? ? 關(guān)機(jī):shutdown -h now

? ? ? ? 重啟:reboot

? ? 6小結(jié)

? ? ? ? 掌握了今天學(xué)的這些基本命令就足夠我們熟練操作Linux啦。

? ? ? ? 今天學(xué)習(xí)的命令總結(jié)如下圖:

? ??????

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容