2024年12月31日 21:52 周二《TheLinuxCommandsHandbook》结合视频
https://www.youtube.com/watch?v=ZtqBQ68cfJc 看的
Command意义
#
更快,自动化,在任何Linux上工作,有些工作的基本需求
系统-Unix和Windows
#
绿色-开源
红色-闭源
黄色-混合

图片中的Linux只是类Unix,而不是真正的Unix
FreeSoftware,开源
#
GNU与Linux
Linux只是一个操作系统内核而已,而GNU提供了大量的自由软件来丰富在其之上各种应用程序。
绝大多数基于Linux内核的操作系统使用了大量的GNU软件,包括了一个shell程序、工具、程序库、编译器及工具,还有许多其他程序
我们常说的Linux,准确地来讲,应该是叫“GNU/Linux”。虽然,我们没有为GNU和Linux的开发做出什么贡献,但是我们可以为GNU和Linux的宣传和应用做出微薄的努力,至少我们能够准确地去向其他人解释清楚GNU、Linux以及GNU/Linux之间的区别。让我们一起为GNU/Linux的推广贡献出自己的力量!
内核,用来连接硬件和软件的
TrueUNIX
#
Unix一开始是收费的,后面出现Unix-like(类Unix),和Unix标准兼容。
Linux不是真正的Unix,而是类Unix。
Linux本身只是一个内核,连接硬件和软件
LinuxDistributions,Linux发行版(1000多种)
Linux内核是一些GUN工具,文档,包管理器,桌面环境窗口管理,和系统一些其他东西组成的一个系统

有开源的和不开源的,Linux(LinuxGUN)完全开源
shell
#
windows(powershell)
把命令交给系统
terminal(最古老时是一个硬件)–屏幕+带键盘的物理设备,如今是一个软件
默认情况下,Ubuntu和大多数Linux发行版是bashshell,还有zsh
setup and installing
#
如果有Mac或者其他Linux发行版,则不需要额外操作。(作者在Mac里装了Ubuntu虚拟机)
WindowsSubsystem
#
wsl --install
默认是Ubuntu
The Linux Handbook(电子书内容)
#
Linux 手册
Preface
#
前言
The Linux Handbook follows the 80/20 rule: learn in 20% of the time the 80% of a topic.
Linux 手册遵循 80/20 规则:用 20% 的时间学习某个主题的 80%。
...
2024年12月25日 11:53 周三周朝君主世系图
#
资治通鉴中
#
周威烈王始

完整世系图
#
《资治通鉴》从周威烈王(图里是32,这个第几任好像各家的算法不一致,不必深究)开始

