第11章 認(rèn)識(shí)與學(xué)習(xí) bash

第11章 認(rèn)識(shí)與學(xué)習(xí) bash

標(biāo)簽: 鳥哥的linux私房菜


[toc]

11.1認(rèn)識(shí)bash這個(gè)shell

什么是shell

只要能夠操作應(yīng)用程序的接口都能夠稱為shell走净。狹義的shell指的是命令行方面的軟件,包括bash等。廣義的shell則包括 圖形化界面的軟件,因?yàn)閳D形界面其實(shí)也能夠操作各種應(yīng)用程序來調(diào)用內(nèi)核工作溢谤。

shell是Linux的任督二脈

各家的distributions使用的bash幾乎都是一樣的霹陡;
聯(lián)機(jī)時(shí)命令行界面的傳輸速度比較快,而且不容易出現(xiàn)斷線或者信息外流的問題迁央;
可以用通過shell提供的數(shù)據(jù)流重定向以及管道命令 迅速分析日志信息蠢甲;
etc

bash for Bourne Again SHell僵刮,這個(gè)Shell是 Bourne Shell的增強(qiáng)版本,也是的基于GNU的架構(gòu)下發(fā)展出來的鹦牛。

/etc/shells這個(gè)文件會(huì)記錄系統(tǒng)上合法的shell

bash shell的功能

  • 命令記憶能力
    • 默認(rèn)記憶1000個(gè)
    • 命令記錄在主文件夾的.bash_history(內(nèi)存內(nèi))中搞糕,~/.bash_history(注銷后)記錄的是前一次登錄所執(zhí)行過的命令。
    • 有一個(gè)隱憂曼追,被黑客入侵窍仰,他只要追蹤曾經(jīng)執(zhí)行過的命令。比如直接輸入MySQL的密碼在命令行里
  • 命令與文件補(bǔ)全功能([Tab]鍵的好處)
  • 命名別名設(shè)置功能(alias)
    • 命令行中輸入alias就可以知道目前的命令別名有哪些
    • 在命令行可以直接執(zhí)行alias ll='ls -al'來設(shè)置別名
  • 作業(yè)控制拉鹃、后臺(tái)、前臺(tái)控制
    • 將作業(yè)丟到后臺(tái)中執(zhí)行
    • 可以在單一登錄的環(huán)境中達(dá)到多任務(wù)的目的
    • 不擔(dān)心不小心使用了[Ctrl]+C 中斷了進(jìn)程
  • 程序腳本

    • 類似DOC下的所謂的“批處理文件”鲫忍;將需要執(zhí)行的連續(xù)命令寫成一個(gè)文件
  • 通配符

    • 星號“*”

bash shell的內(nèi)置命令 : type

type [-tpa] name

  • type: 不加任何參數(shù)時(shí)膏燕,type會(huì)顯示name是外部命令還是bash內(nèi)置命令
  • -t:type會(huì)將name以下面這些字眼顯示出它的意義:file(外部命令),alias(命令別名所設(shè)置的名稱)悟民,builtin(bash內(nèi)置的命令功能)
  • -p:如果 后面接的name為外部命令才會(huì)顯示完整文件名
  • -a:會(huì)由PATH變量定義的路徑中坝辫,將所有含nam的命令都列出來,包含alias

命令的執(zhí)行

[Enter]具有“開始執(zhí)行”的功能
可以被反斜杠“"轉(zhuǎn)義成換行

11.2shell的變量功能

環(huán)境變量射亏;變量的使用與設(shè)置
Linux是一個(gè)多用戶近忙,多任務(wù)的環(huán)境,bash如何得知你的郵件信箱是哪一個(gè)問價(jià)

什么是變量

用一個(gè)簡單的“字眼”來代替另一個(gè)比較復(fù)雜或者是比較容易變動(dòng)的數(shù)據(jù)智润。這最大的好處就是“方便”及舍。

  • 變量的可變性與方便性

    • 郵箱(mail)通過MAIL這個(gè)變量來進(jìn)行訪問,MAIL這個(gè)變量和登錄用戶的登錄名掛鉤
  • 影響bash環(huán)境操作的變量

    • 環(huán)境變量
  • 腳本程序設(shè)計(jì)(shell script)的好幫手

    • 變量相當(dāng)于配置文件窟绷,一改全改

變量的顯示與設(shè)置:echo锯玛, unset

  • 變量的顯示:echo
echo $PATH
echo ${PATH}

