小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linux要想用得好這門手藝就要耍得開(高手們只要掌握不多的一些命令就可以從容完成許多復(fù)雜的任務(wù))

 山峰云繞 2023-01-05 發(fā)布于貴州

  (高手們只要掌握不多的一些命令就可以從容完成許多復(fù)雜的任務(wù))

shell 編程的本質(zhì),就是將多步驟的復(fù)雜任務(wù)分解,然后使用流程控制語句將命令行串接起來,從而實(shí)現(xiàn)強(qiáng)大的自動(dòng)化處理。

Linux 還要用鼠標(biāo)嗎?


https://www.toutiao.com/article/7184726094896038458/?log_from=4c999ea9ac0ed8_1672889779984



現(xiàn)在找互聯(lián)網(wǎng)行業(yè)的技術(shù)工作,有一項(xiàng)技能是必備的,那就是能熟練使用 Linux 操作系統(tǒng)。無論你是想做開發(fā)、測(cè)試、運(yùn)維,看看各大廠的要求吧,都要求會(huì) Linux。

Linux 并不容易上手,尤其是它的命令行(Command Line Interface, CLI)操作方式會(huì)讓初學(xué)者難以適應(yīng)。不過有句話說的是:GUI 使簡單的工作更簡單,而 CLI 使完成艱難的任務(wù)成為可能。

記得我剛?cè)胄袝r(shí),用 Linux 還在 GUI 界面下操作。結(jié)果有一回去跟一位技術(shù)大牛做對(duì)接就出糗了,我正到處尋摸鼠標(biāo),大牛一臉嫌棄地說:“Linux 還要用鼠標(biāo)嗎?”

大牛說著調(diào)出命令行界面,手指在鍵盤上一通飛舞,就把一個(gè)我認(rèn)為很困難的任務(wù)給快速搞定了。這是我對(duì)命令行的威力,第一次有直觀的感受。當(dāng)然,大牛的那句話我也一直記到現(xiàn)在。

命令行,就是 Linux 對(duì)外提供的人機(jī)操作接口。對(duì)于技術(shù)人來說,把操作命令行這門手藝修煉好,就可以將 Linux 的強(qiáng)大能力發(fā)揮出來。

進(jìn)入命令行世界的第一站,我們先了解一下命令行的哲學(xué)。

命令行哲學(xué):極致的藝術(shù)

對(duì)于第一次打開 Linux 終端的初學(xué)者來說,最痛苦的有兩件事:第一是瞪著屏幕上閃爍的光標(biāo),總覺得這樣操作太低級(jí);第二是看著1000多個(gè)系統(tǒng)命令心發(fā)慌,這怎么學(xué)得完?

平心而論,學(xué)習(xí) Linux 命令行的門檻也就在這里,但為什么要這么設(shè)計(jì)呢?這就要從 Linux 操作系統(tǒng)的設(shè)計(jì)理念說起。

Linux 其實(shí)是一種類 Unix 操作系統(tǒng),而 Unix 是出自貝爾實(shí)驗(yàn)室的 Kenneth Thompson 之手。Thompson 大神在設(shè)計(jì) Unix 命令時(shí)化繁為簡,定下了一個(gè)基調(diào):一次只做一件事,做到極致。

Kenneth Thompson

這個(gè)意思就是某個(gè)命令行程序,它只完成一項(xiàng)任務(wù),并且把這項(xiàng)任務(wù)做到功能完備。例如 echo 就是回顯文本;cat 就是顯示文件內(nèi)容;ls 就是顯示磁盤目錄內(nèi)容。你要做什么,第一反應(yīng)就是這個(gè)程序,而不會(huì)想到別的。

當(dāng)我們理解了這個(gè)設(shè)計(jì)思想后,可能又會(huì)覺得這個(gè)道理太簡單了,好像天經(jīng)地義的一樣。但這也是經(jīng)歷了前人的失敗之后才總結(jié)出來的經(jīng)驗(yàn),大神不同于常人之處,就在于他能想到用最簡單的辦法去解決最復(fù)雜的問題。