2024年12月24日 21:48 周二資治通鑑卷第一
朝散大夫右諫議大夫權御史中丞充理檢使上護軍賜紫金魚袋臣
司马光 奉敕编集
後 學 天 台
胡三省 音 註
周紀一 起著雍攝提格(戊寅),盡玄黓困敦(壬子),凡三十五年。
爾雅
:太歲在甲曰閼逢,在乙曰旃zhān蒙,在丙曰柔兆,在丁曰強圉,在戊曰著雍,在己曰屠維,在庚曰上章,在辛曰重光,在壬曰玄黓yì,在癸曰昭陽,是為歲陽。在寅曰攝提格,在卯曰單閼,在辰曰執徐,在巳曰大荒落,在午曰敦牂,在未曰協洽,在申曰涒tūn灘,在酉曰作噩,在戌曰掩茂,在亥曰大淵獻,在子曰困敦,在丑曰赤奮若,是為歲名。周紀
分註「起著雍攝提格」,起戊寅也。「盡玄黓困敦」,盡壬子也。閼,讀如字;史記
作「焉」,於乾翻。著,陳如翻。雍,于容翻。黓,逸職翻。單閼,上音丹,又特連翻;下烏葛翻,又于連翻。牂,作郎翻。涒,吐魂翻。灘,吐丹翻。困敦,音頓。杜預 世族譜
曰:周,黃帝之苗裔,姬姓。后稷之後,封于邰;及夏衰,稷子不窋zhú竄於西戎。至十二代孫太王,避狄遷岐;至孫文王受命,武王克商而有天下。自武王至平王凡十三世,自平王至威烈王又十八世,自威烈王至赧王又五世。張守節曰:因太王居周原,國號曰周。地理志
云:右扶風美陽縣岐山西北中水鄉,周太王所邑。括地志
云:故周城一名美陽城,在雍州武功縣西北二十五里。紀,理也,統理眾事而系之年月。溫公系年用春秋
之法,因史
、漢
本紀而謂之紀。邰,湯來翻。夏,戶雅翻。窋,竹律翻。在雍,於用翻。
威烈王
#
名午,考王之子。諡法
:猛以剛果曰威;有功安民曰烈。沈約曰:諸複諡,有諡人,無諡法。
二十三年(戊寅,前四零三)
#
上距春秋
獲麟七十八年,距左傳
趙襄子惎jì智伯事七十一年。惎,毒也,音其冀翻。
1初命晉‹府新田,山西侯马›大夫魏 ‹府安邑,山西夏县›斯、趙‹府晋阳,山西太原›籍、韓‹府平阳,山西临汾›虔為諸侯。此溫公書法所由始也。魏之先,畢公高後,與周同姓;其苗裔曰畢萬,始封于魏,至魏舒,始為晉正卿;三世至斯。趙之先,造父後;至叔帶,始自周適晉;至趙夙,始封于耿。至趙盾,始為晉正卿,六世至籍。韓之先,出於周武王,至韓武子事晉,封于韓原。至韓厥,為晉正卿;六世至虔。三家者,世為晉大夫,於周則陪臣也。周室既衰,晉主夏盟,以尊王室,故命之為伯。三卿竊晉之權,暴蔑其君,剖分其國,此王法所必誅也。威烈王不惟不能誅之,又命之為諸侯,是崇獎奸名犯分之臣也,通鑑
始於此,其所以謹名分歟!
〖译文〗 [1]周威烈王姬午初次分封晋国大夫魏斯、赵籍、韩虔为诸侯国君。