當(dāng)一個(gè)變量名稱未被設(shè)置是,默認(rèn)的內(nèi)容是“空”的

  • 變量的設(shè)置規(guī)則
    1.變量與變量內(nèi)容以一個(gè)“=”來連接,如下
    myname=Rockhan
    2.等號兩邊不能直接接空格符
    3.變量名稱只能是英文與數(shù)字攘残,但開頭的字符不能是數(shù)字
    4.變量內(nèi)容若有空格符可使用雙引號"或單引號'(英文格式),將變量內(nèi)容結(jié)合起來拙友,需注意
     4.1雙引號內(nèi)的特殊字符如$等,可以保持原來的特性
     4.2單引號內(nèi)的特殊字符則僅為一般字符
    5.可以用轉(zhuǎn)義字符將特殊字符變成一般字符

環(huán)境變量的功能

  • 可以利用兩個(gè)命令查閱環(huán)境變量:env 與 export
  • set可以查看所有變量
  • $本身也是個(gè)變量歼郭,代表的是這個(gè)shell的線程代號遗契,即所謂的PID(Process ID)可以用
    echo $$ 命令查看
  • ?,上個(gè)執(zhí)行命令的回傳碼病曾。成功執(zhí)行為0牍蜂,不成功非0
  • export:自定義變量轉(zhuǎn)成環(huán)境變量(兩者的差別在于是否會(huì)被子進(jìn)程所繼續(xù)引用),子進(jìn)程僅會(huì)繼承父進(jìn)程的環(huán)境變量知态,不會(huì)繼承父進(jìn)程的自定義變量捷兰。

影響顯示結(jié)果的語系變量(locale)

loacale -a查詢Linux支持哪些語系
常見的兩種中文編碼:big5,utf-8
loacale命令顯示所有與語系有關(guān)的變量數(shù)據(jù)负敏。
環(huán)境變量LANG是主語言的環(huán)境

變量的有效范圍

為什么環(huán)境變量的數(shù)據(jù)可以被子進(jìn)程所引用呢贡茅?這是因?yàn)閮?nèi)存配置的關(guān)系。理論上是這樣的:

  • 當(dāng)啟動(dòng)一個(gè)shll其做,操作系統(tǒng)會(huì)分配一記憶塊給shell使用顶考,此內(nèi)存內(nèi)的變量可讓子進(jìn)程取用;
  • 若父進(jìn)程利用export功能妖泄,可以讓自定義變量的內(nèi)容寫到上述的記憶塊當(dāng)中(環(huán)境變量)驹沿;
  • 當(dāng)加載另一個(gè)shell時(shí)(即啟動(dòng)子進(jìn)程離開父進(jìn)程),子shell可以將父shell的環(huán)境變量所在的記憶塊導(dǎo)入自己的環(huán)境變量塊當(dāng)中蹈胡。
  • 注意:‘環(huán)境變量’和‘bash的操作環(huán)境’意思不太一樣渊季。PS1并不是環(huán)境變量但會(huì)影響到bash的接口(提示符)

變量鍵盤讀取、數(shù)組與聲明:read,array,declare

  • read,要想讀取來自鍵盤輸入的變量罚渐,就是用read命令却汉。這個(gè)命令最常被用在shell script的編寫中,用于與用戶對話
    read [-pt] name -p顯示的內(nèi)容,-t 等待的時(shí)間
  • declare/typeset,聲明變量的類型脓规,不帶參數(shù)
    declare [-aixr] name -a數(shù)組,-i 整數(shù)翩伪,-x 變成環(huán)境變量,同export谈息,-r設(shè)置為readonly缘屹,不可更改不可重設(shè)
$sum=100+300+50
$echo $sum
100+300+50
$declare -i sum=100+300+50
$echo $sum
450
  • 默認(rèn)變量類型為“字符串”
  • bash環(huán)境的中的數(shù)值運(yùn)算,默認(rèn)最多僅能到達(dá)整數(shù)類型侠仇,1/3結(jié)果為0
    • 如果不小心把變量設(shè)置為“只讀”囊颅,只能注銷再登錄才能復(fù)原該變量的類型
  • 數(shù)組變量類型
    • 數(shù)組的設(shè)置方式var[index] = content

與文件系統(tǒng)及程序的限制關(guān)系:ulimit

限制用戶的某些系統(tǒng)資源,包括可以打開的文件數(shù)量,可以使用的CPU時(shí)間踢代,可以使用的內(nèi)存總量等