所以,我們?cè)趯W(xué)習(xí) Linux 命令行時(shí),沒有必要去熟悉所有命令程序。只需要掌握好最常用的幾十個(gè)命令,并能根據(jù)任務(wù)要求去檢索一些特殊的命令進(jìn)行組合,這就能很好地完成工作了。

明白了道理,就要踏實(shí)做好實(shí)踐。為了打消你放棄的念頭,我們就從實(shí)例上手。

命令行初探:從入門到放心

探索 Linux,最佳起點(diǎn)是學(xué)會(huì)操作文件系統(tǒng)。因?yàn)檫@包括如何切換目錄、查找文件、編輯文本、運(yùn)行可執(zhí)行程序等。在此我假設(shè)各位已經(jīng)安裝好了一個(gè) Linux 發(fā)行版,并且知道如何打開一個(gè)終端 Terminal 窗口。

終端窗口是與 Linux 的 shell 程序打交道,它會(huì)將用戶輸入的命令文本傳輸給 shell,然后 shell 會(huì)傳遞給 Linux 內(nèi)核去執(zhí)行,得到結(jié)果后再返回給終端窗口。

基本文件操作

 $ mkdir test #新建一個(gè)名為 test 的空目錄
 $ ls #列舉當(dāng)前目錄下的文件并顯示出來,可以看到 test 目錄已經(jīng)存在
 test
 $ cd test #進(jìn)入 test 目錄內(nèi)
 $ pwd #顯示當(dāng)前目錄的完整路徑
 /home/work/test
 $ touch one.txt #touch 命令用于修改文件的訪問和修改時(shí)間,文件不存在時(shí)則新建,此處用來創(chuàng)建一個(gè)空文件
 $ cp one.txt two.txt #將 one.txt 復(fù)制一個(gè)副本為 two.txt
 $ mv one.txt .. #將 one.txt 文件移動(dòng)到上一級(jí)目錄中
 $ rm ../one.txt #將上級(jí)目錄中的 one.txt 文件刪除

掌握了這幾個(gè)命令,就可以對(duì) Linux 的樹形目錄組織結(jié)構(gòu)進(jìn)行游歷了。例如 /usr 目錄下都有哪些子目錄,每個(gè)子目錄中又有什么內(nèi)容。友情提示:不要在 root 權(quán)限下執(zhí)行 rm -rf /,不要執(zhí)行,不要執(zhí)行,因?yàn)檫@個(gè)事故責(zé)任我擔(dān)不起哈。

留一個(gè)思考題,如何在大量的文件中查找某個(gè)文件是否存在,例如在 /usr/bin 目錄下查找python程序。提示:可使用 find 命令。

神奇的管道

不知道你注意到?jīng)]有,單個(gè)命令只能完成一件事,那么復(fù)雜一點(diǎn)的需求怎么完成?答案是把命令行進(jìn)行組合,它依賴的技術(shù)就是管道。

這是 Thompson 大神的神來之筆,其實(shí)他當(dāng)年也受困于如何在程序之間傳遞數(shù)據(jù)的問題。后來有一天如同上帝親吻了他的腦門,他猛然悟道,于是只用了一個(gè)小時(shí)就在系統(tǒng)調(diào)用中實(shí)現(xiàn)了管道。這就是將程序的孤島給連接起來的豎線符:“|”。

用實(shí)例來感性體驗(yàn)一下,問:/usr/bin 目錄下總共有多少個(gè)文件?你還在一個(gè)一個(gè)數(shù)嗎,我的是 1060。下面就是我的方法:

 $ ls /usr/bin | wc -l #wc 命令通過管道接收 ls 的輸出,并按要求統(tǒng)計(jì)數(shù)量。-l 參數(shù)設(shè)定為換行分隔 
 1060

這就是組合的威力,也是為什么高手們只要掌握不多的一些命令,就可以從容完成許多復(fù)雜的任務(wù)。當(dāng)然,這也需要不斷思考和練習(xí),逐步提升水平。如果上來就是大力出奇跡的蠻干,那只能在一個(gè)低水平里重復(fù)。

玩熟一個(gè)文本編輯器

