91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux操作環(huán)境:將Python和shell命令的Bash結(jié)合在一起

如意 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2020-09-16 15:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

對于Linux用戶而言,命令行操作我們已經(jīng)非常熟悉了。與其他流行的操作系統(tǒng)不同,在Linux社區(qū)中,使用命令行與使用圖形用戶界面執(zhí)行類似任務(wù)相比,命令行通常可以提供更優(yōu)雅,更有效的解決方案。

隨著Linux社區(qū)對命令行的依賴不斷增長,UNIX shell(如bash和zsh)已發(fā)展成為極其強大的工具,可以補充UNIX shell的經(jīng)驗。使用bash和其他類似的shell,可以使用許多強大的功能,例如管道,文件名通配符以及從稱為腳本的文件中讀取命令的功能。

讓我們看一個真實的示例來演示命令行的功能。每次用戶登錄服務(wù)時,其用戶名都會記錄到一個文本文件中。對于此示例,讓我們找出有多少唯一用戶使用該服務(wù)。

以下示例中的一系列命令通過將較小的構(gòu)建塊鏈接在一起,顯示了更復(fù)雜的實用工具的功能:

$ cat names.log | sort | uniq | wc -l

管道符號(|)用于將一個命令的標(biāo)準(zhǔn)輸出傳遞到下一命令的標(biāo)準(zhǔn)輸入。在此處的示例中,cat names.txt的輸出傳遞到sort命令中。sort命令的輸出是按字母順序重新排列文件的每一行。隨后將其傳遞給uniq命令,該命令將刪除所有重復(fù)的名稱。最后,uniq的輸出傳遞到wc命令。wc是計數(shù)命令,并且設(shè)置了-l標(biāo)志,它返回行數(shù)。這使您可以將許多命令鏈接在一起。

但是,有時所需的內(nèi)容可能會變得非常復(fù)雜,并且將命令鏈接在一起可能變得笨拙。在這種情況下,shell腳本就是答案。Shell腳本是由Shell讀取并按順序執(zhí)行的命令列表。Shell腳本還支持某些編程語言基礎(chǔ)知識,例如變量,流控制和數(shù)據(jù)結(jié)構(gòu)。Shell腳本對于將經(jīng)常重復(fù)運行的批處理作業(yè)非常有用。不幸的是,shell腳本有一些缺點:

Shell腳本很容易變得過于復(fù)雜,并且對于想要改進(jìn)或維護(hù)它們的開發(fā)人員來說是不可讀的。

這些shell腳本的語法和解釋器通常很笨拙且不直觀。語法越笨拙,對于必須使用這些腳本的開發(fā)人員來說,可讀性就越差。

該代碼通常無法在其他腳本中使用。腳本之間的代碼重用往往很困難,并且腳本往往非常特定于某個問題。

用于高級功能(例如HTML解析或HTTP請求)的庫不像現(xiàn)代編程和腳本語言那樣容易獲得。

這些問題會使shell腳本難以處理,并經(jīng)常導(dǎo)致大量開發(fā)人員時間浪費。取而代之的是,Python編程語言可以用作非常有力的替代品。使用Python代替Shell腳本有很多好處:

默認(rèn)情況下,所有主要的Linux發(fā)行版都安裝了Python。打開命令行并立即鍵入python,將使您進(jìn)入Python解釋器。這種普遍性使它成為大多數(shù)腳本任務(wù)的明智選擇。

Python具有非常易于閱讀和理解的語法。它的風(fēng)格強調(diào)簡約和簡潔的代碼,同時允許開發(fā)人員以適合shell腳本的準(zhǔn)系統(tǒng)風(fēng)格進(jìn)行編寫。

Python是一種解釋型語言,這意味著沒有編譯階段。這使Python成為編寫腳本的理想語言,它允許您以解釋的方式快速嘗試新代碼。這使開發(fā)人員可以快速修改,而不必將整個程序?qū)懙轿募小?/p>

Python是一種功能齊全的編程語言。代碼重用很簡單,因為Python模塊可以輕松導(dǎo)入并在任何Python腳本中使用。腳本可以輕松擴展或構(gòu)建。

Python可以使用出色的標(biāo)準(zhǔn)庫和數(shù)以千計的第三方庫來處理各種高級實用程序,例如解析器和請求庫。例如,Python的標(biāo)準(zhǔn)庫包括日期時間庫,該庫允許將日期解析為指定的任何格式并將其與其他日期輕松比較。

但Python不應(yīng)替換所有bash命令。編寫以UNIX方式運行的Python程序(即讀入標(biāo)準(zhǔn)輸入并寫入標(biāo)準(zhǔn)輸出)與為現(xiàn)有的shell命令(如cat和sort)編寫Python替代品一樣強大。

