六試Ubuntu-Shell腳本

隨意讀:

Linux Kernel 4.3發(fā)布嚷掠,4.4將會是LTS版本 - Linux 4.3

程序員崩潰:2.55乘100結(jié)果竟不是255 - 二進(jìn)制


Shell本身是一個用C語言編寫的程序,它是用戶使用Unix/Linux的橋梁,用戶的大部分工作都是通過Shell完成的。Shell既是一種命令語言种玛,又是一種程序設(shè)計(jì)語言锭沟。作為命令語言,它交互式地解釋和執(zhí)行用戶輸入的命令莲祸;作為程序設(shè)計(jì)語言,它定義了各種變量和參數(shù)椭迎,并提供了許多在高級語言中才具有的控制結(jié)構(gòu)锐帜,包括循環(huán)和分支。

它雖然不是Unix/Linux系統(tǒng)內(nèi)核的一部分畜号,但它調(diào)用了系統(tǒng)核心的大部分功能來執(zhí)行程序缴阎、建立文件并以并行的方式協(xié)調(diào)各個程序的運(yùn)行。因此简软,對于用戶來說蛮拔,shell是最重要的實(shí)用程序,深入了解和熟練掌握shell的特性極其使用方法痹升,是用好Unix/Linux系統(tǒng)的關(guān)鍵建炫。

下面介紹兩個有意思的shell命令

1. 循環(huán)廣播(廣播轟炸)

#!/bin/sh

while true

do

echo wall hi

done

執(zhí)行以上shell命令,只要電腦連接一臺服務(wù)器视卢,就可以無限度廣播下去踱卵,按Ctrl+C即可終止。稍加修改

#!/bin/sh

while true

do

echo write 6000 hi

done

即可指定對一個人推送消息(以此來報(bào)復(fù))

2. shell腳本上的俄羅斯方塊(Linux下shell腳本制作俄羅斯方塊游戲?)

將網(wǎng)站內(nèi)代碼復(fù)制到 .sh 腳本中隨后運(yùn)行

就可以體驗(yàn)一下闊別依舊的俄羅斯方塊了据过。

此外還有許多shell下的小游戲例如掃雷一類的惋砂,大家可以自己搜搜看



參考來源:

Linux Shell腳本教程:30分鐘玩轉(zhuǎn)Shell腳本編程_Shell中文網(wǎng)

#!/bin/bash

# Tetris Game

# 10.21.2003 xhchen< [email]xhchen@winbond.com.tw[/email]>

#APP declaration

APP_NAME="${0##*[\\/]}"

APP_VERSION="1.0"

#顏色定義

cRed=1

cGreen=2

cYellow=3

cBlue=4

cFuchsia=5

cCyan=6

cWhite=7

colorTable=($cRed$cGreen$cYellow$cBlue$cFuchsia$cCyan$cWhite)

#位置和大小

iLeft=3

iTop=2

((iTrayLeft=iLeft+2))

((iTrayTop=iTop+1))

((iTrayWidth=10))

((iTrayHeight=15))

#顏色設(shè)置

cBorder=$cGreen

cScore=$cFuchsia

cScoreValue=$cCyan

#控制信號

#改游戲使用兩個進(jìn)程,一個用于接收輸入绳锅,一個用于游戲流程和顯示界面;

#當(dāng)前者接收到上下左右等按鍵時西饵,通過向后者發(fā)送signal的方式通知后者。

sigRotate=25

sigLeft=26

sigRight=27

sigDown=28

sigAllDown=29

sigExit=30

#七中不同的方塊的定義

#通過旋轉(zhuǎn)鳞芙,每種方塊的顯示的樣式可能有幾種

box0=(00011011)

box1=(0212223210111213)

box2=(0001111201101120)

box3=(0102101100101121)

box4=(01021121101112220111202100101112)

box5=(01112122101112200001112102101112)

box6=(01111221101112210110112101101112)

#所有其中方塊的定義都放到box變量中