變量內(nèi)容的刪除盲憎、替代與替換

除了直接設(shè)置變量內(nèi)容之外,我們可以將變量的內(nèi)容進(jìn)行微調(diào)胳挎。

  • 變量內(nèi)容的刪除
hanzhou@hanzhou-VirtualBox:~$ echo $path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
hanzhou@hanzhou-VirtualBox:~$ echo  ${path#/*:}
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
hanzhou@hanzhou-VirtualBox:~$ echo  ${path##/*:}
/usr/local/games

一個(gè)#號刪除從左往右最短的那個(gè)饼疙,兩個(gè)#號從左往右刪除最長的那個(gè)
從右往左 用%號

-變量內(nèi)容的替換

hanzhou@hanzhou-VirtualBox:~$ echo $path
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
hanzhou@hanzhou-VirtualBox:~$ echo ${path/sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

一條斜線只替換第一個(gè)字符串,兩條斜線替換所有符合的內(nèi)容

-變量的測試與內(nèi)容替換

hanzhou@hanzhou-VirtualBox:~$ echo $username

hanzhou@hanzhou-VirtualBox:~$ username=${username-root}
hanzhou@hanzhou-VirtualBox:~$ echo $username
root
hanzhou@hanzhou-VirtualBox:~$ user_name=''
hanzhou@hanzhou-VirtualBox:~$ user_name=${user_name-root}
hanzhou@hanzhou-VirtualBox:~$ echo $user_name 

echo 出來變量內(nèi)容為空慕爬,不一定就沒有這個(gè)變量窑眯,也許是變量內(nèi)容是空字符串
-(減號):if not none:the former,esle: the later
+(加號):if not none:'',esle thelatr


來自新浪微博

11.3命令別名與歷史命令

命令別名設(shè)置:alias,unalias

$alias lm='ls -l | more'
alias的定義規(guī)則與變量規(guī)則幾乎相同
root可以rm(刪除)任何數(shù)據(jù)医窿,但rm提供了一個(gè)參數(shù)讓我們確認(rèn)是否刪除文件磅甩,-i,我們可以這樣做:$alias rm='rm -i'
以后使用rm的時(shí)候不用太擔(dān)心錯(cuò)誤刪除的情況
$alias這個(gè)命令可以查看目前有哪些命名別名

取消命名別名:
$unalias lm

命名別名與變量的區(qū)別:我們可以直接執(zhí)行命名別名姥卢,變量必須要通過類似echo命令才能夠調(diào)用變量的內(nèi)容卷要。

歷史命令: history

history 調(diào)出所有記錄的歷史命令(帶序號,最近的一條數(shù)字最大)
history n 調(diào)出最近n條 歷史記錄
独榴!66執(zhí)行第66條命令
I妗!執(zhí)行上一條命令棺榔,相當(dāng)于↑+enter
瓶堕!al執(zhí)行最近以al為開頭的命令
echo $HISTSIZE (一般是1000)這個(gè)變量決定 ~/.bash_history文件中記錄的歷史命令的最大條數(shù)

  • 當(dāng)我們以bash登錄linux主機(jī)后,系統(tǒng)會(huì)自動(dòng)由主文件的~/.bash_history讀取以前曾經(jīng)下過的命令症歇。
  • 默認(rèn)是在用戶注銷時(shí)才會(huì)將history中的內(nèi)容寫入記錄文件histfiles(一般是~/.bash_history),所以很多人不會(huì)開多個(gè)bash接口郎笆,而是用單一bash登錄,再用作業(yè)控制(job control)來切換工作忘晤,這樣才能將曾經(jīng)執(zhí)行過的命令記錄下來
  • 無法記錄時(shí)間:歷史命令默認(rèn)不記錄執(zhí)行命令的時(shí)間宛蚓,只有執(zhí)行順序,序號不會(huì)變(101~1100)德频,可以通過~/.bash_logout來進(jìn)行history的記錄苍息,并加上date來增加時(shí)間參數(shù)缩幸。

11.4 bash shell的操作環(huán)境

路徑與命令查找順序

命令運(yùn)行的順序可以這樣看:
1.以相對/絕對路徑執(zhí)行命令壹置,例如"/bin/ls" 或 "./ls";
2.由alias找到該命令來執(zhí)行;
3.由bash內(nèi)置的(builtin)命令表谊;
4.通過$PATH這個(gè)變量的順序找到的第一個(gè)命令來執(zhí)行钞护。

11.5 數(shù)據(jù)流重定向

標(biāo)準(zhǔn)輸入(stdin:standard input):代碼為0,使用<或<<
標(biāo)準(zhǔn)輸出(stdout):代碼為1爆办,使用>或>>
標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr):代碼為2难咕,使用2>或2>>

輸出

示例:

  • 將正確和錯(cuò)誤的輸出結(jié)果分別存入不同的文件:
    find /home -name .bashrc > list_right 2> list_error

  • 將正確和錯(cuò)誤的輸出結(jié)果存入一個(gè)文件:
    find /home -name .bashrc > list 2>&1

    find /home -name .bashrc &> list

  • 可以將錯(cuò)誤信息以“2> /dev/null”丟棄

注意:有錯(cuò)誤信息但沒有輸出到文件內(nèi)時(shí)就會(huì)輸出到屏幕上

標(biāo)準(zhǔn)輸入

$cat >catfile 
testing
cat file test

(輸入完成要按[ctrl]+d 來離開)

  • catfile會(huì)被主動(dòng)創(chuàng)建,并將我們輸入的內(nèi)容內(nèi)容寫入文件。
  • 也可以用某個(gè)文件的內(nèi)容來代替鍵盤的輸入
$cat >catfile < ~/.bashrc

~/.bashrc文件的內(nèi)容輸入到catfile中

  • 控制字符的用法
$cat >catfile << "eof"
this is a test
ok,now stop
eof ##輸入這個(gè)關(guān)鍵詞余佃,立刻就結(jié)束而不需要輸入[ctrl]+d

命令執(zhí)行的判斷依據(jù):暮刃;,&&,||

  • cmd;cmd(不考慮命令相關(guān)性的連續(xù)命令執(zhí)行)
    $sync;sync;
  • $?(命令回傳碼)與&&或||

cmd1&&cmd2爆土;##若cmd1執(zhí)行正確($椭懊?=0)開始執(zhí)行cmd2,否則命令回傳碼不為0步势,cmd2不執(zhí)行
cmd1||cmd2氧猬;##cmd1執(zhí)行正確,cmd2不執(zhí)行坏瘩,cmd1執(zhí)行不正確盅抚,cmd2執(zhí)行

ls/tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe

11.6 管道命令(pipe)

cmd1 | cmd2 | cdm3

選取命令:cut,grep

一般來說倔矾,選取信息通常是針對“”來分析的妄均,并不是通篇信息分析的。

  • cut 用于取出我們想要的數(shù)據(jù)
    cut -c 12-截取文本每行第十二字符往后的內(nèi)容
    cut -d ':' -f 3,5按冒號分隔每行字符破讨,并取出第三個(gè)和第五個(gè) 字符區(qū)間
hanzhou@hanzhou-VirtualBox:~$ echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
hanzhou@hanzhou-VirtualBox:~$ echo $PATH | cut -d ':' -f 3,5
/usr/sbin:/sbin
  • grep 用于分析一行信息丛晦,若當(dāng)中有我們所需要的信息,就將該行拿出來提陶。
    last | grep 'hanzhou':last 命令顯示登錄者信息烫沙,用gerp取出含有'hanzhou'的行。
    -v反向選擇隙笆,顯示沒有查找信息的行
    -i 忽略(ignore)大小寫
    -n 順便輸出行號

grep 'MANPATH' /etc/man.config顯示/etc/man.config文件中含有'MANPATH'的行

排序命令:sort锌蓄,wc,uniq

sort [-fbMnrtuk] [file or stdin]

hanzhou@hanzhou-VirtualBox:~$ last | cut -d ' ' -f 1 | sort | uniq -c
      1 
     27 hanzhou
      6 reboot
      1 wtmp

好奇怪撑柔,sort和grep的參數(shù)作用是一樣的瘸爽,但是用的字母竟然還不一定啊,
sort -f忽略大小寫铅忿,-t分隔符 -k以那個(gè)區(qū)間(field剪决,字段)排序(可以選擇多個(gè)字段排序么?好像可以)
cut -i忽略大小寫檀训,-d (delimter) -f

原因是:sort 的-i柑潦,是忽略不可打印內(nèi)容,-d只考慮空白區(qū)域和字母字符

wc:
wc for word count
-l 僅列出行
-w 僅列出多少字(英文)
-m 多少字符 (-c也是一樣)

last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l得到登錄總?cè)舜?br> 第一個(gè)greo得到非空白行峻凫,第二個(gè)去掉wtmp行

雙向重定向:tee

tee會(huì)同時(shí)將數(shù)據(jù)流送與文件與屏幕

hanzhou@hanzhou-VirtualBox:~/abc$ tee test.txt
this is a test.
this is a test.
check
check
^C
hanzhou@hanzhou-VirtualBox:~/abc$ cat test.txt 
this is a test.
check

hanzhou@hanzhou-VirtualBox:~/abc$ tee -a test.txt 
another test
another test
over
over
^C
hanzhou@hanzhou-VirtualBox:~/abc$ cat test.txt 
this is a test.
check
another test
over
hanzhou@hanzhou-VirtualBox:~/abc$ 

-a 以append追加模式寫入
第一次cat的時(shí)候?yàn)槭裁炊嘁粋€(gè)空白行渗鬼??荧琼?

