那些年我們一起追過的Shell Script

2022-07-16 11:03:15 字數 1693 閱讀 1274

原本這是自己在幾個月前為公司的乙個分享活動寫的乙個投影片,今天趁大腦負荷比較小,把這個話題拿到blog上面來分享一下。從知道shell算起至今也就幾個年頭而已,如今勉強算是入門了。對某乙個新事物的掌握總是乙個循序漸近的過程,只是根據不一樣事物的特點,其學習的曲線也不盡一致。shell script算是一門古老的指令碼語言,最初始於unix/linux的系統管理中,使用者透過shell可以將自己的命令傳遞給系統的核心,當系統完成你的命令後返回執行的結果給使用者,所以shell最初意義上被定義為使用者的作業系統的乙個互動介面。當使用者總是執行一連串重複的命令的時候,便思考能不能將這些重複的命令按照一定的格式組織在乙個文字裡面,然後每一次通過去解釋執行這樣的文本來實現一連串的命令,於是shell script便應運而生。這便是計算機早期的批次處理的工作方式,如同windows下面的batch(當然名字叫batch的程式並非一行行的去執行,其實他和shell script一樣具有指令碼語言的語法,只是要簡單和生硬得多而已)。

上面說到shell script的學習曲線,我個人覺得前期的一些背景知識的學習是必不可少的,所以在學習的初期可能給你帶來一定的困難,當你一旦掌握了其原理和擁有了一點實際的經驗,那麼你就會覺得簡單多了,但是你要想成為像那些linux指令碼天才一樣,能夠將它運用到極限,那不言而喻。對於乙個嵌入式、linux/unix程式設計師或者計算機系統管理員,shell script總是一門必須課程,所以我們應該趁早學習,免得許多年後你發現shell script的強大時候才感覺「相見恨晚」。我們應該如何學起呢? 不像其他的高階語言,如c languge,他們總是具有很好的跨平台性,無論是你使用windows,還是使用linux,或者是mac os,你都可以很容易的獲取開發環境進行開發。shell script和unix/linux與生俱來,所以你要學習前總不可能避免的回去學習linux。或許你是乙個被ms windows毒害至深的tx,根本沒聽過linux,抑或僅僅聽過linux,又或者是用過但是覺得超級難用… 諸如此類,都要克服人的惰性去學習,人總是習慣自己習慣的事物,改變自己習慣的習慣總是很難,而且還對違背自己習慣的事物非常的抵制。這裡並不是比較windows vs linux,這是乙個沒有結論的爭論。所以勸導大家在習慣自己習慣之前先養成乙個好的習慣。

前面有關無關的話講了許多,接下來簡單介紹一下shell script,shell script你可以認為他就是一門高階的指令碼語言,shell就是他的解釋執行器,然後許許多多的系統自帶的命令你可以想象成為是標準函式庫。對於直譯器,在大多數的posix系統裡面都將bash作為預設的shell,所以這裡的shell script的語法也默指bash的語法規則。bash,你在大多數的linux或者unix 發行版中都應該可以找到,而且你一樣可以從windows下面的unix like環境cygwin下面開啟。然後shell script的語法部分內容都在我的投影片裡面有講述,後面會給出投影片的位置。下面分享乙個簡單的shell script例項:

大部分的程式設計師估計都會使用svn作為版本控制工具(或許一些老頑固還在使用vss,或許我自己out,大部分都在使用git了),那在

tortoise

svn 1.7

之前你總有為工程目錄下面到處都是.svn的目錄而苦惱過,或許你早已經google了一些小的tool可以解決這個問題,但是我這裡想介紹的是通過shell script也很容易實現諸如此類的需求:  

#!/bin/bash

cleansvn ()

cleansvn;

shell script introduce.pdf @ github

那些年我們一起追過的流量

前一段的熱播電影 那些年我們一起追過的女孩 很多人討論問什麼最後男女主角沒有在一起,這個麼仁者見仁,智者見智。我借這個東風,聊一聊那些年我們追過的流量,分析一下問什麼客戶不願意和自己 在一起。這些都是筆者以前做過的和看到的例子。1.關於程式設計客棧問答平台 搜搜問問 天涯問答等 以dtaye知道為例...

那些年我們一起追過的快取寫法 一

本篇主要介紹下樓主平常專案中,快取使用經驗和遇到過的問題。基本寫法 快取雪崩 全域性鎖,例項鎖 字串鎖 快取穿透 再談快取雪崩 總結為了方便演示,這裡使用runtime.cache做快取容器,並定義個簡單操作類。如下 public class cachehelper public static vo...

那些年我們一起追過的快取寫法 三

上篇介紹了多級快取,本章詳細介紹下記憶體快取該如何設計。閱讀目錄 分析設計 o 1 lru實現 過期刪除策略 總結假設有個專案有比較高的併發量,要用到多級快取,如下 在實際設計乙個記憶體快取前,需要考慮的問題 2 記憶體容量的限制,需要控制快取數量。3 熱點資料更新不同,需要可配置單個key過期時間...