c 接受命令行 接受命令行挑戰

2021-10-08 05:54:57 字數 1684 閱讀 2933

c 接受命令行

管道非常重要,甚至對於我們在命令列上執行出色任務的能力也至關重要。

首先,必須認識到它們是unix早期由douglas mcilroy發明的。 謝謝,道格! 接下來,在這種情況下, 管道是什麼? 請注意,在這個簡單的命令列程式中使用了管道,該管道一次列出了每個登入使用者,無論他們有多少次登入都有效。

who | awk '' | sort | uniq

管道是將這些命令列程式結合在一起的粘合劑。 管道允許將乙個命令的標準輸出「管道」到下乙個命令的標準輸入。

考慮一下如果我們無法通過管道將資料流從乙個命令傳遞到下乙個命令,該程式將如何工作。 第乙個命令將對資料執行其任務,然後該命令的輸出將必須儲存在檔案中。 下一條命令將必須從中間檔案讀取資料流並對其進行修改,然後將其自身的輸出傳送到新的臨時資料檔案中。 第三條命令必須從第二個臨時資料檔案中獲取其資料,並對資料流執行自己的操作,然後將結果資料流儲存在另乙個臨時檔案中。 在每一步中,都必須以某種方式將資料檔名從乙個命令傳送到下乙個命令。

我什至不能忍受這一點,它是如此複雜。

只有使用管道, linux原理的幾個原則才有意義。

這些程式每個都很小(很漂亮),並且每個都做得很好。 它們也是過濾器; 他們接受標準輸入,以某種方式處理它,然後將輸出傳送到標準輸出。

使用標準i / o進行輸入和輸出是linux哲學的次要宗旨之一。 僅通過使用管道,這些程式的實現就可以作為過濾器,以將處理後的資料流從其自身的標準輸出傳送到上述程式的標準輸入。

請注意:本比賽現已關閉,無法接受其他參賽。dpb,2023年8月1日

我擁有自己的所有計算機,以及為其他人管理的一些計算機,這些計算機配置為將電子郵件傳送到我自己的電子郵件帳戶。 我已將我的電子郵件客戶端配置為將大多數管理電子郵件移動到單個資料夾中,以便輕鬆查詢所有電子郵件。 在過去的一年中,我已經在此資料夾中收集了50,000多封電子郵件。

這些電子郵件包括rkhunter(rootkit hunter),logwatch,cron作業和fail2ban ...的輸出。

fail2ban是一種開源軟體,可以動態禁止試圖惡意訪問internet上我自己的主機的主機的ip位址。 fail2ban通過向iptables新增規則來做到這一點。 每次禁止ip位址時,fail2ban都會傳送一封電子郵件。

為了快速分析fail2ban郵件,我使用我的電子郵件客戶端將這些電子郵件的主題行匯出到單個csv檔案中,這些主題行包含已被禁止的主機的ip位址。 此匯出包含所有電子郵件的所有主題,而不僅僅是fail2ban的主題。

只需清楚一點,您建立的用於執行此操作的命令列程式應該只有一行長,並且必須使用管道將資料流從乙個命令傳遞到下乙個命令。 包裝好。 而且,您的「一條線」可以纏繞起來,使其適合您的端子寬度。

輸入挑戰:給我傳送一封電子郵件,主題行為「 great command-line challenge」,然後在電子郵件正文中輸入答案(一行**)。 將為以下每個標準選擇乙個獲勝者:第乙個正確答案,最短正確答案和最具創造力的答案。

每位獲獎者將獲得一件opensource.com t恤。

挑戰截止至美國東部時間2023年7月31日晚上11:59。

閱讀有關官方規則的更多資訊。

祝好運!

翻譯自:

c 接受命令行

R語言接受命令行引數

比如希望對try.r檔案用如下命令列來執行 rscript try.r a 1 b astring 其中引數a是整數,引數b是字串,則 在try.r檔案中可以用 library getopt spec matrix c aparameter a 1,integer bparameter b 1,ch...

MFC程式中如何接受命令行引數

方法一 getcommandline 方法二 for int i 0 i argc i for int i 1 i argc i rcmdinfo.parseparam pszparam,bflag,blast 這裡有個繼承ccommandlineinfo類的例子 目標 讓應用程式處理這裡所見的命令...

MFC程式中如何接受命令行引數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!方法一 getcommandline 方法二 for int i 0 i argc for int i 1 i argc i rcmdinfo.parseparam pszparam,bflag,blast 這裡有個繼承ccommandlinein...