hanzhou@hanzhou-VirtualBox:~/abc$ last | tee newtest |cut -d ' ' -f 1

寫入newtest的結(jié)果沒有經(jīng)過cut處理譬胎,但是打印出來的內(nèi)容顯然進(jìn)過cut處理了

tee的用處:可以讓standard output轉(zhuǎn)存一份到文件內(nèi)并將同樣的數(shù)據(jù)繼續(xù)送到屏幕去處理差牛。這樣除了可以讓我們同時(shí)分析一份數(shù)據(jù)并記錄下來之外,還可以作為處理一份數(shù)據(jù)的中間暫存盤記錄之用堰乔。而且tee是很多認(rèn)證考試中很容易考的偏化。(ORZ)

字符轉(zhuǎn)換命令: tr, col镐侯, join夹孔, paste, expand

DOS斷行字符與unix斷行字符是不一樣的析孽,可以用dos2UNIX與UNIX2dos來完成轉(zhuǎn)換

  • tr
     tr可以用來刪除一段信息中的文字搭伤,或者是進(jìn)行文字信息的替換
hanzhou@hanzhou-VirtualBox:~/abc$ last | tr '[a-z]' '[A-Z]'

該例把小寫字母全部轉(zhuǎn)為大寫字母
-d 刪除某個(gè)字符串

  • col
     一般用col將[tab]按鍵替換為空格鍵,此外還經(jīng)常被用于將man page轉(zhuǎn)存為純文本文件已方便查閱的功能
    -x 將tab 換成對等的空格鍵
    -b 在文字內(nèi)有反斜杠

  • join
     join用于處理兩個(gè)文件之間的數(shù)據(jù)袜瞬,

  • expand
    常用于把tab轉(zhuǎn)為空格怜俐,可以指定幾個(gè)空格

  • 切割命令split
    文件太大時(shí),按照大小或者行數(shù) split 成為多個(gè)小文件
    -l按行邓尤,-b按照大小