臣光曰:臣聞天子之職莫大於禮,禮莫大於分,分莫大於名。 分,扶問翻;下同。何謂禮?紀綱是也。何謂分?君、臣是也。何謂名?公、侯、卿、大夫是也。
〖译文〗 臣司马光曰:我知道天子的职责中最重要的是维护礼教,礼教中最重要的是区分地位,区分地位中最重要的是匡正名分。什么是礼教?就是法纪。什么是区分地位?就是君臣有别。什么是名分?就是公、侯、卿、大夫等官爵。
夫以四海之廣, 夫以,音扶。兆民之眾,受制於一人,雖有絕倫之力,高世之智,莫【章︰十二行本「莫」下有「敢」字;乙十一行本同;孔本同。】不奔走而服役者,豈非以禮為之紀綱【章︰十二行本,二字互乙;乙十一行本同;孔本同。】哉!是故天子統三公, 統,他綜翻。三公率諸侯,諸侯制卿大夫,卿大夫治士庶人。 治,直之翻。貴以臨賤,賤以承貴。上之使下猶心腹之運手足,根本之制支葉,下之事上猶手足之衛心腹,支葉之庇本根,然後能上下相保而國家治安。 治,直吏翻。故曰天子之職莫大於禮也。
〖译文〗 四海之广,亿民之众,都受制于天子一人。尽管是才能超群、智慧绝伦的人,也不能不在天子足下为他奔走服务,这难道不是以礼作为礼纪朝纲的作用吗!所以,天子统率三公,三公督率诸侯国君,诸侯国君节制卿、大夫官员,卿、大夫官员又统治士人百姓。权贵支配贱民,贱民服从权贵。上层指挥下层就好像人的心腹控制四肢行动,树木的根和干支配枝和叶;下层服侍上层就好像人的四肢卫护心腹,树木的枝和叶遮护根和干,这样才能上下层互相保护,从而使国家得到长治久安。所以说,天子的职责没有比维护礼制更重要的了。
文王序易
,以乾
、坤
為首。孔子系之曰:「天尊地卑,乾坤定矣。 卑高以陳,貴賤位矣。」 系,戶計翻。言君臣之位猶天地之不可易也。春秋
抑諸侯,尊王【章︰十二行本「王」作「周」;乙十一行本同;孔本同;退齋校同。】室,王人雖微,序於諸侯之上,以是見聖人於君臣之際未嘗不惓惓也。惓,逵員翻。漢劉向傳
:忠臣畎quǎn畝,猶不忘君惓惓之義也。惓惓,猶言勤勤也。非有桀 ‹姒履癸›、紂‹子受辛›之暴,湯‹子天乙›、武‹姬发›之仁,人歸之,天命之,君臣之分當守節伏死而已矣。是故以微子 ‹子启›而代紂‹子受辛›則成湯‹子天乙›配天矣,史記
:商帝乙生三子:長曰微子啟,次曰中衍,季曰紂。紂之母為后。帝乙欲立啟為太子,太史據法爭之曰:「有妻之子,不可立妾之子。」乃立紂。紂卒以暴虐亡殷國。孔鄭玄義曰:物之大者莫若於天;推父比天,與之相配,行孝之大,莫大於此;所謂「嚴父莫大於配天」也。又孔氏曰:禮記
稱萬物本乎天,人本乎祖。俱為其本,可以相配,故王者皆以祖配天。諡法
:除殘去虐曰湯。然諡法起于周;蓋殷人先有此號,周人遂引以為諡法。分,扶問翻。長,知兩翻。卒,子恤翻。以季札而君吳則太伯血食矣, 吳王壽夢有子四人:長曰諸樊,次曰餘祭,次曰餘昩,次曰季札。季札賢,壽夢欲立之,季札讓不可,於是立諸樊。諸樊卒,以授餘祭,欲兄弟以次相傳,必致國于季札;季札終讓而逃之。其後諸樊之子光與餘昩之子僚爭國,至於夫差,吳遂以亡。宗廟之祭用牲,故曰血食。太伯,吳立國之君。范寧曰:太者,善大之稱;伯者,長也。周太王之元子,故曰太伯。陸德明曰:壽夢,莫公翻。餘祭,側介翻。餘昩,音末。然二子寧亡國而不為者,誠以禮之大節不可亂也。故曰禮莫大於分也。
〖译文〗 周文王演绎排列《易经》,以乾、坤为首位。孔子解释说:“天尊贵,地卑微,阳阴于是确定。由低至高排列有序,贵贱也就各得其位。”这是说君主和臣子之间的上下关系就像天和地一样不能互易。《春秋》一书贬低诸侯,尊崇周王室,尽管周王室的官吏地位不高,在书中排列顺序仍在诸侯国君之上,由此可见孔圣人对于君臣关系的关注。如果不是夏桀、商纣那样的暴虐昏君,对手又遇上商汤、周武王这样的仁德明主,使人民归心、上天赐命的话,君臣之间的名分只能是作臣子的恪守臣节,矢死不渝。所以如果商朝立贤明的微子为国君来取代纣王,成汤创立的商朝就可以永配上天;而吴国如果以仁德的季札做君主,开国之君太伯也可以永享祭祀。然而微子、季札二人宁肯国家灭亡也不愿做君主,实在是因为礼教的大节绝不可因此破坏。所以说,礼教中最重要的就是地位高下的区分。
夫禮,辨貴賤,序親疏,裁群物,制庶事,非名不著,非器不形;名以命之,器以別之, 夫,音扶。別,彼列翻。然後上下粲然有倫,此禮之大經也。名器既亡,則禮安得獨在哉!昔仲叔于奚有功于衛,辭邑而請繁纓,孔子以為不如多與之邑。惟名與器,不可以假人,君之所司也;政亡則國家從之。 左傳
:衛孫桓子
帥師與齊師戰於新築‹河北大名南›,衛師敗績。新築人仲叔于奚救孫桓子,桓子是以免。既而衛人賞之邑,辭;請曲縣、繁纓以朝,許之。孔子聞之曰:「不如多與之邑,惟名與器不可以假人。」繁纓,馬飾也。繁,馬鬣上飾;纓,馬膺前飾。晉志註曰:纓在馬膺如索帬。繁,音蒲官翻。纓,伊盈翻。索,昔各翻。 衛君待孔子而為政,孔子欲先正名,以為名不正則民無所措手足。 見論語
。夫繁纓,小物也,而孔子惜之;正名,細務也,而孔子先之: 先,悉薦翻。誠以名器既亂則上下無以相保故也。夫事未有不生於微而成于著,聖人之慮遠,故能謹其微而治之。 治,直之翻;下同。眾人之識近,故必待其著而後救之;治其微則用力寡而功多,救其著則竭力而不能及也。易
曰:「履霜堅冰至,」坤
初六爻辭。象
曰:「履霜堅冰,陰始凝也。馴致其道,至堅冰也。」書
曰:「一日二日萬幾,」皋陶謨
之辭。孔安國註
曰:幾,微也。言當戒懼萬事之微。幾,居依翻。謂此類也。故曰分莫大於名也。 分,扶問翻。
〖译文〗 所谓礼教,在于分辨贵贱,排比亲疏,裁决万物,处理日常事物。没有一定的名位,就不能显扬;没有器物,就不能表现。只有用名位来分别称呼,用器物来分别标志,然后上下才能井然有序。这就是礼教的根本所在。如果名位、器物都没有了,那么礼教又怎么能单独存在呢!当年仲叔于奚为卫国建立了大功,他谢绝了赏赐的封地,却请求允许他享用贵族才应有的马饰。孔子认为不如多赏赐他一些封地,惟独名位和器物,绝不能假与他人,这是君王的职权象征;处理政事不坚持原则,国家也就会随着走向危亡。卫国国君期待孔子为他崐处理政事,孔子却先要确立名位,认为名位不正则百姓无所是从。马饰,是一种小器物,而孔子却珍惜它的价值;正名位,是一件小事情,而孔子却要先从它做起,就是因为名位、器物一紊乱,国家上下就无法相安互保。没有一件事情不是从微小之处产生而逐渐发展显著的,圣贤考虑久远,所以能够谨慎对待微小的变故及时予以处理;常人见识短浅,所以必等弊端闹大才来设法挽救。矫正初起的小错,用力小而收效大;挽救已明显的大害,往往是竭尽了全力 也不能成功。《易经》说:“行于霜上而知严寒冰冻将至。”《尚书》说:“先王每天都要兢兢业业地处理成千上万件事情。”就是指这类防微杜渐的例子。所以说,区分地位高下最重要的是匡正各个等级的名分。
嗚呼!幽‹姬宫湦shēng›、厲‹姬胡›失德,周道日衰,綱紀散壞,下陵上替,諸侯專征, 謂齊桓公,晉文公至悼公以及楚莊王、吳夫差之類。大夫擅政,謂晉六卿、魯三家、齊田氏之類。禮之大體什喪七八矣,喪,息浪翻。然文‹姬昌›、武‹姬发›之祀猶綿綿相屬者,屬,聯屬也,音之欲翻。凡聯屬之屬皆同音。蓋以周之子孫尚能守其名分故也。何以言之?昔晉文公‹姬重耳›有大功於王室,請隧於襄王‹姬郑›,襄王不許,曰:「王章也。未有代德而有二王,亦叔父之所惡也。不然,叔父有地而隧,又何請焉!」文公於是懼而不敢違。太叔帶之難,襄王出居於氾fàn‹河南襄城›。晉文公帥師納王,殺太叔帶。既定襄王於郟jiá,王勞之以地,辭;請隧焉,王弗許云云。杜預曰:闕地通路曰隧,此乃王者葬禮也。諸侯皆縣柩而下。王章者,章顯王者異於諸侯。古者天子謂同姓諸侯為伯父、叔父。隧,音遂。惡,烏路翻。難,乃旦翻。氾,音泛。勞,力到翻。闕,其月翻。縣,音玄。柩,其久翻。是故以周之地則不大於曹‹山東定陶›、滕‹山東滕州›,以周之民則不眾於邾‹山东邹县›、莒‹山東莒縣›,曹、滕、邾、莒,春秋時小國。莒,居許翻。然歷數百年,宗主天下,雖以晉、楚、齊、秦之強不敢加者,何哉?徒以名分尚存故也。至於季氏之於魯,田常之于齊,白公之于楚,智伯之于晉,魯大夫季氏,自季友以來,世執魯國之政。季平子逐昭公,季康子逐哀公,然終身北面,不敢篡國。田常,即陳恒。田氏本陳氏;溫公避國諱,改「恒」曰「常」。陳成子得齊國之政,殺闞止,弑簡公,而亦不敢自立。史記世家以陳敬仲完為田敬仲完,陳成子恒為田常,故通鑑因以為據。白公勝殺楚令尹子西、司馬子期,石乞曰:「焚庫弑王,不然不濟!」白公曰:「弑王不祥,焚庫無聚。」智伯當晉之衰,專其國政,侵伐鄰國,于晉大夫為最強;攻晉出公,出公道死。智伯欲并晉而不敢,乃奉哀公驕立之。其勢皆足以逐君而自為,然而卒不敢者,卒,子恤翻,終也。豈其力不足而心不忍哉,乃畏奸名犯分而天下共誅之也。奸,居寒翻,亦犯也。分,扶問翻。今晉大夫暴蔑其君,剖分晉國,史記六國年表:定王十六年,趙、魏、韓滅智伯,遂三分晉國。天子既不能討,又寵秩之,使列於諸侯,是區區之名分復不能守而并棄之也。陸德明經典釋文:凡復字,其義訓又者,并音扶又翻。先王之禮於斯盡矣!
〖译文〗 呜呼!周幽王、周厉王丧失君德,周朝的气数每况愈下。礼纪朝纲土崩瓦解;下欺凌、上衰败;诸侯国君恣意征讨他人;士大夫擅自干预朝政;礼教从总体上已经有十之七八沦丧了。然而周文王、周武王开创的政权还能绵绵不断地延续下来,就是因为周王朝的子孙后裔尚能守定名位。为什么这样说呢?当年晋文公为周朝建立了大功,于是向周襄王请求允许他死后享用王室的隧葬礼制,周襄王没有准许,说:“周王制度明显。没有改朝换代而有两个天子,这也是作为叔父辈的晋文公您所反对的。不然的话,叔父您有地,愿意隧葬,又何必请示我呢?”晋文公于是感到畏惧而没有敢违反礼制。因此,周王室的地盘并不比曹国、滕国大,管辖的臣民也不比邾国、莒国多,然而经过几百年,仍然是天下的宗主,即使是晋、楚、齐、秦那样的强国也还不敢凌驾于其上,这是为什么呢?只是由于周王还保有天子的名分。再看看鲁国的大夫季氏、齐国的田常、楚国的白公胜、晋国的智伯,他们的势力都大得足以驱逐国君而自立,然而他们到底不敢这样做,难道是他们力量不足或是于心不忍吗?只不过是害怕奸夺名位僭犯身分而招致天下的讨伐罢了。现在晋国的三家大夫欺凌蔑视国君,瓜分了晋国,作为天子的周王不能派兵征讨,反而对他们加封赐爵,让他们列位于诸侯国君之中,这样做就使周王朝仅有的一点名分不能再守定而全部放弃了。周朝先王的礼教到此丧失干净!
或者以為當是之時,周室微弱,三晉強盛,三家分晉國,時因謂之「三晉」,猶後之三秦、三齊也。雖欲勿許,其可得乎!是大不然。夫三晉雖強,苟不顧天下之誅而犯義侵禮,則不請於天子而自立矣。不請於天子而自立,則為悖逆之臣,夫,音扶。悖,蒲內翻,又蒲沒翻。天下苟有桓、文之君,必奉禮義而征之。今請於天子而天子許之,是受天子之命而為諸侯也,誰得而討之!故三晉之列于諸侯,非三晉之壞禮,乃天子自壞之也。壞,音怪,人毀之也。
〖译文〗 有人认为当时周王室已经衰微,而晋国三家力量强盛,就算周王不想承认他们,又怎么能做得到呢!这种说法是完全错误的。晋国三家虽然强悍,但他们如果打算不顾天下的指责而公然侵犯礼义的话,就不会来请求周天子的批准,而是去自立为君了。不向天子请封而自立为国君,那就是叛逆之臣,天下如果有像齐桓公、晋文公那样的贤德诸侯,一定会尊奉礼义对他们进行征讨。现在晋国三家向天子请封,天子又批准了。他们就是奉天子命令而成为诸侯的,谁又能对他们加以讨伐呢!所以晋国三家大夫成为诸侯,并不是晋国三家破坏了礼教,正是周天子自已破坏了周朝的礼教啊!
烏呼!君臣之禮既壞矣,此壞,其義為成壞之壞,讀如字。則天下以智力相雄長,長,知兩翻。遂使聖賢之後為諸侯者,社稷無不泯絕,謂齊、宋亡于田氏,魯、陳、越亡于楚,鄭亡于韓也。泯,彌忍翻,盡也,又彌鄰翻。毛晃曰:沒也,滅也。生民之類糜滅幾盡,說文曰:糜,糝sǎn也;取糜爛之義,音忙皮翻。幾,居依翻,又渠希翻,近也。豈不哀哉!
〖译文〗 呜呼!君臣之间的礼纪既然崩坏,于是天下便开始以智慧、武力互相争雄,使当年受周先王分封而成为诸侯国君的圣贤后裔,江山相继沦亡,周朝先民的子孙灭亡殆尽,岂不哀伤!
...
2024年12月24日 09:46 周二向bash脚本添加参数
#
basic
#
─ ~/shellTest ly@vmmin 10:37:24
╰─❯ cat ./16myscript_cls.sh
#!/bin/bash
echo "You entered the argument: $1,$2,$3, and $4."
结果
╭─ ~/shellTest 16s ly@vmmin 10:37:18
╰─❯ ./16myscript_cls.sh Linux1 Linux2
You entered the argument: Linux1,Linux2,, and .
示例1
#
╭─ ~/shellTest ly@vmmin 10:41:45
╰─❯ cat ./16myscript_cls.sh
#!/bin/bash
ls -lh $1
#echo "You entered the argument: $1,$2,$3, and $4."
╭─ ~/shellTest ly@vmmin 10:41:28
╰─❯ ./16myscript_cls.sh /etc
total 792K
-rw-r--r-- 1 root root 3.0K May 25 2023 adduser.conf
-rw-r--r-- 1 root root 44 Dec 17 15:26 adjtime
-rw-r--r-- 1 root root 194 Dec 23 22:38 aliases
drwxr-xr-x 2 root root 4.0K Dec 23 22:38 alternatives
drwxr-xr-x 2 root root 4.0K Dec 17 15:24 apparmor
drwxr-xr-x 8 root root 4.0K Dec 17 15:25 apparmor.d
drwxr-xr-x 9 root root 4.0K Dec 17 15:30 apt
-rw-r----- 1 root daemon 144 Oct 16 2022 at.deny
-rw-r--r-- 1 root root 2.0K Mar 30 2024 bash.bashrc
示例2
#
#!/bin/bash
lines=$(ls -lh $1 | wc -l) #行计数
echo "You hava $(($lines-1)) objects in the $1 directory."
#$(($lines-1))这里用到了子shell
#echo "You entered the argument: $1,$2,$3, and $4."
╭─ ~/shellTest ly@vmmin 10:48:06
╰─❯ ls -lh logfiles
total 12K
-rw-r--r-- 1 ly ly 0 Dec 22 23:07 a.log
-rw-r--r-- 1 ly ly 120 Dec 22 23:17 a.log.tar.gz
-rw-r--r-- 1 ly ly 0 Dec 22 23:07 b.log
-rw-r--r-- 1 ly ly 121 Dec 22 23:17 b.log.tar.gz
-rw-r--r-- 1 ly ly 0 Dec 22 23:07 c.log
-rw-r--r-- 1 ly ly 121 Dec 22 23:17 c.log.tar.gz
-rw-r--r-- 1 ly ly 0 Dec 22 23:15 xx.txt
-rw-r--r-- 1 ly ly 0 Dec 22 23:15 y.txt
╭─ ~/shellTest ly@vmmin 10:48:10
╰─❯ ./16myscript_cls.sh logfiles
You hava 8 objects in the logfiles directory.
head,表示前十行,可以看出total这些被算作一行了,所以上面的shell中-1
...
2024年12月23日 21:03 周一functions 函数
#
以update
这个脚本为基础编改
作用
#!/bin/bash
release_file=/etc/os-release
logfile=/var/log/updater.log
errorlog=/var/log/updater_errors.log
check_exit_status(){
if [ $? -ne 0 ]
then
echo "An error occured,please check the $errorlog file."
fi
}
if grep -q "Arch" $release_file
then
sudo pacman -Syu 1>>$logfile 2>>$errorlog
check_exit_status
fi
if grep -q "Ubuntu" $release_file || grep -q "Debian" $release_file
then
sudo apt update 1>>$logfile 2>>$errorlog
check_exit_status
#默认yes
sudo apt dist-upgrade -y 1>>$logfile 2>>$errorlog
check_exit_status
fi
CaseStatements
#
脚本
#
╭─ ~/shellTest ly@vmmin 22:32:52
╰─❯ cat ./13myscript_cls.sh
#!/bin/bash
finished=0
while [ $finished -ne 1 ]
do
echo "What is your favorite Linux distribution?"
echo "1 - Arch"
echo "2 - CentOS"
echo "3 - Debian"
echo "4 - Mint"
echo "5 - Something else.."
echo "6 - exit"
read distro;
case $distro in
1) echo "Arch is xxx";;
2) echo "CentOS is xbxxx";;
3) echo "Debian is bbbxx";;
4) echo "Mint is xxxxsss";;
5) echo "Something els.xxxxx";;
6) finished=1
echo "now will exit"
;;
*) echo "you didn't enter an xxxx choice."
esac
done
echo "Thanks for using this script."
脚本执行
#
╭─ ~/shellTest ly@vmmin 22:32:11
╰─❯ ./13myscript_cls.sh
What is your favorite Linux distribution?
1 - Arch
2 - CentOS
3 - Debian
4 - Mint
5 - Something else..
6 - exit
3
Debian is bbbxx
What is your favorite Linux distribution?
1 - Arch
2 - CentOS
3 - Debian
4 - Mint
5 - Something else..
6 - exit
u
you didn't enter an xxxx choice.
What is your favorite Linux distribution?
1 - Arch
2 - CentOS
3 - Debian
4 - Mint
5 - Something else..
6 - exit
6
now will exit
Thanks for using this script.
ScheduleJobs
#
作用
#
脚本在特定时间运行
...
2024年12月21日 12:00 周六WhileLoops
#
范例
#
#!/bin/bash
myvar=1
#小于或者等于10
while [ $myvar -le 10 ]
do
echo $myvar
myvar=$(( $myvar + 1 ))
sleep 0.5
done
运行
╭─ ~/shellTest ≡ ly@vmmin 12:10:33
╰─❯ ./71myscript_cls.sh
1
2
3
4
5
6
7
8
9
10
数字会每隔0.5s就输出一次
对于myvar=$(( $myvar + 1 ))
,$((expression))
形式表示算数运算,而且其中的空格是可以省略的
范例2
#
#!/bin/bash
while [ -f ~/testfile ]
do
echo "As of $(date),the test file exists."
sleep 5
done
echo "As of $(date), the test ....has gone missing."
用来测试文件是否存在,运行前先新建一下文件touch ~/testfile
运行一会后把文件删除,如图

