色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux操作環境:將Python和shell命令的Bash結合在一起

如意 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2020-09-16 15:17 ? 次閱讀

對于Linux用戶而言,命令行操作我們已經非常熟悉了。與其他流行的操作系統不同,在Linux社區中,使用命令行與使用圖形用戶界面執行類似任務相比,命令行通常可以提供更優雅,更有效的解決方案。

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

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

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

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

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

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

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

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

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

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

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

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

Python具有非常易于閱讀和理解的語法。它的風格強調簡約和簡潔的代碼,同時允許開發人員以適合shell腳本的準系統風格進行編寫。

Python是一種解釋型語言,這意味著沒有編譯階段。這使Python成為編寫腳本的理想語言,它允許您以解釋的方式快速嘗試新代碼。這使開發人員可以快速修改,而不必將整個程序寫到文件中。

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

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

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

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

Linux操作環境:將Python和shell命令的Bash結合在一起

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

$ cat names.log | python namescount.py

顯示用戶出現的次數以及用戶名的計數。接下來要做的是按順序顯示最常使用該系統的用戶。這可以在Python級別完成,但是讓我們使用核心UNIX實用程序已經提供的實用程序來實現它。以前,我使用sort命令對字母進行排序。如果命令提供了-rn標志,它將按降序對行進行數字排序。隨著Python腳本按標準輸出,只需將命令通過管道傳遞到sort并檢索所需的輸出:

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

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

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

當需要在鏈中進行一些繁重的工作時,可以編寫一個非常清晰,簡潔的Python腳本,該腳本將執行其所需的工作,然后將責任轉移給鏈中的下一個鏈接。

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

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

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

這僅顯示前五個用戶,而忽略其余用戶。同樣,要使五個用戶最少使用該服務,可以使用tail命令,該命令采用相同的參數。將Python命令打印到標準輸出的結果使可以構建和擴展其功能。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209331
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84628
  • Shell
    +關注

    關注

    1

    文章

    365

    瀏覽量

    23357
收藏 人收藏

    評論

    相關推薦

    怎么把主界面和子VI結合在一起

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

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

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

    請問ISE和Mircoblaze是如何結合在一起的?

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

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

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

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

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

    USAT和USB BooLoad能結合在一起

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

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

    本文介紹了Silicon Motion開發的新架構如何高圖形性能、低延遲、高效數據壓縮和低功耗更好地結合在一起
    發表于 06-01 06:52

    Teamcenter、TIA Portal和虛擬調試如何才能結合在一起

    PDM是什么?PLM是什么?Teamcenter、TIA Portal和虛擬調試如何才能結合在一起
    發表于 09-29 07:36

    如何DMA和環形的FIFO隊列結合在一起來使用呢

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

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

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

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

    目前已經有很多關于VR/AR/MR被用于諸如建筑等行業的例子,但MR技術的優勢常常與安全問題產生沖突。為了解決這問題,微軟的合作伙伴Trimble正在嘗試HoloLens與安全帽結合在一起
    的頭像 發表于 02-02 12:32 ?6539次閱讀

    深度學習和常微分方程結合在一起,提供四大優勢

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

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

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

    shell命令linux命令樣嗎

    結合在一起,形成個相當于面向過程的程序,即shell script,從而實現些復雜的功能。 而Linux
    的頭像 發表于 11-08 10:51 ?2865次閱讀

    5G信號鏈與電平轉換結合在一起

    電子發燒友網站提供《5G信號鏈與電平轉換結合在一起.pdf》資料免費下載
    發表于 09-18 14:49 ?0次下載
    <b class='flag-5'>將</b>5G信號鏈與電平轉換<b class='flag-5'>結合在一起</b>
    主站蜘蛛池模板: 俄罗斯人xxx| 高清国产激情视频在线观看| 99国产精品综合AV无码| 99久久久免费精品免费| WWWXXXX兽交| 国产精品99| 精品国产在线国语视频| 久久黄色小视频| 欧美末成年videos丨| 肉动漫h黄动漫日本免费观看| 乌克兰粉嫩摘花第一次| 亚洲蜜芽在线观看精品一区 | 亚洲熟妇色自偷自拍另类| 夜夜精品视频一区二区| 91热久久免费精品99| 成人动漫百度影音| 国产在线中文字幕| 恋夜影视列表免费安卓手机版 | 久久久精品久久久久特色影视| 老师你下面好紧夹死了| 色狠狠一区二区| 一二三四免费中文在线1| ASIAN大陆明星裸休合成PICS| 国产精品1区在线播放| 久久精品18| 日日噜噜夜夜爽爽| 亚洲视频中文字幕在线观看| rio 快播| 蝴蝶中文综合娱乐网2| 女教师跟黑人男朋友激情过后| 午夜AV亚洲一码二中文字幕青青 | 99热只有精品| 国产日韩精品一区二区在线观看| 久久亚洲精品AV成人无| 日韩精品AV一区二区三区| 亚洲在线中文无码首页| 超碰在线 视频| 九九热这里有精品| 色婷婷国产麻豆AV| 中文字幕绝色少妇性| 国产精品免费一区二区三区四区|