在 Linux 下編輯文本是最常用操作,程序員寫代碼、測(cè)試寫腳本、運(yùn)維改配置,都繞不開這一步。我強(qiáng)烈建議大家不要只在 Windows 上編輯文件然后上傳,而要踏實(shí)掌握一個(gè)文本編輯器,例如 vim。

盡管 vim 有最難學(xué)會(huì)的編輯器稱號(hào),但掌握了它會(huì)有多爽真的只有自己才知道。關(guān)于學(xué)習(xí) vim 的建議我只有一個(gè),那就是運(yùn)行 vimtutor 命令,這是一個(gè)交互式的學(xué)習(xí)環(huán)境,輕松就助你掌握 vim。

學(xué)習(xí)到這里還沒放棄,我想你應(yīng)該對(duì) Linux CLI 感到放心了,下面我們就更進(jìn)一步,走向?qū)I(yè)之路。

命令行進(jìn)階:shell 編程

卓越的工程師都對(duì)效率有著偏執(zhí)的追求,他們無法忍受低效重復(fù)的工作,總要想盡辦法使之自動(dòng)化。Linux 下的 cron 這個(gè)定時(shí)自動(dòng)執(zhí)行命令,就是 Thompson 大神親手所寫。據(jù)說“cron”是他為了紀(jì)念希臘語的“時(shí)間”一詞。

可以說,shell 編程能力的高低,是專業(yè)和業(yè)余的分野。shell 編程的本質(zhì),就是將多步驟的復(fù)雜任務(wù)分解,然后使用流程控制語句將命令行串接起來,從而實(shí)現(xiàn)強(qiáng)大的自動(dòng)化處理。

shell 編程腳本語言提供的語法特性并不多,因?yàn)樗哪繕?biāo)本來就是助力自動(dòng)化,而不是成為一門特性完備的編程語言。簡單的語法有利于使用者快速掌握它,并形成生產(chǎn)力。

我們來思考一個(gè)稍有些難度的需求:創(chuàng)建 100 個(gè)文件,以 0 ~ 99 命名,文件名后綴為“txt”,并在每個(gè)文件內(nèi)寫入一個(gè)隨機(jī)數(shù)。

你打算用 vim 挨個(gè)創(chuàng)建并輸入?千萬不要這么干,下面給出一種解法:

 #!/bin/bash 
 #使用 bash 作為腳本代碼的解釋器
 
 for ((i=0; i<100; i++))  #bash 支持 C 語言風(fēng)格的 for 循環(huán)寫法
 do
        echo $RANDOM > $i.txt 
        #RANDOM是shell內(nèi)置隨機(jī)數(shù)變量;> 是重定向符,將 echo 命令輸出內(nèi)容輸入到文件中
 done

將上述代碼保存至一個(gè)腳本文件,例如 genfiles.sh 中,修改文件屬性為可執(zhí)行,然后在終端中執(zhí)行./genfiles.sh命令,就可以進(jìn)行驗(yàn)證。

不要滿足于理解這個(gè)例子,結(jié)合工作中的實(shí)際需求,多做 shell 編程練習(xí),成為真正的 Linux 高手吧。

結(jié)語

記得在工作多年之后,給新人培訓(xùn) Linux 操作時(shí),有位小伙子很殷勤地幫我把鼠標(biāo)遞過來,我下意識(shí)地就說了一句“Linux 還要用鼠標(biāo)嗎?”

說完這話我自己也覺得有意思,于是就跟他們分享了我當(dāng)初的那段經(jīng)歷。現(xiàn)在他們也成長起來了,不知道會(huì)不會(huì)把這個(gè)故事流傳給更多人。

現(xiàn)在 Linux 已經(jīng)是互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施,對(duì)它的操作哪怕是生疏一些,都會(huì)在工作效率上被別人拉下一大截。所以技術(shù)人要在自己的技術(shù)棧中,將 Linux CLI 操作排在重要位置,多想多練。

最后,手邊常備《Linux 命令行大全 第2版》,你需要知道的命令行知識(shí)里面全都有。你能不能把操控命令行這門手藝,耍得風(fēng)生水起,就看你讀書是不是認(rèn)真啦。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多