...
2024年12月21日 10:25 周六意义
#
用来确定代码是否执行成功
例子
#
ls -l /misc
echo $? #输出2
ls -l ~
echo $? #输出0
$?
用来显示最近一个命令的状态,零表示成功,非零表示失败
#!/bin/bash
#这个例子之前,作者用 sudo apt remove htop 命令把htop删除了
package=htop
sudo apt install $package
echo "The exit code for ....is $?"
安装完毕后显示返回0

另一个示例
#!/bin/bash
package=notexist
sudo apt install $package
echo "The exit code for ....is $?"
#执行后显示
#Reading package lists... Done
#Building dependency tree... Done
#Reading state information... Done
#E: Unable to locate package notexist
#The exit code for ....is 100
配合if语句
#
基本功能
#
#!/bin/bash
package=htop
sudo apt install $package
if [ $? -eq 0 ]
then
echo "The installation of $package success..."
echo "new comman here:"
which $package
else
echo "$package failed ..."
fi
之前前作者用sudo apt remove htop
又把htop删除了,不过其实不删除也是走的 echo "The installation of ....."
这个分支
结果:
...
2024年12月20日 18:03 周五在shell中,零为真,非零为假。
if then fi
#
mynum=200
#[和]前后都要有空格
if [ $mynum -eq 200 ]
then
echo "The condition is true."
fi

