shell執(zhí)行g(shù)it命令

shell執(zhí)行g(shù)it命令

發(fā)布代碼的git命令

我的博客

發(fā)布博客代碼到vps上,按順序執(zhí)行下面的git命令:

git pull origin test
git push origin master

在已經(jīng)記住了這兩個(gè)git命令的情況下踏施,沒(méi)有必要每次發(fā)布
都敲這么多代碼应又。我需要一個(gè)shell腳本宙项,一次性執(zhí)行多條
命令。

刪除緩存的linux命令

我的博客

由于我把每篇文章數(shù)據(jù)都存儲(chǔ)到了文件緩存中株扛,每次編輯
舊文章重新發(fā)布后尤筐,并不能看到最新數(shù)據(jù),需要到服務(wù)器
上手工清理緩存洞就。這也很麻煩盆繁。

刪除緩存的linux命令是:

rm -rvf /usr/local/nginx/html/blog/runtime/cache

編寫(xiě)shell腳本

#! /bin/bash
# 保存當(dāng)前目錄
currentDir=$PWD
echo "Start to publish...\n"
# 切換到項(xiàng)目目錄
cd /usr/local/nginx/html/blog
# 執(zhí)行g(shù)it命令
git pull origin test
git push origin master
# 切換回原來(lái)的目錄
cd $currentDir
# 刪除緩存 
rm -rvf /usr/local/nginx/html/blog/runtime/cache
echo "Success\n";

執(zhí)行腳本

假設(shè)寫(xiě)好的腳本文件名為git.sh,若直接運(yùn)行該腳本旬蟋,會(huì)提示
無(wú)權(quán)限油昂。那就必須讓執(zhí)行腳本的用戶具有執(zhí)行這個(gè)腳本的權(quán)限,
使用命令:

chmod +x ./test.sh #使腳本具有執(zhí)行權(quán)限

以后每次發(fā)布項(xiàng)目的時(shí)候倾贰,直接使用執(zhí)行腳本就可以了冕碟。

./git.sh 

制作軟連接

軟連接與硬鏈接概念

Linux軟連接和硬鏈接

軟連接相當(dāng)于windows里的快捷方式,刪除它之后匆浙,原文件依然存在安寺。
一個(gè)文件,有多個(gè)硬鏈接與其對(duì)應(yīng)吞彤。只有將該文件的所有硬鏈接刪除
之后我衬,該文件才會(huì)被刪除叹放。

軟連接與硬鏈接命令

待補(bǔ)充。

遇到的問(wèn)題

error: 無(wú)法打開(kāi) .git/FETCH_HEAD:????

使用cg帳號(hào)執(zhí)行git.sh的時(shí)候挠羔,出現(xiàn)這個(gè)錯(cuò)誤提示井仰。切換到root
帳號(hào),su root后破加,可以執(zhí)行這個(gè)腳本了俱恶。

壞的解釋器: 沒(méi)有那個(gè)文件或目錄

錯(cuò)誤現(xiàn)象

執(zhí)行下面的腳本:

#! /bin/bash
# 保存當(dāng)前目錄
currentDir=$PWD
echo "Start to publish...\n"
# 切換到項(xiàng)目目錄
cd /usr/local/nginx/html/blog
# 執(zhí)行g(shù)it命令
git pull origin test
git push origin master
# 切換回原來(lái)的目錄
cd $currentDir
# 刪除緩存 
rm -rvf /usr/local/nginx/html/blog/runtime/cache
echo "Success\n";

控制臺(tái)出現(xiàn)錯(cuò)誤信息:

[root@localhost shell]# ./git.sh
bash: ./git.sh: /bin/bash^M: 壞的解釋器: 沒(méi)有那個(gè)文件或目錄

用命令cat -A git.sh查看git.sh,內(nèi)容非常奇怪范舀,見(jiàn)下圖:

shell執(zhí)行g(shù)it命令_壞的解釋器

使用cat -A test.sh查看test.sh合是,test.sh能夠正常運(yùn)行。它的內(nèi)容是:

shell執(zhí)行g(shù)it命令_正常

打開(kāi)Notepad++的“顯示所有字符”開(kāi)關(guān)后锭环,看到了正常腳本與異常腳本的差異:

shell執(zhí)行g(shù)it命令_正常與異常對(duì)比

產(chǎn)生原因

原因很長(zhǎng)聪全,詳情見(jiàn) Linux和windows中的換行符差異問(wèn)題