讓我們以本文前面已解決的問題為基礎(chǔ)。除了已經(jīng)完成的工作之外,讓我們找出某個用戶已登錄系統(tǒng)的次數(shù)。uniq命令僅刪除重復(fù)項,但不提供有關(guān)有多少重復(fù)項的信息。代替uniq,Python腳本可以用作鏈中的另一個命令。這是一個執(zhí)行此操作的Python程序(在我的示例中,我將此文件稱為namescount.py):

Linux操作環(huán)境:將Python和shell命令的Bash結(jié)合在一起

讓我們看看這個Python腳本如何適合命令鏈。首先,它從通過sys.stdin對象公開的標(biāo)準(zhǔn)輸入中讀取輸入。任何輸出都將寫入sys.stdout對象,這是在Python中實現(xiàn)標(biāo)準(zhǔn)輸出的方式。Python字典(在其他語言中通常稱為哈希映射)用于獲取從用戶名到重復(fù)計數(shù)的映射。要獲得所有用戶的數(shù)量,請執(zhí)行以下操作:

$ cat names.log | python namescount.py

顯示用戶出現(xiàn)的次數(shù)以及用戶名的計數(shù)。接下來要做的是按順序顯示最常使用該系統(tǒng)的用戶。這可以在Python級別完成,但是讓我們使用核心UNIX實用程序已經(jīng)提供的實用程序來實現(xiàn)它。以前,我使用sort命令對字母進(jìn)行排序。如果命令提供了-rn標(biāo)志,它將按降序?qū)π羞M(jìn)行數(shù)字排序。隨著Python腳本按標(biāo)準(zhǔn)輸出,只需將命令通過管道傳遞到sort并檢索所需的輸出:

$ cat names.log | python namescount.py | sort -rn

這是將Python用作命令鏈一部分的強大示例。在這種情況下使用Python的優(yōu)點如下:

與cat和sort等工具鏈接的能力。簡單的實用程序(逐行讀取文件并以數(shù)字方式對文件進(jìn)行排序)由久經(jīng)考驗的UNIX命令處理。這些命令也逐行讀取,這意味著這些功能可以縮放到大型文件,而且速度很快。

當(dāng)需要在鏈中進(jìn)行一些繁重的工作時,可以編寫一個非常清晰,簡潔的Python腳本,該腳本將執(zhí)行其所需的工作,然后將責(zé)任轉(zhuǎn)移給鏈中的下一個鏈接。

它是一個可重用的模塊,盡管此示例專門針對名稱,但是如果您向此輸入中包含重復(fù)行的任何輸入,它將打印出每行和重復(fù)的數(shù)量。通過將Python代碼模塊化,可以將其應(yīng)用于各種場景。

為了展示以模塊化和管道方式組合Python腳本的強大功能,讓我們進(jìn)一步把問題放大。讓我們找到該服務(wù)的前五名用戶。head是一個命令,它允許您指定一定數(shù)量的行以顯示給定的標(biāo)準(zhǔn)輸入。將其添加到命令鏈中將得到以下內(nèi)容:

$ cat names.log | python namescount.py | sort -rn | head -n 5

這僅顯示前五個用戶,而忽略其余用戶。同樣,要使五個用戶最少使用該服務(wù),可以使用tail命令,該命令采用相同的參數(shù)。將Python命令打印到標(biāo)準(zhǔn)輸出的結(jié)果使可以構(gòu)建和擴展其功能。