编辑之后,按ctrl + O 保存文件
ctrl + T + Z 保持在后台,fg
+回车 恢复
#!/bin/bash
mynum=200
#[和]前后都要有空格
if [ $mynum -eq 200 ]
then
echo "The condition is true."
fi
if [ $mynum -eq 300 ]
then
echo "The variable does not equal 200."
fi

else if
#
#!/bin/bash
mynum=300
#[和]前后都要有空格
if [ $mynum -eq 200 ]
then
echo "The condition is true."
else
echo "The variable does not equal>
fi

...
2024年12月20日 15:28 周五意义
#
执行一系列命令
视频框架
#
- 介绍,欢迎
- HelloWorld
- 变量
- 数学函数
- if语句
- 退出代码
- while循环
- 更新脚本,保持服务器最新状态
- for循环
- 脚本应该存储在文件系统哪个位置
- 数据流,标准输入、标准输出、标准错误输出
- 函数
- case语句
- 调度作业(SchedulingJobs)Part1
- 调度作业(SchedulingJobs)Part2
- 传递参数
- 备份脚本
准备
#
需要一台运行Linux系统的计算机(或虚拟机)
一些基本操作
#
新建或编辑脚本
#
内容
#

ctrl + o 保存,ctrl + x 退出
如何执行脚本
#
权限
#
#给脚本赋予执行的权限
sudo chmod +x myscript.sh
执行
#
执行前查看权限
#

