fggg dfgfg sdfsdf dfgfg dfg
我也不想當宅貓啊! 我只是膽子小了點......
看什麼看? 沒看啊!? 一天到晚打擾我睡覺! 很煩ㄋㄟ~
咬你~ 咬你~ 可惡! 這傢伙皮好硬,真難啃。
不要踩我的頭啦~ 馬麻回來我要跟她告狀!
馬麻~ 我好想奶茶哥哥,要是他在,我們四隻貓窩在一塊睡,一定更溫暖。
今天我同事和我說,兩隻小貓再這樣宅下去不行耶!
fggg dfgfg sdfsdf dfgfg dfg
我也不想當宅貓啊! 我只是膽子小了點......
看什麼看? 沒看啊!? 一天到晚打擾我睡覺! 很煩ㄋㄟ~
咬你~ 咬你~ 可惡! 這傢伙皮好硬,真難啃。
不要踩我的頭啦~ 馬麻回來我要跟她告狀!
馬麻~ 我好想奶茶哥哥,要是他在,我們四隻貓窩在一塊睡,一定更溫暖。
今天我同事和我說,兩隻小貓再這樣宅下去不行耶!
dfgfg dfg fdggg sddsf fdgdf
AIR JORDAN 讓我瞧 -- AIR JORDAN 0
AIR JORDAN 0
哪泥? 這是Converse的球鞋吧? 為什麼要稱它AJ0 ?
三十年前,人們的品牌意識還很薄弱,那個時候 " 名牌 " 難以像今日這樣璀璨,能夠流傳至今的則更是寥寥可數。籃球場上也是如此,那個時候沒有多少人會去選擇品牌來效倣球星,人們更不會注意他們腳上究竟會是什麼鞋子。但直到今天我們才發現,那一年,有一雙球鞋曾在NBA賽場上馳騁,三十年後的今天它依舊沒有消失,NBA中我們仍能窺見它的身影,雖已物是人非,但這一切所能夠證明的卻是它的偉大。Converse Pro Leather
! 一個古老的傳奇,一個當今的奇跡!Converse Pro Leather能夠有如今的成就,Julius Erving 自然功不可沒。因為他,人們不僅記住了蓬鬆的爆炸頭,也依稀記住了那雙潔白的球鞋。這位臂長手大的籃球天才是NBA歷史上當之無愧的第一位 " 飛人"
,他將滯空與飛翔帶上了球場,並將藝術籃球演繹得淋漓盡致。他是首位 " 在籃框上打球 " 的巨星,就連喬丹的身上也不難尋找到Erving的影子。 早在大學時,Erving便以單手隨意控球的能力而聞名遐邇,這也使他獲得了 " Dr. J ( J博士 ) "
的稱號,一是為了形容他在球場上謙謙君子的風度,其次則是為了形容他單手抓球,一隻胳膊漫天揮舞的雄姿,他掄圓胳膊的單手扣籃也首次為人們灌輸了 " 大風車 " 的概念。
雖然當時品牌商們並不重視所謂的明星效應,但如此出色的球員又怎能被錯過? 當年作為領域老大Converse便義無返顧地簽下了Erving,並將最新的籃球鞋Converse Pro Leather交予他來代言。時至今日,這雙誕生於1976年的鞋款在籃球鞋歷史上仍佔據著舉足輕重的地位,Dr. J 的球衣號碼 " 6 " 繡在了鞋身上,隨著Erving愈加出色的表現,球鞋的曝光量也得到了大大提升。隨後的許多球星因為歐文的影響都成為了CPL 的忠實粉絲,這其中自然不乏魔術強森和大鳥這樣的時代標誌,就連喬丹也免不了受到CPL 的影響。
喬丹也曾穿過CPL? 這聽起來似乎有些不可思議,不過如果看過喬丹在大學時打球的照片,就一定會注意到他腳上那雙純白色的CPL-- 1982年的NCAA總決賽,喬丹在終場前的最後一投,幫助北卡大學以1分險勝喬治城大學;1984年的洛杉磯奧運會,即將登上NBA賽場的喬丹率領美國隊以不敗的戰績奪得奧運會冠軍。
當時的喬丹,穿著的就是CPL,這無疑與Dr. J 有關 ( 日後喬丹也公開承認過Erving是他兒時的偶像 ),所以從某種意義上說,CPL 才是飛人喬丹鑄就輝煌的起點,因此叫它喬丹零代也不為過。( 即便戰功顯赫,NCAA仍然不允許喬丹擁有自己的品牌,那是因為NCAA明文規定不允許球員簽訂商業合同。)
性能方面,CPL 當然已經無法和當今高科技的球鞋同日而語。可是這雙鞋在當年的性能地位則堪稱頂級,交叉的磚塊紋路佈滿鞋底,使其具備了良好的抓地力。雖然30週年後CPL 的紀念款仍沒有採用任何的緩震科技,也僅僅是依仗橡膠中底給予球員一定的保護,但誰都清楚,這雙鞋的歷史氣息比性能元素重要的多,今天誰還會拿三十年前的戰靴去應戰當今籃壇呢? 它所具備的復古感似乎更適於休閒。
現今,Converse Pro Leather已經走過了30年的歷程,它也再一次回到了我們的身邊,在過去的歲月裏,它見證著無數球星的成長直至輝煌。今日,穿著Converse的球星可以說是非常少了,而且Converse也被Nike併購,但對於Converse Pro Leather來說,這些似乎都不那麼重要,重要的是,它所留下的是曾經的經典與傳奇......
1982年3月29日,一個歷史的鏡頭,從那一刻開始,一位蓋世英雄誕生於籃球界!
當天是NCAA總冠軍賽,北卡大學對抗由超級中鋒 大猩猩尤英 領軍的喬治城大學,比賽時間還剩下32秒,比數62比61,北卡大學落後一分,進攻權在北卡大學手中。
這時請求暫停的北卡教練 Dean Smith 認為隊裡的大主將和二主將的 James Worthy 和 Sam Perkins 會被喬治城大學重點看管,因此戰術設計讓第三得分手的大一新生喬丹來執行關鍵最後一擊。
緊張的比賽再度進入倒數時刻,球傳啊傳,喬丹接獲傳球,面前出現一個可遇不可求的空檔,起跳,射了...!?
唰! 進啦!! 63比62,北卡大學倒領先一分!!!
最後,由於喬治城大學已用完暫停的機會,只能馬上再進攻,慌亂之間,喬治城大學將球誤傳給敵隊的Worthy,也就醬子輸掉了總冠軍賽。
在場上得16分、搶9個籃板、最後一記投籃決定了比賽的勝負,從這一夜起,喬丹瞬間走紅,成了全國知名的巨星,一生的榮耀好像就從這晚開始。
之後的兩年,北卡大學並沒衛冕總冠軍,雖然喬丹兩次入選為NCAA第一隊,還連拿Naismith和Wooden等大學最夯獎項。
但喬丹覺得,他的大學籃球生涯已到了盡頭,所以乾脆大四不念了,宣布參加1984年的NBA選秀會。 ( 這年可是黃金梯啊~ )
1984年洛杉磯奧運,喬丹入選了國奧隊替美國出賽,隊員除了喬丹還有尤英及一幫未來即將進入NBA的好手。
在奧運場上雖然他們遇到迅速崛起的西德隊和西班牙隊,但仍保持不敗之身,最後以八戰全勝的戰績輕鬆漂亮地奪下金牌。
八場比賽中,美國隊平均每場得分超過對手32分,喬丹共得137分,平均17.1分。
賽後,媒體採訪亞軍西班牙隊,西班牙隊員說對喬丹的記憶就是: " 跳,跳,跳,不停地跳~ 非常快,非常快~ 跳啊! 跳啊! ...... "http://www.sports-reference.com/olympics/athletes/jo/michael-jordan-1.html
( 喬丹參加奧運時的數據 )
fggg sddsf fdggg fdgdf sdfsdf
臭小貓的小表妹
這隻黑貓是我這幾個月新認識的黑貓
我想她應該是臭小貓的小表妹來著
臉蛋長像嘛... 其實和臭小貓不是說非常像
但她的臭脾氣和臭小貓是一個樣,看到我給阿斑吃東西,她就會生氣把阿斑趕走(莫名其妙)
她每天看到我呢,就會跑過來喵喵叫,一直叫到我拿出食物來給她吃(還挺吵的~)
剛認識她的幾個月前
她還三比八的,最近真的胖好多(難道又懷孕了嗎?)
這是她的小孩(我還未給她取名字)
原本她一共生了三隻小黑貓,但現在只剩下一隻 (可能被隔壁公司的人抱回家養了)
我猜這隻小黑貓的年齡大約比奶茶他們大幾個星期
可是他的膽子很小,看到人靠近一步就閃
不過這也表示,她媽媽教得好,這樣反而不容易遭遇到危險
有一天,浪表妹吃完東西的時候
突然發出 " 該~ 該~ 該~ " 的聲音
我起先以為她是噎到了,還是怎樣
結果原來她是呼叫她家的小朋友們出來吃飯超溫馨又有趣的
dfg fdggg fdggg sddsf dfg
丙級學科
http://test.gotop.com.tw/
這個是丙級的學科試題~~
感謝夏肥~~大大的提供
有要考試的人就加油努力用力的考吧
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
sddsf fggg sdfsdf fdgdf dfgfg
幫忙?
最近的報告超多的~~
不能幫忙一下嗎?
又不是我自已的個人成績~
幫忙一下會死喔
問一下要弄什麻會死喔
幫不幫忙~~隨你~~
別說我沒有說就好了
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
sdfsdf fdgdf fdggg fggg sddsf
甜甜女王太瘦嗎
親愛的親朋好友
別再說甜甜女王太瘦 更別問我是怎麼瘦下來的
如果可以 甜甜女王要用孟婆湯忘掉過去的一切
然後換個身心都健健康康的自己
過去的甜甜女王是開心的 自從十年前認識他之後
甜甜女王變得沒了自己 忘了自己 更失去家人 朋友 所有關心甜甜女王的人
不怨你 是甜甜女王一直告訴自己的事
但是 慢慢浮現的一切徵兆 卻又讓甜甜女王不恨你不行
結果
發現
恨你只會讓甜甜女王變得醜陋不堪 所以 我開始愛自己
讓自己過的更好 過的開心
雖然一直還是收到你的訊息 說真的 甜甜女王真的不想知道
因為
你是甜甜女王最想忘掉的回憶
那天 在你生日聚餐所說要請他們好好照顧我的話也是狗屎吧
甜甜女王當時還有些小感動 後來 發現
你只是故意做給那個女人看的
讓她認為你離開我只是不得已 而又順水推舟的把過錯推到我身上
分手 好像都你提出的
怎麼好像錯都在我身上呢
不明白也不想明白
就想你趕快脫離我的生活吧 永永遠遠的徹底消失
不要再出現 對你 甜甜女王會採取 不聽不問不答
因為 爛人 是不會出現在甜甜女王的字典中的
感謝你的 也只有 讓我變瘦變美的這件事 同時 也變得有自信
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
fdggg fggg sddsf dfgfg dfg
甜甜女王開始碎碎唸
話說
昨天甜甜女王又出發走走看看了
天吶
怎麼太陽那麼大 幸好甜甜女王防曬有做好 太陽眼鏡也有戴好的說
跟朋友喝個咖啡因不重的咖啡((甜甜女王有特別交待要重些))
可是一點也沒感覺 因為太早起床還在狂昏迷的說
他說 等回家又要繼續看球賽 出去打球
天吶
怎麼球賽有那麼好看好玩嗎
真搞不懂 男人呀 為什麼會花費那麼多時間在看球賽上面呢
雖然呀
甜甜女王也愛看球賽啦 但只限於棒球啦
因為規則簡單又好精彩 可是做球的那些人 讓甜甜女王生氣
運動不是拿來休閒的嗎 為什麼會被拿來賭博呢不懂 真的很不懂耶
愛情是遙遠又難懂的問題 如果可以 只要需要他的時候來個深深的擁抱
那該有多好 沒負擔的愛 對甜甜女王來說 是最最簡單的愛了
愛應該是甜蜜的 而不是帶給對方痛苦的 不是嗎
那為什麼要綁住一個可能會離你遠去的人呢
在痛苦之前 快點抽手 不是很好嗎
何必 追他追得緊緊的呢????人是很自由的 要不然 當寵物不就可以了嗎
可是 你怎麼都聽不懂呢 還跟甜甜女王頂嘴哩
我說會給對方無限自由 甜甜女王不會管他去哪玩 跟誰出去 是真的呀 還說要甜甜女王管好自己 別輕易跟誰出去 跟朋友出去走走看看是很正常的吧
又說我怎麼會這樣 這是事實呀 受過傷後的甜甜女王更加明白這道理
要好好愛自己 做自己高興快樂的事 不為別人改變自己呀男人吶 為什麼不先管好自己 再管別人呢
重點是.........你只是甜甜女王的朋友 不是男朋友
就 噓 乖乖聽話 閉上你的嘴巴吧
甜甜女王有無限自主權 不必再由其他人管訓了 懂嗎 教官
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
dfgfg sdfsdf fdgdf dfg dfgfg
奇怪ㄌ 甜甜女王要去聯誼嗎
最不想給他知道我跟他分開的人 今天終於看到他
以前總是可以很大方的跟他打招呼的
這次怎麼四目交會 甜甜女王卻趕緊將眼光移走呢
或許他已經由他母親口中得知我跟那個爛人的事了吧 所以 他看甜甜女王的眼神有些不捨
別這樣 我過得很好
真的很好
別再為我擔心了
因為你已經不用再我的事感到擔心了
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
fdggg fggg sdfsdf fdgdf dfg
Happy Birthday
奕璇昨天過週歲生日
奕璇小阿姨跟姨丈也到我爸媽家幫奕璇一起過生日
還買了一台Hello Kitty的推車給奕璇
她看到了禮物還挺高興的馬上就玩了起來~
吃飽飯休息一會後
我們就幫她唱生日快樂歌然後吃蛋糕奕璇心情超好的~從頭笑到尾
爸媽抱著她吹蠟燭,不過奕璇還不會吹,最後由奕璇爸吹熄蠟燭很高興她滿一歲了~
只能說謝謝大家這麼疼愛奕璇,她真的很幸福
也要跟遠在澎湖的奕璇爺爺奶奶及姑姑們說聲謝謝啦 ~沒有忘記奕璇生日
奕璇~媽咪希望妳能平平安安快樂的長大 每年都幫妳過一個溫馨的生日
sdfsdf fggg dfg dfgfg sddsf
春裝上市囉
我覺得小女孩穿春裝真的很好看
買回來後馬上讓奕璇試穿一下真的好cute~
拍了幾張照片給大家瞧瞧
奕璇手上拿的是內褲啦~還沒給她穿上啦 ~
瞧我擺出性感的姿勢 ~
呼~媽咪終於拍完了~
fggg dfgfg fdggg fdgdf sddsf
爲週歲添購新衣新鞋去
今年要帶奕璇回澎湖過新年
怕澎湖風大幫她買了一件紅色的ELLE大衣
打完折還要2仟多塊~忍痛買了下來
沒想到澎湖天氣竟是出乎意料的熱結果只有搭船的時候才穿到~
再過兩天就是奕璇滿週歲了
今天拿著麗嬰房的生日優惠劵幫她買了幾件新裝每件春裝都好可愛喔 ~生女兒真的很花錢
忍不住買了好幾套~因為66折真的好便宜
週歲的時候要穿新衣跟新鞋~所以也幫奕璇買了 一雙新鞋
結帳的時候嚇了一跳~不知不覺也買了6仟多~
不過真的很捨得買東西給小孩~我想很多媽咪都跟我有同樣的感覺吧
dfg sddsf fdgdf dfg sdfsdf
與小艾相約玩口金包-----第一次相約作品集!
謝謝羽軒媽的建議唷!
因為小艾第一次辦相約!所以有很多細節不懂!
謝謝各位的體諒!小艾更喜歡大家給與小艾意見讓小艾有機會改進唷!
相約的夥伴們完成作品後可以來這一篇交作業唷!
之前已經交作業的夥伴們小艾也會整理到這一篇唷!
和小艾相約玩口金包PATR1-----參加的夥伴!
001 Linda 002 小河馬 003悠悠晨曦 004 咖啡貓 005 小雅
006 Little Jane 007 Betty 008 Kite 009 晶 010 阿華田
011甜心寶貝 012 梵苓 013 Crystal 014酷媽 015 Dona
016 Hui 017 黑美麻 拔 018 哪達相膏手作 019 愛子 020 Jo Jo滴媽咪
021 French Dolphin 022 小蘭 023 莉媽咪 024 air 025 Yo Yo MAY
026 小瑪莉 0270 小龍女 028 貝貝的媽 029 Rita 030 BellaStar
031 大魚 032 Q妹 033 祈晴 034阿芯 035 米粒
036 alice 037 nina 038 yaya 039 安姑娘 040 儀
041 chi 042 nancy 043 amos 045 irin
046 卡洛 047歸於塵 048 annie 049英英~~~美黛子 050 honey
051 celina 052 fi 053 小毛 054 喵媽 055慧
056 酢漿草 057想當美美的辣媽 058大白熊 059 慢郎中 060 小柔
061甯甯寶貝 062 betty 063 森 064 豬頭妹 065嫩
066chotolate 067 小格格 068 carol 臻 069 jane 070 萱
071 maclulala 072MAMA 073 無尾熊 074 yuki 075 Eva
076 奶茶 077 光光 078 vivi 079 Joy羽軒媽 080 傻瓜
081小侯子 082 幸福拼布小小窩 083 球球 084 winnie 085ㄚ琪
086 suyin 087 瑪姬 088娃娃 089 妮子 090 clare
091 ruth
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
fdggg sdfsdf dfgfg fdgdf fggg
艾的初體驗---戀家戀物玩拼貼-----蝶谷巴特安全帽!
安安各位!加油ㄋㄟ!第一次和小艾相約玩口金包的夥伴們!
很開心知道有一些夥伴已經完成了第一個相約的作品了ㄋㄟ!
還沒完成的夥伴請您別緊張唷!
各位已完成的夥伴們~小艾希望如果有同學和您請教有關於口金包的問題時
小艾希望各位秉持著互相學習 互相欣賞 一起成長的心來玩口金包!
因為自私的行為與想法在小艾的部落格中是不允許存在的唷!
小艾辦相約的目的就是希望各位和小艾及大家互相分享玩口金包的心情
大家一起成長一起進步一起玩出美美的口金包!
如果您只是要小艾的紙型而不願意和大家分享您玩口金包的心情!
久而久之大家會不歡迎的唷!部落格玩手作的世界說大不大 您說他小嗎!也是很廣的ㄋㄟ!
但是地球是圓的 繞圈圈繞久了大家還是會碰再一起!
所以請大家記得小艾的叮嚀~~~要互相分享唷!
前一陣子小艾的狀況不是很好!
但是因為大家的關心小艾已經沒事了唷!
請大家不要再為小艾擔心了唷!
雖然經過這些事但是小艾想玩口金包的心是不會變唷!
But小艾會改變想法~想玩一些不一樣的口金包!
所以關於第二次的相約~~~~~ 請大家拭目以待囉!
蝶谷巴特!
小艾很早就想要嘗試了!但是幾千元的學費要小艾一次付出對小艾而言還是粉吃力的!
真是幸運!因為本來在小艾家附近的
戀家 戀物門市遷居至
高雄市苓雅區林泉街8巷6號
因為喬遷之喜才有的體驗課程唷!
蝶谷巴特安全帽
下一次小陶老師還要教我們做蝶谷巴特陶盆唷!
小艾報名了課程之後大女兒就一直說:好期待星期五唷!
因為要陪媽媽去上課!老師把那裏布置得好美唷!連小朋友進去都不想出來了ㄋㄟ!
所以小艾就去和小陶老師玩了小艾生平第一次的跌古巴特拼貼!
PS:還帶著三個小搗蛋!(吵了老師一個下午!)但是老師還是耐心的教小艾!
學費只要600元(還包含使用到的用具及消耗用品唷!)
真是太划算了ㄋㄟ!(安全帽是小艾在老師那兒買的也才150元唷!)
說了那麼多!還是請大家看一下小艾的作品吧!
這一張是正面!愛兔兔的小艾第一次接觸拼貼還是希望兔兔與小艾同在唷!
側面是玫瑰唷!
是老師教小艾搭配的!要不然怎麼可能配得那麼美麗ㄋㄟ!
真的粉粉有層次感唷!
這是帽帽的後面唷!醜醜的扣環經過老師的巧手!化身為帽帽美麗的一部分!
帽帽的兩邊!
真的好開心唷!一個下午的成果成品出乎小艾意料中真的美!
想一想!哪一天小艾也拿口金包做胚體!來試一試蝶谷巴特的口金包吧!
又是口金包!真是三句不離口金包啊!哈!哈!哈!
各位同好們!記得~~~~~~~要互相分享唷!
fdggg sddsf dfgfg fdgdf sdfsdf
嗚!嗚!嗚!小艾的YAHOO拍賣(=艾不釋手手作坊=)圓底口金材料包遭人檢舉!
嗚!嗚!嗚!小艾今天整理部落格的資料整理了一天!
希望能將各位的紙型如期寄出!
好不容易下午5點把各位的紙型寄出了!
回到家卻看到信箱中YAHOO通知小艾拍賣商品被檢舉的訊息!
怎麼辦啦!小艾的YAHOO拍賣遭人檢舉!
小艾該怎麼辦ㄋㄟ!
而且還是這一次相約作品10公分半圓型圓底口金材料包
被檢舉的網頁紀錄!
為什麼?小艾辛苦經營的拍賣 好不容易有一些好的評價卻被人檢舉!小艾真的好怕遭到停權的處分唷!
小艾又沒有錢可以請人架設銷售的網站!
小艾1月14日才刊登上去的ㄋㄟ!而且刊登的方式與方式和其他材料包幾乎一模一樣!
這一次相約進口金時也被進口金的廠商刁難!
廠商告訴小艾有另外一個客戶(林小姐)說請廠商不要再出貨給小艾了!
當下小艾聽到真的覺得好難過唷!小艾只想要提供品質優 價格合理的口金給喜歡口金包的夥伴!
卻受到前輩的打擊!怎麼辦!
小艾剛才抱著孩子一直哭!孩子們也不知怎麼回事!也跟著小艾一起哭!
大概是小艾的舉動有點兒嚇到他們了吧!
大女兒這個時候冒出一句話:媽媽!我會存錢和您買材料包!
聽到時小艾真的不知如何回答!
其實這已經不是第一次小艾受到前輩的打擊了!
小艾剛開始和這一家廠商進口金時就已經被前輩警告過一次了!
只因為小艾進了一款前輩覺得只有他能賣的口金款式!
而且重點是-----小艾賣的比她便宜!
那時候小艾的先生剛到宜蘭工作 小艾一個人陪著三個孩子過著宛如單親媽媽一般的生活!
而且部落格也剛成立!還不認識大家!
但是小艾不想放棄口金包!
因為我真的很愛她ㄋㄟ!
小艾喜歡手作因為他單純 小艾喜歡口金包 因為他比拼布容易學習不需要太多而貴的用具!
小艾喜歡在部落格分享口金包給各位 因為小艾希望人人喜愛且學習口金包!
但是如果口金包的世界不再單純 不再簡單 不能與人分享!
小艾不會學習當一個弱者!小艾會努力守護她!就像小艾守護著三個孩子一樣!
因為我想~~~當一個媽媽遇到危險時不會選擇逃跑而是保護自己的孩子才對!
大概是小艾相約玩口金包這個活動惹到前輩了吧!
但是小艾不是弱者~小艾是一個媽媽唷!
不好意思!和各位說這些!小艾只是希望各位更了解小艾的心境和處境!
小艾不想把委屈放在心裡也不希望有一天壓力過大而身體不適~
但是請各位不要為小艾擔心唷!
愈是如此!小艾愈是要努力做出更多不一樣的口金包!
請各位也要加油唷!
您們是小艾的精神支柱唷!
PS:小艾說:林大姐!您和我先生一樣姓林 而且您說您也是高雄人!
如果您也希望參加相約或是想看一看小艾的紙型!
請您告訴小艾您的地址!小艾可以寄給您唷!
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
fggg dfgfg sddsf dfg fdggg
Windows XP環境變數
漫談Windows XP環境變數早從DOS就有環境變數(UNIX-like系統也都有)。環境變數是儲存與系統相關的資訊,它的格式很簡單,就是將字串值指定給變數名稱。系統在開機之後,會自行設定若干環境變數,以作為系統運作之用,而這些環境變數的值,原本是存放在登錄資料庫,開機之後才自登錄資料庫取出,並指定給環境變數。舉例來說,雖然安裝程式預設會將Windows系統安裝到C磁碟機的Windows資料夾、會將軟體安裝到C磁碟機的Program Files資料夾,但這只是預設值,不見得每個Windows都如此,而這些資料夾的實際位置,也會記錄在特定的環境變數:
%WinDir%:記錄Windows系統資料夾
fggg sddsf dfg dfgfg fdgdf
世家(Sega Dreamcast)遊戲機來學習製作嵌入式
中文出處:www.cosoft.org.cn
這裏介紹一個可以不用花費很多錢去購買專門的硬體但是又可以學習嵌入式Linux系統的方法。這就是利用世家(Sega Dreamcast)遊戲機來學習製作嵌入式Linux。(Embedded Linux) 這篇文章將會詳細的講解如何在Sega Dreamcast上面安裝Linux.包括Linux Kernel, Boot loader和Utility kernel patches. 同時也提供以上工具的下截連接地址。
簡介:
在學習Embedded Linux的時候,最重要的就是價錢和系統的相容性了。人人都知道,Linux在桌面電腦和伺服器上面都可以非常好的運作。但是,這些都不能稱作嵌入式系統。你知道嗎,其實利用你的Sega Dreamcast遊戲機,你就可以自己學習製作一次嵌入式的Linux了。
要學習嵌入式Linux,首先,當然你要有足夠的文件。同時,你要必須要有一個不是基於X86的硬體平臺,包括一顆不是X86的微處理器。除了電腦以外,比較理想的就是:PDA, Internet appliances 和遊戲機啦。
沒錯,就是遊戲機。那種爲了讓大家購買遊戲而幾乎不賺錢,或者虧錢在賣的東西。現在價位最合適的就應該算是Sega Dreamcast了。因爲Sega 已經出了新的産品了,目前Sega Dreamcast已經被廠家已經停止生産。所以Sega Dreamcast的價位現在非常的好。下面我們就看看如何在Sega Dreamcast上面跑Linux.
Linux 是如何運作在 Sega Dreamcast 上的: 在討論Linux 是如何運作在 Sega Dreamcast上之前,我們首先要知道是如何把Linux裝到Sega Dreamcast裏面去的。其實秘密就在於放入Sega Dreamcast裏面的那個CD的格式啦。也就是說,並不需要什么特殊的工具。
Sega Dreamcast:
Sega Dreamcast支援 Hitachi SH7750 CPU,運行速度是200MHz. 有 16MB的RAM.你可以選擇使用電視機(PAL制式或者NTSC制式)或者利用乙太網配置器(Ethernet Adapter)
直接連接到VGA的電腦螢幕上面。Saga關這種卡叫做“Broadband Adapter”或者“BBA”,也能買到專門給Saga Dreamcast使用的鍵盤和滑鼠。
在Dreamcast上安裝Linux:
在Saga Dreamcast遊戲機啓動的時候,Saga Dreamcast內建的一個啓動程式會嘗試讀取 CD-R(要確定,不能用CD-RW),嘗試找到最少兩個CD-R的recording sessions.第一個session是音軌,boot loader並不會去管它。但第二個session必須是CD/XA資料軌。(mode 2, form 1)這個資料軌必須是標準的ISO9660的文件系統,同時這個文件系統的前16個磁區必須包含一個含有啓動資訊的文件IP.BIN。IP.BIN包含啓動後,啓動程式需要開啓的檔案名。IP.BIN同時包含元資料用以識別硬體,以確定CD上的哪個程式將被執行。(例如自動選擇遊戲是在Sega Dreamcast上執行,還是在Saga其他類型的遊戲機上執行)地區標誌,會控制遊戲以那種格式顯示(PAL或者NTSC),同時也顯示遊戲所需要的控制器(遊戲手柄啦什么的)和CRC.
一但Saga Dreamcast內建的啓動程式讀到有效的IP.BIN文件。系統就會自動把命名的文件從ISO9600的文件系統讀到記憶體中,並交出全部的控制許可權。這裏,我們做的就是,當Saga Dreamcast系統開機以後,啓動程式會把Linux進去。還可以利用Saga Dreamcast的串列介面(serial port)或者乙太網介面(enthernet port)來下截一些東西。一個RTOS,好比eCos就不錯。
Saga Dreamcast的系統硬體同時提供一個類似於BIOS功能的東西用於系統可以從GD-ROM drive讀取資料,(GD-ROM drive是一種從CD-ROM改裝出來的東西,它跟CD-ROM最大的區別就是GD-ROM可以容納1GB的資料)訪問內建的flash memory等等。可惜的是目前這些東西還沒有支援。也許當你讀到這片資料的時候就已經有了這方面的支援了。
接下來做什么?
我們要知道了如何製作一個可在Saga Dreamcast上運行的系統image, 我們就必須對Linux有一定的瞭解:
Linux的Kernel本身是不能啓動的。她需要一個啓動程式,比如lilo來幫助她。Lilo會把開始系統的一些資訊,例如系統情況,系統平臺等等傳送給Kernel. Lilo同時也支援解壓縮,這樣可以把壓縮的Kernel image直接拿給用。在嵌入式系統中,我們也同樣需要一個類似於lilo的boot loader.
簡單的來說,Linux的啓動分爲以下幾個步驟:
Boot loader 最先得到系統的控制權。這個控制權是從BIOS或啓動硬體中得到的。Boot loader 把kernel的image丟到memory裏面去並且解開壓縮。Boot loader 進入已經解壓縮的memory image中。這個memory image裏面就是Linux的 Operation System Kernel啦。 Kernel 對自己進行初始化,然後mount root 目錄。載入device drive,初始化硬體,最後開始運行應用程式。 現在我們知道了這些,應該清楚CD上的image裏面的內容了吧。我們需要一個boot loader,和一個Linux 的 Kernel, 我們需要讓我們的boot loader在Saga Dreamcast啓動後,能得到控制權,且找到Linux的Kernel,同時轉換控制權。
Linux 和應用程式:
接下來,我們還有很多的事情要做。一旦kernel可 以成功的運行了,我們還需要應用程式。桌面系統跟嵌入系統有個很大的區別。桌面系統通常系統只負責跟應用程式之間的交換。但是嵌入系統就不同了,在嵌入式 系統中,通常系統和應用程式是同一個。也就是說,他們是綁在一起的。因爲他們綁的實在是太緊了,很難分辨出來,所以勉強的區分辨那個是作業系統那個是應用 程式就有點不符合實際了。
Linux是一個通用性的很好的桌面作業系統,也就是說,我們需要有應用程式才可以。在這篇文章的結尾。會介紹一個類似的應用程式:shell
Linux和文件系統:
如果你觀察一下Linux的startup code,你就會發現,最後一步就是kernel尋找一個可執行的叫做“init”的檔案,並且把它截入到記憶體裏。這裏並不只是說我們需要一個叫做“init”的文件。這裏同時指出,我們需要一個文件系統去取出這個檔案。
也許你會想,Saga Dreamcast並沒有硬碟,那么如何存放系統文件呢?其實,很多的電腦工作站也是沒有硬碟----最少,在系統還沒有初始化IDE或者SCSI控制卡之前。所以,其實Linux在開機的時候是會自動類比出一個硬碟來的。
當沒Linux開機的時候,Linux會自動用ramdisk的功能,把一部分記憶體類比成一個硬碟。工作站的boot loader在開機時從軟碟中獨取image,然後後截入ramdisk,再把ramdisk的地址傳送給kernel. Kernel從ramdisk讀取磁片控制卡的的資料,然後進行初始化,載入。這時候真正的物理硬碟才工作。一旦物理硬碟工作了,ramdisk就會被釋放。
Ramdisk提供所有Linux需要的磁片導向設備。所以說,一個系統只要有足夠的存放程式和device drive的記憶體。那么這個系統可以完全不需要硬碟。Saga Dreamcast就是在用ramdisk代替傳統硬碟的。
爲Saga打造Linux,你都需要些什么:
首先,你必須擁有一台電腦,這台電腦必須是Linux或者Unix-like的作業系統。你必須有root的許可權。
其次,你需要一台CD-R的讀寫器(Writer),讀寫器和燒錄程式必須要支援 multisession CD using CD/XA data track (mode 2, form 1)格式。其實大多數的CD-R writer和程式都支援個。要注意的是:Saga Dreamcast的GD-ROM驅動器不能讀取CD-RW,不過用CD-RW燒錄的CD-R是沒有問題的。也就是說,只能用CD-R的片子,不能用CD-RW.
最後,就是需要一些工具啦,這些工具基本上你在網上都能找得到的:
下面我也把link都給了出來
binutils-2.11.2.tar.gz -- The linker, assembler, and object management utilities.gcc-3.0.1.tar.gz -- The GNU Compiler Collection. Contains the C/C++ compiler.glibc-2.2.4.tar.gz -- The GNU C runtime library.busybox-0.60.1.tar.gz -- Small, embedded versions of common Unix utilities.kernel-sh-linux-dreamcast.tar.gz -- Linux kernel for the Dreamcast.sh-boot-20010831-1455.tar.gz -- Linux bootloader for the Dreamcast.binutils-2.11.2-sh-linux.diff -- Patches for binutils.gcc-3.0.1-sh-linux.diff -- Patches for gcc.glibc-2.2.4-sh-linux.diff -- Patches for glibc.busybox-0.60.1-sh-linux.diff -- Patches for Busybox.kernel-sh-linux-dreamcast.diff -- Patches for the Linux kernel.sh-boot-20010831-1455.diff -- Patches for sh-boot.
打造我們需要的工具:
想在Saga Dreamcast上運行Linux.第一步就是我們需要打造一些工具包括:cross assembler, linker, compiler, C runtime library。下面,我們就用這些工具打造出一個Saga Dreamcast用的作業系統,並且在系統開機以後,運行一個簡單的shell。最後,我們把所有的東西方到一個ramdisk image裏。並燒錄CD.
Build cress assembler, linker, and bootstrap compiler
我們首先需要打造一個cross assembler和linker,然後是bootstrap compiler.用一個迷你的compiler可以打造runtime libraries和system kernels。但是不能打造應用程式。
首先,確定/usr/local/bin/有在PATH裏設定噢
login as root user,然後按照下面的script:
# export TARGET=sh4-linux //這裏是設定環境變數
# export PREFIX=/usr/local //這樣好處就是不用以後老打那么多字
# export PATH=${PATH}:${PREFIX}/bin //結束
# tar xzf binutils-2.11.2.tar.gz
# patch -p0 < binutils-2.11.2-sh-linux.diff
# mkdir -p build-binutils && cd build-binutils
# ../binutils-2.11.2/configure --target=$TARGET \
--prefix=$PREFIX
# make all install
# cd ..
# tar xzf gcc-3.0.1.tar.gz
# patch -p0 < gcc-3.0.1-sh-linux.diff
# mkdir -p build-gcc && cd build-gcc
# ../gcc-3.0.1/configure \
--target=$TARGET --prefix=$PREFIX \
--without-headers --with-newlib \
--disable-shared --enable-languages=c
# make all-gcc install-gcc
# cd ..
最後的可執行檔案在/usr/local/bin下面,名字是 sh4-linux-as, sh4-linux-ld.
用同樣的方法就可以build bootstrap compiler了。Bootstrap compiler也是在/usr/local/bin下面
執行檔案的名字叫做sh4-linux-gcc.
Configure the Kernel source:
這裏主要是要configure kernel的header file. 非常的簡單,不過請注意,這裏不要對選項做任何的修改。在menuconfig的時候,直接選擇Exit.(按一下鍵盤的箭頭右鍵,然後按enter就好了)
#tar vxf kernel-sh-linux-dreamcast.tar.gz
#path –p0 < kernel-sh-linux-dreamcast.diff
#cd kernel
# make ARCH=sh CROSS_COMPILE=sh4-linux- menuconfig
#cd ..
Building a runtime library 現在我們有了bootstrap compiler和一個設置適當的kernel了。我們現在可以開始build runtime library和header files了。我們使用的run-time library是GNU的glibc.這個library裏面有大家都熟悉的printf()之類的東西。同時還包含動態連接(dynamic linker)和其他的一些東西。
首先解壓縮,然後patch,接下來把 Linux kernel的header files 拷貝過去。實際上,我們需要調用make兩次來build glibc. 第一次的時候,建立library,但是並沒有安裝,第二次才是安裝library. Touch的命令實際上是爲了騙過glibc讓它以爲所有的東西都已經有了(實際上有些東西是我們不需要的)最後echo指令做了一個link libc.so
如果你在built完 binutils, bootstrap, gcc以後重新啓動過你的電腦(或者重新login過)那么你必須重新設定PATH,TARGET,PREFIX這三個變數才可以build gligc.
Glibc在build的時候可能花的時間會比較多。當然,主要也是看你的系統而定。不過到是可以利用現在這個時間休息一下,吃點東西,泡杯茶。
# tar xzf glibc-2.2.4.tar.gz
# patch -p0 < glibc-2.2.4-sh-linux.diff
# mkdir -p build-glibc && cd build-glibc
# mkdir -p ${PREFIX}/${TARGET}/include
# cp -r ../kernel/include/linux \
${PREFIX}/${TARGET}/include
# cp -r ../kernel/include/asm-sh \
${PREFIX}/${TARGET}/include/asm
# CC=sh4-linux-gcc ../glibc-2.2.4/configure \
--host=$TARGET --prefix=$PREFIX \
--disable-debug --disable-profile \
--disable-sanity-checks \
--with-headers=${PREFIX}/${TARGET}/include
# make
# touch iconv/iconv_prog login/pt_chown
# make install_root=${PREFIX}/${TARGET} \
prefix="" install
# echo "GROUP ( libc.so.6 libc_nonshared.a )" \
> ${PREFIX}/${TARGET}/lib/libc.so
# cd ..
Rebuild the cross compiler:
在有了正確完善的header files和runtime library之後。我們現在可以build一個完整的c/c++ cross compiler.
# mkdir -p build-gcc2 && cd build-gcc2
# ../gcc-3.0.1/configure --target=$TARGET \
--prefix=$PREFIX --enable-languages=c,c++
# make all install
# cd ..
Building a Dreamcast Linux kernel
現在我們有了完整的跨平臺的toolchain了。現在到了該用到這些東西的時候了。前面我們已經把我們的linux的kernel爲Saga Dreamcast設置好了。現在只要compile和link kernel就好了。最後compile出來的文件叫做zImage,在kernel/arch/sh/boot/下面。這個文件是以個被壓縮了的kernel image.
以後,當你用這個kernel正常開機以後,你就可以隨意用menuconfig來調整kernel裏面的各種設置了。然後再recompile一下kernel就好了。
# cd kernel
# make ARCH=sh CROSS_COMPILE=sh4-linux- \
clean dep zImage
# cd ..
Building a Saga Dreamcast Bootloader
當你有了一個正確的compiled kernel image.那么下一步我們就該做一個bootloader用來在Saga Dreamcast 開機的時候,把kernel載入到Saga Dreamcast的記憶體裏面去。
但是,現在還不行。還記得嗎,Saga Dreamcast的硬體載入一個單一的可執行的image到它的RAM裏面。這樣,除非應用程式知道如何與Saga Dreamcast的GD-ROM去溝通,不然就沒有辦法從GD-ROM裏面讀去更多的新資料。我們使用的bootloader並不知道如何來跟Saga Dreamcast的GD-ROM來溝通。所以唯一的方法就是,我們在一開始,就把所有需要的東西全部load進去:bootloader, kernel image, ramdisk image.
一旦所有的東西全部load進去,這時候,bootloader就需要分析記憶體,分清楚kernel和ramdisk image.。這就需要bootloader知道kernel和ramdisk的精確的大小。唯一的方法就是,當做好kernel和ramdisk以後,去計算他們的大小,然後在打造 bootloader的時候,把這些準確的資料提供給bootloader。(source code)
所以,我們現在先要去打造一個應用程式(shell),然後再做一個大小合適的ramdisk給它。最後我們再回到Building Saga Dreamcast Bootloader這裏。
打造一個應用程式
對Linux來說,也許最重要的一個應用程式就是Linux的shell了吧。沒有了shell,甚至不可能去載入其他的程式,不能mount設備,不能……
如果你的Saga Dreamcast沒有鍵盤,那么你就沒有辦法享受Saga Dreamcast上的shell的那種感覺啦。因爲沒有鍵盤,你就沒有辦法輸入指令。
打造一個shell的同時,shell也可以運行你在ramdisk裏面的程式或者script.當你能成功的在Saga Dreamcast上面運行一個shell,那么也就意味著你可以隨意的在Saga Dreamcast上面運行任何一個你想要運行的程式。
下面講述如何爲Saga Dreamcast build一個BusyBox . 在基本的Shell的基礎上,Busybox還提供了幾個很有用的工具:mount, ls and modprobe.
第一步先建立一個目錄叫做 initrd,包含了最初ramdisk的東西。PREFIX是爲了把Busybox安裝到正確的位置。DOSTATIC是告訴sh4-linux-gcc Busybox不要用shared libraries.因爲我們沒有安裝動態的linker (dynamic linker).
# mkdir -p initrd
# export INITRD=`pwd`/initrd
# tar xzf busybox-0.60.1.tar.gz
# patch -p0 < busybox-0.60.1-sh-linux.diff
# cd busybox-0.60.1
# make CROSS=sh4-linux- DOSTATIC=true \
CFLAGS_EXTRA="-I ${PREFIX}/${TARGET}/include" \
PREFIX=${INITRD} clean all install
# cd ..
你可以對Busybox做很多的改變,具體請看Config.h和libbb/libbb.h這兩個文件。
現在我們要在ramdisk上面做device nodes:
因爲ramdisk在Saga Dreamcast中,是扮演的root directory的腳色。所以上面必須有所有的kernel在運行中可能需要的東西。除了shell或者其他的應用程式,我們必須提供device nodes.這樣程式才能跟我們的硬體溝通。
在Saga Dreamcast中,只有一個真正的實質性的device node:/dev/console node.如果沒有這個node,那么文字程式將無法跟console device溝通。簡單的說,就是你看不到螢幕上的顯示。用下面的指令做出device node:
# mkdir -p ${INITRD}/dev
# mknod ${INITRD}/dev/console c 5 1
製作ramdisk image:
現在,我們已經製作好了ramdisk的directory了。接下來我們就該把這個目錄製作成一個image file了。
# dd if=/dev/zero of=initrd.img bs=1k count=4096
# mke2fs -F -vm0 initrd.img
# mkdir initrd.dir
# mount -o loop initrd.img initrd.dir
# (cd initrd ; tar cf - .) | (cd initrd.dir ; tar xvf -)
# umount initrd.dir
# gzip -c -9 initrd.img > initrd.bin
製作bootloader:
Saga Dreamcast的bootloader是Hitachi SH的bootloader的一部分,叫做sh-boot。一些Saga Dreamcast的特定的code被放在sh-boot的目錄中。在子目錄tools/dreamcast中,包含Makefile用來製作bootloader的image檔案。另外還有一個script叫做roast.sh,可以用來製作一個包含Saga Dreamcast bootloader的boot CD。下面的指令將建立Saga Dreamcast的bootloader image:
# tar xzf sh-boot-20010831-1455.tar.gz
# patch -p0 < sh-boot-20010831-1455.diff
# cd sh-boot/tools/dreamcast
# cp ../../../kernel/arch/sh/boot/zImage ./zImage.bin
# cp ../../../initrd.bin .
# make scramble kernel-boot.bin
bootloader的image在這裏是文件kernel-boot.bin.這個文件包含了bootloader自己和前面我們做出來的Linux kernel還有ramdisk image.
製作Dreamcast Boot CD
現在只差最後一步了,那就是把kernel-boot.bin燒錄到CD上去。然後把CD放到Saga Dreamcast上。打開Saga Dreamcast的電源,你就可以看到你的kernel boot了。
前面提到過,sh-boot中有一個叫做roast.sh的script.這個script會幫助我們自動完成CD燒錄步驟。這個script首先把kernel-boot.bin改名爲1ST_READ.BIN(啓動檔案名紀錄爲IP.BIN)然後調用mkisofs來建造一個ISO9660的文件系統image,最有用cdrecoder來燒錄CD.
爲了能正確的使用這個script,在這個文件的最開始部分,你必須給cdrecoder設定一些東西,用以識別你的CD-R機器。
利用下面的指令的到你的CD-r driver的ID。然後把roast.sh中的”1,0,0”換成你的CD-R driver的正確的ID.
如果你的CD-R drive不是SCSI的。那么你需要用“ide-scsi”來做SCSI的類比。也就是說把IDE的drive類比成SCSI來用。截入ide-scsi這個module前,如果你進入了X-window,請記得推出X-window.
# modprobe ide-scsi
# cdrecord -scanbus
scsibus1: 1,0,0 100) 'PHILIPS ' 'PCRW804 ' ' 1.5' Removable CD-ROM
當設定好了一切以後,現在放入一片CD-R。並且運行下面的script。當一切完成以後,你就可以把CD-R放到你的Saga Dreamcast裏面,打開電源,幾秒鐘以後,你就可以在你的Saga Dreamcast中運行Busybox shell啦。
# ./roast.sh kernel-boot.bin
後記
這篇文章講解了一些簡單的步驟來製作一個自己的嵌入式系統,包括打造一個cross compiler, GNU C runtime library, linux kernel, Busybox shell, ramdisk image。以及最後把所有的東西方到一起,燒錄出一片可以在Saga Dreamcast運行的CD.
這裏的一切都只是一個開始。嵌入式系統還有很多的東西等待你去發掘、探索。你可以把你的Busybox換掉,換成你自己寫的程式,或者從網上找到其他的程式,也可以把你的Saga Dreamcast做成好象你的桌面型電腦一樣。給你的Saga Dreamcast加上Sega Broadband Adapter (Ethernet)這樣你可以用你的Saga Dreamcast上網遊覽,收郵件。也可以爲你的Saga Dreamcast加上一個RS232的serial port。這樣你就可以利用這個serial port來跟你的桌上型
電腦溝通。還有很多很多的東西可以做……
Copyright This article is Copyright (c) 2001 by Bill Gatliff. All rights reserved. Reproduction for personal use is encouraged as long as the document is reproduced in its entirety, including this copyright notice. For other uses, contact the author. About the Author Bill Gatliff is an independent consultant with almost ten years of embedded development and training experience. He specializes GNU-based embedded development, and in using and adapting GNU tools to meet the needs of difficult development problems. He welcomes the opportunity to participate in projects of all types. Bill is a Contributing Editor for Embedded Systems Programming Magazine, a member of the Advisory Panel for the Embedded Systems Conference, maintainer of the Crossgcc FAQ, creator of the gdbstubs project, and a noted author and speaker. Bill welcomes feedback and suggestions. Contact information is on his website, at http://www.billgatliff.com. 中文出處:www.cosoft.org.cn
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
sdfsdf sddsf fdggg fdgdf sdfsdf
Bash shell 彩色定義
概述 Shell 的配置shell 彩色配置出現在 bash 的個人配置文件 ~/.bashrc 或者是全局配置文件 /etc/bashrc 裡面。 可以通過 bashrc 裡面的 PS1 變量來設置提示符的外觀。 例如: PS1="\s-\v\$ "\s 表示 shell 的名稱,-\v 表示版本號。 在提示符的最後面放置了一個 $。PS1="\u@\h \w \$ "表示 用戶@ 當前目錄 $ 轉義序列要是通過彩色化提示符來增加個性化,就要用到轉 義序列。 轉義序列就是一個讓 shell 執行一個特殊步驟的控制指令。 轉義序列通常都是以 ESC 開頭(這也是它的命名原因)。 在 shell 裡表示為 ^[。也可以用 \033 完成相同的工作(ESC 的 ASCII 碼用十進製表示就是 27, 用八進製表示為 33)。要直接在 shell 裡面輸入轉義序列需要先按 ctrl-v:CTRL-v ESC。 使用 shell 的顏色下面用一個提示符的例子來解釋 shell 的顏色。 PS1="\[\033[0;32;40m\u@\h:\w\$ \]"這樣提示符就全部顯示成綠色了。就像這樣: nico@ebrain:~$ \033 聲明了轉義序列的開始,然後是 [ 開始定義顏色。 後面的 0 定義了默認的字體寬度。稍後我會介紹其他的可用字符。 轉義序列字符串要用 \[ 和 \] 括起來, 防止轉義序列的文本顯示在 shell 裡佔用太多的空間。下面要選擇前景色(這裡是 32,代表綠色)。背景色的 40 表示黑色。 要是不想讓提示符後面的文字也變成綠色,需要用 \033[0m 關閉轉義序列, \033[0m 是 shell 的默認顏色。前景色和背景色都有 8 種可用的選擇。可選顏色:紅色、綠色、黃色、藍色、洋紅、青色和白色。 他們對應的顏色代碼是:30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍色)、35(洋紅)、36(青色)、37(白色)。用同樣色方法設置背景色,不過要把第一個數字「3」替換成「4」, 例如 40、41、42、43、44、45、46、47。示例:
PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"這給了非常多彩的提示符: nico@ ebrain: ~$使用 export PS1="string" 來測試這些設置;PS1="\[\033[1;34;40m[\033[1;31;40m\u@\h:\w\033[1;34;40m]\033[1;37;40m $\033[0;37;0m\] " [ nico@ebrain:~ ] 文本屬性 剛才提到了,在第一個轉義序列後面的「0」是提示符的文本的默認顏色設置。 對於文本屬性來說,有意義的值及對應關係為:0、默認值1、粗體22、非粗體4、下劃線24、非下劃線5、閃爍25、非閃爍7、反顯27、非反顯
通過下面這一段短小的腳本,可以看看色彩組合。
#!/bin/sh############################################################# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de# Last change: Mon Feb 16 16:24:41 CET 2004############################################################for attr in 0 1 4 5 7 ; do echo "----------------------------------------------------------------" printf "ESC[%s;Foreground;Background - \n" $attr for fore in 30 31 32 33 34 35 36 37; do for back in 40 41 42 43 44 45 46 47; do printf '\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back done printf '\n' done printf '\033[0m'done 另一個程序在 shell 中設置顏色不僅僅能創建更加漂亮的提示符, 在編寫控制台程序的時候也非常有用。對於一個要使用彩色的程序員,就必須要使用類似 slang 或 ncurses 這樣的的庫,者通常會增加執行文件的大小。 Ncurses 有著或多或少的獨立於終端的類型的優勢。 C 語言示例用綠色打印「Hello Word」: #i nclude <stdio.h>int main(void){ const char *const green = "\033[0;40;32m"; const char *const normal = "\033[0m"; printf("%sHello World%s\n", green, normal); return 0;}另外一個有用的轉義序列是 printf("\033[2J"),它和 system(clear) 完成的功能一樣。但是可以不需要頭文件 unistd.h。使用printf("\033[1K") 可以刪除一行。 初始化腳本示例如果想在 /etc/init.d 的 init 腳本成功的執行後, 得到一個漂亮的、清晰易讀的提示,而不是一個簡單的 '.', 可以再一次的使用轉義序列。這是一段 cron init scrīpt 的摘錄: #!/bin/sh# Start/stop the cron daemon.test -f /usr/sbin/cron || exit 0 case "$1" in start) echo -n "Starting periodic command scheduler: cron" start-stop-daemon --start --quiet --exec /usr/sbin/cron echo ".";;如果 cron 腳本執行成功就會顯示一個句點。 可以用 [Ok] 給這些信息添加上彩色特徵,通過改變 echo 字符串,例如: #!/bin/sh# Start/stop the cron daemon.test -f /usr/sbin/cron || exit 0case "$1" instart) echo -n "Starting periodic command scheduler: cron" start-stop-daemon --start --quiet --exec /usr/sbin/cronecho "\[ \033[1;34;40m[ \033[1;32;40mOk \033[1;34;40m]\033[0m\]" ;; 把這個設置應用到所有的 init腳本上非常耗費時間, 除非使用轉義序列 \033 —— 因為 Ctrl-v 不是作為一個字符來處理的。
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
fdgdf sdfsdf dfgfg sddsf fdgdf
我們都太脆弱
很想存到人生的第一個壹百萬很想買房子(聽說帝寶,湯泉很不賴)理想好像很遠會不會常常感覺很無力?我們都太脆弱什麼時候可以有一個新的自己?這樣才能脫離自怨自艾的惡性循環吧!
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
fdgdf dfg fggg fdggg dfg
我們都太脆弱
很想存到人生的第一個壹百萬很想買房子(聽說帝寶,湯泉很不賴)理想好像很遠會不會常常感覺很無力?我們都太脆弱什麼時候可以有一個新的自己?這樣才能脫離自怨自艾的惡性循環吧!
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!
sddsf fggg sdfsdf fdggg dfgfg
接受缺點,更接近完美
接受自己的缺點,是培養自信的開始! 接受自己的缺點,才有機會改進缺點。 對無法改進的缺點,才能自我解嘲,以自愚來娛人。 人,沒有十全十美。但我們總習慣對別人要求完美;也對別人謊稱自己完美。就算表面上很謙虛,骨子裡卻堅持完美。 謀職面試中,當主管問道:「你最大的缺點是什麼?」 「呃……」很多年輕人第一次被直接擊中要害時,不得不緊急思索一下,妙的是很快就有答案:「我最大的缺點是--凡事都追求完美!」 我猜想,類似的問答大概常常被刊登在報章雜誌「面試時最常碰見的考古題」這種專題中,所以大家也都習慣了,甚至還對答如流。彷彿,進行了一場很完美的面試表演。 可是,誰的人生真的可以完美?誰的性格真的沒有缺點? 回答說:「我最大的缺點是--凡事都追求完美!」跟回答:「我最大的缺點是--根本就沒有缺點!」答案其實是很接近的。 講出這種答案,若不是故意說謊瞞騙,就是不願意面對自己的缺點。 除非對方很缺乏人生經驗,否則絕對不會相信這種說法。甚至,還會對說出這種話的人,產生很負面的評價。 所以,與其一味地逃避面對自己的缺點,不如勇敢找出自己的缺點,看看哪些是可以改進的,哪些是必些坦然接受,或換個角度欣賞。 了解自己的缺點,需要的是反省與檢討的能力。 接受自己的缺點,可就需要勇氣與智慧了! 而最重要的其實是心態上的改變,如果我們都能夠體認到世界上沒有完美的人,承認自己有缺點,就是天經地義的事。對別人的缺點,也就比較能夠體諒、並加以包容。 一個人有缺點,是很正常的事;不知道自己的缺點,是很危險的事;知道自己缺點但不肯接受,是很可惜的事。 接受自己的缺點,是培養自信的開始!接受自己的缺點,才有機會改進缺點。對無法改進的缺點,才能自我解嘲,以自愚來娛人。生命將因此而更接近完美! E世代生活的黃金定律: 承認自己有缺點,是天經地義的事。 對別人的缺點,也就比較能夠體諒、並加以包容。 (本文摘錄自時報出版吳若權作品集7《打造自己的幸福.com》)
.msgcontent .wsharing ul li { text-indent: 0; }
分享
Facebook
Plurk
YAHOO!