box=(${box0[@]}${box1[@]}${box2[@]}${box3[@]}${box4[@]}${box5[@]}${box6[@]})

#各種方塊旋轉(zhuǎn)后可能的樣式數(shù)目

countBox=(1222444)

#各種方塊再box數(shù)組中的偏移

offsetBox=(013571115)

#每提高一個速度級需要積累的分?jǐn)?shù)

iScoreEachLevel=50#be greater than 7

#運(yùn)行時數(shù)據(jù)

sig=0#接收到的signal

iScore=0#總分

iLevel=0#速度級

boxNew=()#新下落的方塊的位置定義

cBoxNew=0#新下落的方塊的顏色

iBoxNewType=0#新下落的方塊的種類

iBoxNewRotate=0#新下落的方塊的旋轉(zhuǎn)角度

boxCur=()#當(dāng)前方塊的位置定義

cBoxCur=0#當(dāng)前方塊的顏色

iBoxCurType=0#當(dāng)前方塊的種類

iBoxCurRotate=0#當(dāng)前方塊的旋轉(zhuǎn)角度

boxCurX=-1#當(dāng)前方塊的x坐標(biāo)位置

boxCurY=-1#當(dāng)前方塊的y坐標(biāo)位置

iMap=()#背景方塊圖表

#初始化所有背景方塊為-1, 表示沒有方塊