运行
#
查看脚本
#
更多语句的脚本
#
输出

...
2024年12月19日 17:49 周四环境
#
- 使用视频作者给出的示例,
https://github.com/CoreyMSchafer/code_snippets/tree/master/Regular-Expressions
- 使用sublimeText打开的文件,ctrl+f时要确认勾选正则及区分大小写

simple.txt-基础操作
#
直接搜索
#

任意字符
#

这里默认不会显示所有,点击findAll才会出来
有些字符需要加反斜杠转义,比如 . (点)以及 \ (斜杠本身)
#
/////,从左到右,和书写方向一致的叫做(正)斜杠。
反之,叫做反斜杠 \


一些元字符
#
. - Any Character Except New Line 除了换行符的任意字符
\d - Digit (0-9) 数字
\D - Not a Digit (0-9) 非数字
\w - Word Character (a-z, A-Z, 0-9, _) 单词字符,大小写字母+数字+下划线
\W - Not a Word Character 非单词字符
\s - Whitespace (space, tab, newline) 空白字符,空格+tab+换行符
\S - Not Whitespace (space, tab, newline) 非空白字符
\b - Word Boundary 边界字符-单词边界
\B - Not a Word Boundary 非单词边界(没有单词边界)
^ - Beginning of a String
$ - End of a String
[] - Matches Characters in brackets
[^ ] - Matches Characters NOT in brackets
| - Either Or
( ) - Group
Quantifiers:
* - 0 or More
+ - 1 or More
? - 0 or One
{3} - Exact Number
{3,4} - Range of Numbers (Minimum, Maximum)
#### Sample Regexs ####
[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+
边界字符
#

...