以上就是簡單的介紹,實際中大家靈活運用就好。
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213852
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86786
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    372

    瀏覽量

    24223
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    怎么把主界面和子VI結(jié)合在一起

    就是做個電梯的界面,然后我做好了個個的功能的子VI,但是怎么調(diào)用使得運行的時候只出現(xiàn)電梯界面,然后通過電梯界面的按鈕來調(diào)用子VI的功能,反正就是不知道怎么把主界面和子VI結(jié)合在一起,求大神幫幫忙,真的很急用,謝謝了!!!
    發(fā)表于 08-24 15:26

    幾個單獨的程序組合在一起

    怎樣把幾個個單獨的程序組合在一起,我現(xiàn)在在做環(huán)境檢測儀,我可不可以先把溫度,濕度,噪聲等程序先單獨做,然后把它們組合在一起,可以嗎,怎么組合,求大神告知
    發(fā)表于 03-23 14:22

    請問ISE和Mircoblaze是如何結(jié)合在一起的?

    大家好,有人可以向我解釋下ISE和Mircoblaze是如何結(jié)合在一起的嗎?目前我已經(jīng)在ISE中用VHDL編寫了個程序,我希望在我的設(shè)計中添加個mircoblaze。我該怎么做以
    發(fā)表于 02-19 10:59

    labview中模糊控制和pid是怎么結(jié)合在一起

    labview中模糊控制和pid是怎么結(jié)合在一起的?求高手解答,有簡單的模糊控制和pid結(jié)合在一起的vi文件最好,
    發(fā)表于 03-13 08:04

    labview 中如何把模糊控制和pid結(jié)合在一起呢?

    labview中模糊控制怎么導(dǎo)入?并且和pid結(jié)合在一起呢?有沒有相關(guān)的VI做參考,求幫助,抱拳
    發(fā)表于 03-14 10:57

    USAT和USB BooLoad能結(jié)合在一起

    嗨,有沒有可能將USAT和USB BooLoad結(jié)合在一起,以便它可以從任個電纜獲得固件?謝謝
    發(fā)表于 04-24 08:39

    如何高圖形性能和低功耗更好地結(jié)合在一起

    本文介紹了Silicon Motion開發(fā)的新架構(gòu)如何高圖形性能、低延遲、高效數(shù)據(jù)壓縮和低功耗更好地結(jié)合在一起
    發(fā)表于 06-01 06:52

    Teamcenter、TIA Portal和虛擬調(diào)試如何才能結(jié)合在一起

    PDM是什么?PLM是什么?Teamcenter、TIA Portal和虛擬調(diào)試如何才能結(jié)合在一起
    發(fā)表于 09-29 07:36

    如何DMA和環(huán)形的FIFO隊列結(jié)合在一起來使用呢

    如何DMA和環(huán)形的FIFO隊列結(jié)合在一起來使用呢?有哪些實驗步驟呢?
    發(fā)表于 12-09 08:05

    不同容量的電池組合在一起使用會出現(xiàn)什么問題?

    不同容量的電池組合在一起使用會出現(xiàn)什么問題?       如果將不同容量或新舊電池混在一起使用,有可能出現(xiàn)漏液,
    發(fā)表于 11-13 15:20 ?3537次閱讀

    微軟的合作伙伴Trimble正在嘗試HoloLens與安全帽結(jié)合在一起

    目前已經(jīng)有很多關(guān)于VR/AR/MR被用于諸如建筑等行業(yè)的例子,但MR技術(shù)的優(yōu)勢常常與安全問題產(chǎn)生沖突。為了解決這問題,微軟的合作伙伴Trimble正在嘗試HoloLens與安全帽結(jié)合在一起
    的頭像 發(fā)表于 02-02 12:32 ?6781次閱讀

    深度學(xué)習(xí)和常微分方程結(jié)合在一起,提供四大優(yōu)勢

    Hinton創(chuàng)建的向量學(xué)院的研究者提出了類新的神經(jīng)網(wǎng)絡(luò)模型,神經(jīng)常微分方程(Neural ODE),神經(jīng)網(wǎng)絡(luò)與常微分方程結(jié)合在一起,用ODE來做預(yù)測。
    的頭像 發(fā)表于 06-26 11:19 ?1.2w次閱讀

    基于PC和PS4或Xbox結(jié)合在一起的強大主機介紹

    小孩子才做選擇題,Origin PC在CES上秀出了臺名叫Big O的強大主機,它可以PC和PS4或Xbox結(jié)合在一起,具體怎么結(jié)合要看用戶是喜歡索尼主機還是微軟主機。
    的頭像 發(fā)表于 01-08 14:05 ?3266次閱讀

    shell命令linux命令樣嗎

    結(jié)合在一起,形成個相當(dāng)于面向過程的程序,即shell script,從而實現(xiàn)些復(fù)雜的功能。 而Linux
    的頭像 發(fā)表于 11-08 10:51 ?3479次閱讀

    5G信號鏈與電平轉(zhuǎn)換結(jié)合在一起

    電子發(fā)燒友網(wǎng)站提供《5G信號鏈與電平轉(zhuǎn)換結(jié)合在一起.pdf》資料免費下載
    發(fā)表于 09-18 14:49 ?1次下載
    <b class='flag-5'>將</b>5G信號鏈與電平轉(zhuǎn)換<b class='flag-5'>結(jié)合在一起</b>
    主站蜘蛛池模板: 美女天天操 | 日韩美女三级 | 在线看片成人 | 国产拳头交一区二区 | 日本a级特黄三级三级三级 日本边添边爱边摸边做边爱 | 黄色免费网站在线 | 99久久婷婷国产综合精品电影 | 四虎影视永久在线精品免费播放 | 手机在线你懂的 | 神马三级我不卡 | 韩日一级毛片 | 国产精品成人一区二区三区 | 日韩欧美卡一卡二卡新区 | 婷婷激情电影 | 四虎影院在线观看网站 | 99成人在线 | 天堂在线网 | 老师下面好紧 | 婷婷五月五 | 亚州黄色网址 | 你懂的欧美| 国产在线视频欧美亚综合 | 黄h视频| 免费视频久久看 | 天天射天天干天天操 | 日本黄色免费大片 | 色天使在线播放 | 日本一本高清视频 | 亚洲图片综合区另类图片 | 国产999星空传媒在线观看 | 天天爽夜夜爽夜夜爽精品视频 | 黄 色 免 费 网站在线观看 | 中文字幕精品一区二区2021年 | 天天搞天天操 | 四虎影院官网 | 五月天免费在线播放 | 亚洲欧美国产五月天综合 | 91大神亚洲影视在线 | 色站视频| 日韩一级片免费在线观看 | 国产全黄三级三级 |