for((i=0;i

#接收輸入的進(jìn)程的主函數(shù)

functionRunAsKeyReceiver()

{

localpidDisplayerkeyaKeysigcESCsTTY

pidDisplayer=$1

aKey=(000)

cESC=`echo-ne"\033"`

cSpace=`echo-ne"\040"`

#保存終端屬性眷柔。在read -s讀取終端鍵時,終端的屬性會被暫時改變原朝。

#如果在read -s時程序被不幸殺掉驯嘱,可能會導(dǎo)致終端混亂,

#需要在程序退出時恢復(fù)終端屬性喳坠。

sTTY=`stty-g`

#捕捉退出信號

trap"MyExit;"INTTERM

trap"MyExitNoSub;"$sigExit

#隱藏光標(biāo)

echo-ne"\033[?25l"

while:

do

#讀取輸入鞠评。注-s不回顯,-n讀到一個字符立即返回

read-s-n1key

aKey[0]=${aKey[1]}

aKey[1]=${aKey[2]}

aKey[2]=$key

sig=0

#判斷輸入了何種鍵

if[[$key==$cESC&&${aKey[1]}==$cESC]]

then

#ESC鍵

MyExit

elif[[${aKey[0]}==$cESC&&${aKey[1]}=="["]]

then

if[[$key=="A"]];thensig=$sigRotate#<向上鍵>

elif[[$key=="B"]];thensig=$sigDown#< 向下鍵>

elif[[$key=="D"]];thensig=$sigLeft#< 向左鍵>

elif[[$key=="C"]];thensig=$sigRight#< 向右鍵>

fi

elif[[$key=="W"||$key=="w"]];thensig=$sigRotate#W, w

elif[[$key=="S"||$key=="s"]];thensig=$sigDown#S, s

elif[[$key=="A"||$key=="a"]];thensig=$sigLeft#A, a

elif[[$key=="D"||$key=="d"]];thensig=$sigRight#D, d

elif[["[$key]"=="[]"]];thensig=$sigAllDown#空格鍵

elif[[$key=="Q"||$key=="q"]]#Q, q

then

MyExit

fi

if[[$sig!=0]]

then

#向另一進(jìn)程發(fā)送消息

kill-$sig$pidDisplayer

fi

done

}

#退出前的恢復(fù)

functionMyExitNoSub()

{

localy

#恢復(fù)終端屬性

stty$sTTY

((y=iTop+iTrayHeight+4))

#顯示光標(biāo)

echo-e"\033[?25h\033[${y};0H"

exit

}

functionMyExit()

{

#通知顯示進(jìn)程需要退出

kill-$sigExit$pidDisplayer

MyExitNoSub

}

#處理顯示和游戲流程的主函數(shù)

functionRunAsDisplayer()

{

localsigThis

InitDraw

#掛載各種信號的處理函數(shù)

trap"sig=$sigRotate;"$sigRotate

trap"sig=$sigLeft;"$sigLeft

trap"sig=$sigRight;"$sigRight

trap"sig=$sigDown;"$sigDown

trap"sig=$sigAllDown;"$sigAllDown

trap"ShowExit;"$sigExit

while:

do

#根據(jù)當(dāng)前的速度級iLevel不同壕鹉,設(shè)定相應(yīng)的循環(huán)的次數(shù)

for((i=0;i<21-iLevel;i++))

do

sleep0.02

sigThis=$sig

sig=0

#根據(jù)sig變量判斷是否接受到相應(yīng)的信號

if((sigThis==sigRotate));thenBoxRotate;#旋轉(zhuǎn)

elif((sigThis==sigLeft));thenBoxLeft;#左移一列

elif((sigThis==sigRight));thenBoxRight;#右移一列

elif((sigThis==sigDown));thenBoxDown;#下落一行

elif((sigThis==sigAllDown));thenBoxAllDown;#下落到底

fi

done

#kill -$sigDown $$

BoxDown#下落一行

done

}

#BoxMove(y, x), 測試是否可以把移動中的方塊移到(x, y)的位置, 返回0則可以, 1不可以

functionBoxMove()

{

localjixyxTestyTest

yTest=$1

xTest=$2

for((j=0;j<8;j+=2))

do

((i=j+1))

((y=${boxCur[$j]}+yTest))

((x=${boxCur[$i]}+xTest))

if((y<0||y>=iTrayHeight||x<0||x>=iTrayWidth))

then

#撞到墻壁了

return1

fi

if((${iMap[y*iTrayWidth+x]}!=-1))

then

#撞到其他已經(jīng)存在的方塊了

return1

fi

done

return0;

}

#將當(dāng)前移動中的方塊放到背景方塊中去,

#并計(jì)算新的分?jǐn)?shù)和速度級剃幌。(即一次方塊落到底部)

functionBox2Map()

{

localjixyxpypline

#將當(dāng)前移動中的方塊放到背景方塊中去

for((j=0;j<8;j+=2))

do

((i=j+1))

((y=${boxCur[$j]}+boxCurY))

((x=${boxCur[$i]}+boxCurX))

((i=y*iTrayWidth+x))

iMap[$i]=$cBoxCur

done

#消去可被消去的行

line=0

for((j=0;j

do

for((i=j+iTrayWidth-1;i>=j;i--))

do

if((${iMap[$i]}==-1));thenbreak;fi

done

if((i>=j));thencontinue;fi

((line++))

for((i=j-1;i>=0;i--))

do

((x=i+iTrayWidth))

iMap[$x]=${iMap[$i]}

done

for((i=0;i

do

iMap[$i]=-1

done

done

if((line==0));thenreturn;fi

#根據(jù)消去的行數(shù)line計(jì)算分?jǐn)?shù)和速度級

((x=iLeft+iTrayWidth*2+7))

((y=iTop+11))

((iScore+=line*2-1))

#顯示新的分?jǐn)?shù)

echo-ne"\033[1m\033[3${cScoreValue}m\033[${y};${x}H${iScore}???????? "

if((iScore%iScoreEachLevel

then

if((iLevel<20))

then

((iLevel++))

((y=iTop+14))

#顯示新的速度級

echo-ne"\033[3${cScoreValue}m\033[${y};${x}H${iLevel}????????"

fi

fi

echo-ne"\033[0m"

#重新顯示背景方塊

for((y=0;y

do

((yp=y+iTrayTop+1))

((xp=iTrayLeft+1))

((i=y*iTrayWidth))

echo-ne"\033[${yp};${xp}H"

for((x=0;x

do

((j=i+x))

if((${iMap[$j]}==-1))

then

echo-ne"??"

else

echo-ne"\033[1m\033[7m\033[3${iMap[$j]}m\033[4${iMap[$j]}m[]\033[0m"

fi

done

done

}

#下落一行

functionBoxDown()

{

localys

((y=boxCurY+1))#新的y坐標(biāo)

ifBoxMove$y$boxCurX#測試是否可以下落一行

then

s="`DrawCurBox 0`"#將舊的方塊抹去

((boxCurY=y))

s="$s`DrawCurBox 1`"#顯示新的下落后方塊

echo-ne$s

else

#走到這兒, 如果不能下落了

Box2Map#將當(dāng)前移動中的方塊貼到背景方塊中

RandomBox#產(chǎn)生新的方塊

fi

}

#左移一列

functionBoxLeft()

{

localxs

((x=boxCurX-1))

ifBoxMove$boxCurY$x

then

s=`DrawCurBox0`

((boxCurX=x))

s=$s`DrawCurBox1`

echo-ne$s

fi

}

#右移一列

functionBoxRight()

{

localxs

((x=boxCurX+1))

ifBoxMove$boxCurY$x

then

s=`DrawCurBox0`

((boxCurX=x))

s=$s`DrawCurBox1`

echo-ne$s

fi

}

#下落到底

functionBoxAllDown()

{

localkjixyiDowns

iDown=$iTrayHeight

#計(jì)算一共需要下落多少行

for((j=0;j<8;j+=2))

do

((i=j+1))

((y=${boxCur[$j]}+boxCurY))

((x=${boxCur[$i]}+boxCurX))

for((k=y+1;k

do

((i=k*iTrayWidth+x))

if((${iMap[$i]}!=-1));thenbreak;fi

done

((k-=y+1))

if(($iDown>$k));theniDown=$k;fi

done

s=`DrawCurBox0`#將舊的方塊抹去

((boxCurY+=iDown))

s=$s`DrawCurBox1`#顯示新的下落后的方塊

echo-ne$s

Box2Map#將當(dāng)前移動中的方塊貼到背景方塊中

RandomBox#產(chǎn)生新的方塊

}

#旋轉(zhuǎn)方塊

functionBoxRotate()

{

localiCountiTestRotateboxTestjis

iCount=${countBox[$iBoxCurType]}#當(dāng)前的方塊經(jīng)旋轉(zhuǎn)可以產(chǎn)生的樣式的數(shù)目

#計(jì)算旋轉(zhuǎn)后的新的樣式

((iTestRotate=iBoxCurRotate+1))

if((iTestRotate>=iCount))

then

((iTestRotate=0))

fi

#更新到新的樣式, 保存老的樣式(但不顯示)

for((j=0,i=(${offsetBox[$iBoxCurType]}+$iTestRotate)*8;j<8;j++,i++))

do

boxTest[$j]=${boxCur[$j]}

boxCur[$j]=${box[$i]}

done

ifBoxMove$boxCurY$boxCurX#測試旋轉(zhuǎn)后是否有空間放的下

then

#抹去舊的方塊

for((j=0;j<8;j++))

do

boxCur[$j]=${boxTest[$j]}

done

s=`DrawCurBox0`

#畫上新的方塊

for((j=0,i=(${offsetBox[$iBoxCurType]}+$iTestRotate)*8;j<8;j++,i++))

do

boxCur[$j]=${box[$i]}

done

s=$s`DrawCurBox1`

echo-ne$s

iBoxCurRotate=$iTestRotate

else

#不能旋轉(zhuǎn)聋涨,還是繼續(xù)使用老的樣式

for((j=0;j<8;j++))

do

boxCur[$j]=${boxTest[$j]}

done

fi

}

#DrawCurBox(bDraw), 繪制當(dāng)前移動中的方塊, bDraw為1, 畫上, bDraw為0, 抹去方塊。

functionDrawCurBox()

{

localijtbDrawsBoxs

bDraw=$1

s=""

if((bDraw==0))

then

sBox="\040\040"

else

sBox="[]"

s=$s"\033[1m\033[7m\033[3${cBoxCur}m\033[4${cBoxCur}m"

fi

for((j=0;j<8;j+=2))

do

((i=iTrayTop+1+${boxCur[$j]}+boxCurY))

((t=iTrayLeft+1+2*(boxCurX+${boxCur[$j+1]})))

#\033[y;xH, 光標(biāo)到(x, y)處

s=$s"\033[${i};${t}H${sBox}"

done

s=$s"\033[0m"

echo-n$s

}

#更新新的方塊

functionRandomBox()

{

localijt

#更新當(dāng)前移動的方塊

iBoxCurType=${iBoxNewType}

iBoxCurRotate=${iBoxNewRotate}

cBoxCur=${cBoxNew}

for((j=0;j<${#boxNew[@]};j++))

do

boxCur[$j]=${boxNew[$j]}

done

#顯示當(dāng)前移動的方塊

if((${#boxCur[@]}==8))

then

#計(jì)算當(dāng)前方塊該從頂端哪一行"冒"出來

for((j=0,t=4;j<8;j+=2))

do

if((${boxCur[$j]}

done

((boxCurY=-t))

for((j=1,i=-4,t=20;j<8;j+=2))

do

if((${boxCur[$j]}>i));theni=${boxCur[$j]};fi

if((${boxCur[$j]}

done

((boxCurX=(iTrayWidth-1-i-t)/2))

#顯示當(dāng)前移動的方塊

echo-ne`DrawCurBox1`

#如果方塊一出來就沒處放负乡,Game over!

if!BoxMove$boxCurY$boxCurX

then

kill-$sigExit${PPID}

ShowExit

fi

fi

#清除右邊預(yù)顯示的方塊

for((j=0;j<4;j++))

do

((i=iTop+1+j))

((t=iLeft+2*iTrayWidth+7))

echo-ne"\033[${i};${t}H????????"

done

#隨機(jī)產(chǎn)生新的方塊

((iBoxNewType=RANDOM%${#offsetBox[@]}))

((iBoxNewRotate=RANDOM%${countBox[$iBoxNewType]}))

for((j=0,i=(${offsetBox[$iBoxNewType]}+$iBoxNewRotate)*8;j<8;j++,i++))

do

boxNew[$j]=${box[$i]};

done

((cBoxNew=${colorTable[RANDOM%${#colorTable[@]}]}))

#顯示右邊預(yù)顯示的方塊

echo-ne"\033[1m\033[7m\033[3${cBoxNew}m\033[4${cBoxNew}m"

for((j=0;j<8;j+=2))

do

((i=iTop+1+${boxNew[$j]}))

((t=iLeft+2*iTrayWidth+7+2*${boxNew[$j+1]}))

echo-ne"\033[${i};${t}H[]"

done

echo-ne"\033[0m"

}

#初始繪制

functionInitDraw()

{

clear

RandomBox#隨機(jī)產(chǎn)生方塊牍白,這時右邊預(yù)顯示窗口中有方快了

RandomBox#再隨機(jī)產(chǎn)生方塊,右邊預(yù)顯示窗口中的方塊被更新抖棘,原先的方塊將開始下落

localit1t2t3

#顯示邊框

echo-ne"\033[1m"

echo-ne"\033[3${cBorder}m\033[4${cBorder}m"

((t2=iLeft+1))

((t3=iLeft+iTrayWidth*2+3))

for((i=0;i

do

((t1=i+iTop+2))

echo-ne"\033[${t1};${t2}H||"

echo-ne"\033[${t1};${t3}H||"

done

((t2=iTop+iTrayHeight+2))

for((i=0;i

do

((t1=i*2+iLeft+1))

echo-ne"\033[${iTrayTop};${t1}H=="

echo-ne"\033[${t2};${t1}H=="

done

echo-ne"\033[0m"

#顯示"Score"和"Level"字樣

echo-ne"\033[1m"

((t1=iLeft+iTrayWidth*2+7))

((t2=iTop+10))

echo-ne"\033[3${cScore}m\033[${t2};${t1}HScore"

((t2=iTop+11))

echo-ne"\033[3${cScoreValue}m\033[${t2};${t1}H${iScore}"

((t2=iTop+13))

echo-ne"\033[3${cScore}m\033[${t2};${t1}HLevel"

((t2=iTop+14))

echo-ne"\033[3${cScoreValue}m\033[${t2};${t1}H${iLevel}"

echo-ne"\033[0m"

}

#退出時顯示GameOVer!

functionShowExit()

{

localy

((y=iTrayHeight+iTrayTop+3))

echo-e"\033[${y};0HGameOver!\033[0m"

exit

}

#顯示用法.

functionUsage

{

cat<

Usage:$APP_NAME

Starttetrisgame.

-h,--helpdisplaythishelpandexit

--versionoutputversioninformationandexit

EOF

}

#游戲主程序在這兒開始.

if[["$1"=="-h"||"$1"=="--help"]];then

Usage

elif[["$1"=="--version"]];then

echo"$APP_NAME $APP_VERSION"

elif[["$1"=="--show"]];then

#當(dāng)發(fā)現(xiàn)具有參數(shù)--show時茂腥,運(yùn)行顯示函數(shù)

RunAsDisplayer

else

bash$0--show&#以參數(shù)--show將本程序再運(yùn)行一遍

RunAsKeyReceiver$!#以上一行產(chǎn)生的進(jìn)程的進(jìn)程號作為參數(shù)

fi

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钉答,隨后出現(xiàn)的幾起案子杈抢,更是在濱河造成了極大的恐慌数尿,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惶楼,死亡現(xiàn)場離奇詭異右蹦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)歼捐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門何陆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豹储,你說我怎么就攤上這事贷盲。” “怎么了剥扣?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵巩剖,是天一觀的道長。 經(jīng)常有香客問我钠怯,道長佳魔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任晦炊,我火速辦了婚禮鞠鲜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘断国。我一直安慰自己贤姆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布稳衬。 她就那樣靜靜地躺著霞捡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宋彼。 梳的紋絲不亂的頭發(fā)上弄砍,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天仙畦,我揣著相機(jī)與錄音,去河邊找鬼音婶。 笑死慨畸,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衣式。 我是一名探鬼主播寸士,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碴卧!你這毒婦竟也來了弱卡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤住册,失蹤者是張志新(化名)和其女友劉穎婶博,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荧飞,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凡人,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叹阔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挠轴。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖耳幢,靈堂內(nèi)的尸體忽然破棺而出岸晦,到底是詐尸還是另有隱情,我是刑警寧澤睛藻,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布启上,位于F島的核電站,受9級特大地震影響修档,放射性物質(zhì)發(fā)生泄漏碧绞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一吱窝、第九天 我趴在偏房一處隱蔽的房頂上張望讥邻。 院中可真熱鬧,春花似錦院峡、人聲如沸兴使。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽发魄。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間励幼,已是汗流浹背汰寓。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苹粟,地道東北人有滑。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像嵌削,于是被迫代替她去往敵國和親毛好。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

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

  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,031評論 3 53
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,088評論 0 0
  • 個人學(xué)習(xí)批處理的初衷來源于實(shí)際工作苛秕;在某個迭代版本有個BS(安卓手游模擬器)大需求肌访,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,706評論 0 11
  • 0.linux啟動的步驟 設(shè)備加電----》BIOS自檢-----》grub引導(dǎo)啟動-----》加載內(nèi)核----》...
    萌面大叔2閱讀 774評論 0 1
  • 【壹】 曲徑通幽處 , 禪房花木深艇劫。 小和尚是被禪院里的老和尚在街角的竹筐中尋到的吼驶,他清脆的哭聲讓原本猶豫的老和尚...
    Z47Alinanana閱讀 592評論 0 0