我只掌握這些:Unix系統(tǒng)里辅辩,每行結(jié)尾只有“<換行>”难礼,即“\n”;Windows系統(tǒng)
里面玫锋,每行結(jié)尾是“<換行><回車>”蛾茉,即“\n\r”;Mac系統(tǒng)里撩鹿,每行結(jié)尾是“<回車>”谦炬。
一個(gè)直接后果是,Unix/Mac系統(tǒng)下的文件在Windows里打開(kāi)的話节沦,所有文字會(huì)變成
一行键思;而Windows里的文件在Unix/Mac下打開(kāi)的話,在每行的結(jié)尾可能會(huì)多出一個(gè)^M符號(hào)
windows創(chuàng)建的文件是 \n\r結(jié)束的散劫, 而linux稚机,mac這種unix類系統(tǒng)是\n結(jié)束的。

解決辦法

編程工作幾乎全在windows上做获搏,在windows上寫(xiě)出來(lái)的shell腳本因換行問(wèn)題
不能在linux上執(zhí)行,有兩種解決方法:

  1. 寫(xiě)好腳本之后失乾,借助linux的sed工具處理腳本常熙。

  2. 用PHP寫(xiě)個(gè)文本處理工具,在linux上運(yùn)行腳本之前碱茁,先用PHP工具處理好
    shell腳本的換行問(wèn)題裸卫。

先嘗試一些第一種,在linux上執(zhí)行命令

sed -i 's/\r$//'git.sh 

-i表示插入纽竣,'s'表示替代模式墓贿,\r$表示任何以\r結(jié)尾的字符茧泪。整句的意思是,
\r結(jié)尾的字符替換成空白聋袋。(不理解)

執(zhí)行上述命令队伟,屏幕打印報(bào)錯(cuò)信息:

[root@localhost shell]# sed -i 's/\r$//'git.sh 
sed:-e 表達(dá)式 #1,字符 10:“s”的未知選項(xiàng)

使用下面的命令:

sed -i 's/\r$//' git.sh

沒(méi)有任何輸出信息幽勒。再使用cat -A git.sh查看嗜侮,發(fā)現(xiàn)已經(jīng)正常了。用sz命令把
git.sh下載到windows上用notepad++查看啥容,也是正常的锈颗。

正確的sed代碼與錯(cuò)誤的sed代碼僅有的差異是:

sed -i 's/\r$//'git.sh 
sed -i 's/\r$//' git.sh

git.sh是否與前面有空格。

還有一個(gè)發(fā)現(xiàn):若一個(gè)文件的換行符是\r咪惠,那么即使在windows下通過(guò)回車鍵
換行击吱,換行符也是\n∫C粒可以保留一份以\n為換行符的shell腳本模板覆醇,每次新建
shell腳本的時(shí)候,都用它渠鸽。

我的博客

shell腳本切換用戶后停止執(zhí)行

詳情見(jiàn):shell腳本切換用戶后停止執(zhí)行了

其他知識(shí)

批量刪除文件

下面的命令刪除了所有的txt文件叫乌,包括當(dāng)前目錄的下級(jí)目錄!

find . -name "*.txt" -type f  | xargs -n 1 rm -f

find . -name "*.txt" -type f  | xargs -n 1 rm

git查看遠(yuǎn)程倉(cāng)庫(kù)地址

git remote -v

我的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末徽缚,一起剝皮案震驚了整個(gè)濱河市憨奸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凿试,老刑警劉巖排宰,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異那婉,居然都是意外死亡板甘,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)详炬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盐类,“玉大人,你說(shuō)我怎么就攤上這事呛谜≡谔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵隐岛,是天一觀的道長(zhǎng)猫妙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)聚凹,這世上最難降的妖魔是什么割坠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任齐帚,我火速辦了婚禮,結(jié)果婚禮上彼哼,老公的妹妹穿的比我還像新娘对妄。我一直安慰自己,他們只是感情好沪羔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布饥伊。 她就那樣靜靜地躺著,像睡著了一般蔫饰。 火紅的嫁衣襯著肌膚如雪琅豆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天篓吁,我揣著相機(jī)與錄音茫因,去河邊找鬼。 笑死杖剪,一個(gè)胖子當(dāng)著我的面吹牛冻押,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盛嘿,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼洛巢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了次兆?” 一聲冷哼從身側(cè)響起稿茉,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芥炭,沒(méi)想到半個(gè)月后漓库,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡园蝠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年渺蒿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彪薛。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茂装,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出善延,到底是詐尸還是另有隱情训唱,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布挚冤,位于F島的核電站,受9級(jí)特大地震影響赞庶,放射性物質(zhì)發(fā)生泄漏训挡。R本人自食惡果不足惜澳骤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澜薄。 院中可真熱鬧为肮,春花似錦、人聲如沸肤京。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忘分。三九已至棋枕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妒峦,已是汗流浹背重斑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肯骇,地道東北人窥浪。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像笛丙,于是被迫代替她去往敵國(guó)和親漾脂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胚鸯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容