$ split -l 1 test_控制字符  tmp
$ ls
test_控制字符  tmpaa  tmpab  tmpac  tmpad  tmpae  
  • 合并文件 cat
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拍鲤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汞扎,更是在濱河造成了極大的恐慌季稳,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澈魄,死亡現(xiàn)場離奇詭異景鼠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)痹扇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門铛漓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鲫构,你說我怎么就攤上這事浓恶。” “怎么了结笨?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵包晰,是天一觀的道長。 經(jīng)常有香客問我炕吸,道長伐憾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任算途,我火速辦了婚禮塞耕,結(jié)果婚禮上蚀腿,老公的妹妹穿的比我還像新娘嘴瓤。我一直安慰自己扫外,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布廓脆。 她就那樣靜靜地躺著筛谚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪停忿。 梳的紋絲不亂的頭發(fā)上驾讲,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音席赂,去河邊找鬼吮铭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛颅停,可吹牛的內(nèi)容都是我干的谓晌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼癞揉,長吁一口氣:“原來是場噩夢啊……” “哼纸肉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起喊熟,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤柏肪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后芥牌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烦味,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年壁拉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拐叉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扇商,死狀恐怖凤瘦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情案铺,我是刑警寧澤蔬芥,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站控汉,受9級特大地震影響笔诵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姑子,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一乎婿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧街佑,春花似錦谢翎、人聲如沸捍靠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榨婆。三九已至,卻和暖如春褒侧,著一層夾襖步出監(jiān)牢的瞬間良风,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工闷供, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烟央,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓歪脏,卻偏偏與公主長得像吊档,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子唾糯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

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