Linux常用命令

> cd命令

(change Directory) 说明:切换当前目录。这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。

  • 格式:cd [目录名]
  • 实例:
命令 说明
cd / 切换到根目录
cd ~ 切换到"Home"目录
cd 切换到"Home"目录
cd - 切换到上一次工作路径
cd. 切换到当前目录 .表示当前一级目录
cd.. 切换到上一级目录 ..表示上一级目录

> ls命令

就是list的缩写,查看文件与目录的命令

  • 格式:ls [参数] [文件名]
  • 常用参数搭配:
命令 说明
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
-h 将文件容量以较易读的方式(GB,kB等)列出来
-a 列出目录所有文件,包含以.开始的隐藏文件
-A 列出除.及..的其它文件
-R 连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
-t 以文件修改时间排序
-s 在每个文件的前面打印出文件大小
-S 以文件大小排序
-r 反序排列
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-d 仅列出目录本身,而不是列出目录的文件数据

> cat命令

该命令用于查看文本文件的内容,后接要查看的文件名,通常可用管道与more和less一起使用,从而可以一页页地查看数据

cat主要有三大功能:

  1. 一次显示整个文件 cat filename
  2. 从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
  3. 将几个文件合并为一个文件:cat file1 file2 > file 不存在新建,存在则覆盖
  4. 附加文档:cat file1 file3 >> file3

  • 格式:cat [参数] 文件名
  • 常用参数搭配:
参数 说明
-b 对非空输出行号,从1开始
-n 输出所有行号,从1开始
-s 遇到连续两行以上的空白行,则替换成一行
-E 每行结束处显示$
-T 将TAB字符显示为^l
  • 例:
  1. 把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
    cat -n log2012.log > log2013.log
  2. 把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里
    cat -b log2012.log log2013.log >> log.log
  3. 清空 /etc/test.txt 文档内容
    cat /dev/null > /etc/test.txt

> grep命令

该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等

  • 格式:grep [参数] pattern [文件名]
  • 常用参数搭配:
参数 说明
-i 忽略大小写
-v 显示不包含匹配文本的所有行
-n 显示匹配行及行号
-a 将binary文件以text文件的方式查找数据
-c 计算找到'pattern'的次数

> find命令

find是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出

  • 格式:find [路径] [参数] [动作]
  • 常用参数搭配:

与时间有关的参数:

参数 说明
-mtime n 在n天之前的当天内被更改过的文件
-mtime +n 在n天之前(不含n天本身)被更改过的文件
-mtime -n 在n天之内(含n天本身)被更改过的文件
  • 例如:

find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件

与用户或用户组名有关的参数:

参数 说明
-user name 列出文件所有者为name的文件
-group name 列出文件所属用户组为name的文件
-uid n 列出文件所有者为用户ID为n的文件
-gid n 列出文件所属用户组为用户组ID为n的文件
  • 例如:
  1. 在目录/home/ljianhui中找出所有者为ljianhui的文件
    find /home/ljianhui -user ljianhui

与文件权限及名称有关的参数:

参数 说明
-name filename 找出文件名为filename的文件
-size [+-]SIZE 找出比SIZE还要大(+)或小(-)的文件
-perm mode 查找文件权限刚好等于mode的文件,mode用数字表示,如0755
-perm -mode 查找文件权限必须要全部包括mode权限的文件,mode用数字表示
-perm +mode 查找文件权限包含任一mode的权限的文件,mode用数字表示
  • 例如:
  1. 查找文件名为passwd的文件
    find / -name passwd
  2. 查找当前目录中文件权限的0755的文件
    find . -perm 0755
  3. 查找当前目录中大于12KB的文件,注意c表示byte
    find . -size +12k

> cp命令

该命令用于复制文件,copy之意,它还可以把多个文件一次性地复制到一个目录下

  • 注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在shell脚本中,如果不加-i参数,则不会提示,而是直接覆盖!
  • 格式:cp [参数] 源目录 目标目录
  • 常用参数搭配:
参数 说明
-i 若目标文件已经存在时,在覆盖时会先询问
-r 递归持续复制,用于目录的复制行为
-u 目标文件与源文件有差异时才会复制
-a 将文件的特性一起复制
-p 连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-l 不复制文件,只是生成链接文件
-f 覆盖已经存在的目标文件而不给出提示
  • 例:
  1. 连同文件的所有特性把文件file1复制成文件file2
    cp -a file1 file2
  2. 把文件file1、file2、file3复制到目录dir中
    cp file1 file2 file3 dir

> mv命令

移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)

  • 格式:mv [参数] 源目录 目标目录
  • 常用参数搭配:
参数 说明
-i 若存在同名文件,则先询问是否覆盖旧文件
-f force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-u 若目标文件已经存在,且比目标文件新,才会更新
  • 例:
  1. 将文件test.log重命名为test1.txt
    mv test.log test1.txt
  2. 将文件log1.txt,log2.txt,log3.txt移动到根的test3目录中
    mv llog1.txt log2.txt log3.txt /test3
  3. 移动当前文件夹下的所有文件到上一级目录
    mv * ../

> rm命令

该命令用于删除文件或目录,remove之意,如果没有使用 -r 选项,则rm不会删除目录。如果使用 rm 来删除文件, 则无法恢复

  • 格式:rm [参数] 文件名
  • 常用参数搭配:
参数 说明
-r 递归删除目录下的所有内容
-f 忽视不存在的文件,不给予提示
  • 例:
  1. 删除任何.log文件;删除前逐一询问确认
    rm -i *.log
  2. 删除test子目录及子目录中所有档案删除,并且不用一一确认
    rm -rf test

> rmdir命令

从一个目录中删除一个或多个子目录项

注意:不能删除非空目录

  • 格式:rmdir [参数] 文件名
  • 常用参数搭配:
参数 说明
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除
  • 例:
  1. 当Test子目录被删除后使parent也成为空目录的话,则顺便一并删除
    rmdir -p parent/Test

> mkdir命令

创建文件夹

  • 格式:mkdir [参数] 文件名
  • 常用参数搭配:
参数 说明
-m 对新建目录设置存取权限,也可以用chmod命令设置
-p 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录
  • 例:
  1. 当前工作目录下创建名为t的文件夹
    mkdir t
  2. 在tmp目录下创建路径为a/b/c的目录,若不存在,则创建
    mkdir -p /tmp/a/b/c

> pwd命令

该命令用于删除文件或目录,remove之意,如果没有使用 -r 选项,则rm不会删除目录。如果使用 rm 来删除文件, 则无法恢复

  • 格式:pwd

  • 例:

  1. 查看当前路径
    pwd
  2. 查看软链接的实际路径
    pwd -P

> less命令

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

  • 格式:less [参数] 文件名
  • 常用参数搭配:
参数 说明
-i 忽略搜索时的大小写
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-s 显示连续空行为一行
-x <数字> 将“tab”键显示为规定的数字空格
/字符串 向下搜索“字符串”的功能
?字符串 向上搜索“字符串”的功能
  • 常用操作命令:
命令 说明
n 向下n行,需要定义。默认为1行
N 向下滚动一屏
b 向下滚动一屏
d 返回上一屏
h 输出当前行的行号
Q 输出文件名和当前行的行号
u 调用vi编辑器
y 退出more
空格键 输出当前行的行号
回车键 输出文件名和当前行的行号
[pagedown] 向下翻动一页
[pageup] 向上翻动一页
  • 例:
  1. ps查看进程信息并通过less分页显示
    ps -aux | less -N
  2. 查看多个文件
    less 1.log 2.log
    可以使用n查看下一个,使用p查看前一个

> more命令

功能类似于cat, more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示

  • 格式:more [参数] 文件名
  • 常用参数搭配:
参数 说明
+n 从第n行开始
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-s 把连续的多个空行显示为一行
  • 常用操作命令:
命令 说明
Enter 向下n行,需要定义。默认为1行
空格键 向下滚动一屏
Ctrl+F 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
v 调用vi编辑器
q 退出more
  • 例:
  1. 显示文件中从第3行起的内容
    more +3 text.txt
  2. 在所列出文件目录详细信息,借助管道使每次显示5行,按空格显示下5行
    ls -l | more -5

> head命令

head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。

  • 格式:head [参数] 文件名
  • 常用参数搭配:
参数 说明
-n <行数> 显示的行数(行数为负数表示从最后向前数)
-c <行数> 显示前n个字节内容
  • 例:
  1. 显示1.log文件中前20行
    head 1.log -n 20
  2. 显示1.log文件前20字节
    head -c 20 log2014.log
  3. 显示t.log最后10行
    head -n -10 t.log

> tail命令

用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

  • 格式:tail [参数] 文件名
  • 常用参数搭配:
参数 说明
-f 循环读取(常用于查看递增的日志文件)
-n <行数> 显示行数(从后向前)
-c <数目> 显示的字节数
-q 不显示处理信息
-v 显示详细的处理信息
--pid==PID 与-f合用,表示在进程ID,PID死掉之后结束
  • 例:
  1. 循环读取逐渐增加的文件内容
    ping 127.0.0.1 > ping.log &(后台运行:可使用jobs -l查看,也可使用fg将其移到前台运行)tail -f ping.log

> which命令

Linux which命令用于查找文件。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

  • 格式:which [参数] 文件名

  • 例:

  1. 查看ls命令是否存在,执行哪个
    which ls
  2. 查看which
    which which
  3. 查看cd
    which cd (显示不存在,因为cd是内建命令,而which查找显示是PATH中的命令)

查看当前PATH配置:echo $PATH;或使用env查看所有环境变量及对应值

> wc命令

wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出

  • 格式:wc [参数] 文件名
  • 常用参数搭配:
参数 说明
-c 统计字节数
-l 统计行数
-m 统计字符数
-w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
  • 例:
  1. 查找文件的 行数 单词数 字节数 文件名
    wc text.txt 结果:7 8 70 test.txt
  2. 统计输出结果的行数
    cat test.txt | wc -l

> tar命令

该命令用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压

弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件

tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

  • 格式:tar [参数] 打包文件名.tar 要打包的文件
  • 常用参数搭配:
参数 说明
-c 建立新的压缩文件
-x 从压缩包中抽取文件
-f 指定压缩文件,必选
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程
  • 例:
  1. 将文件全部打包成tar包
    tar -cvf log.tar 1.log,2.log 或tar -cvf log.*
  2. 将/etc下的所有文件及目录打包到指定目录,并使用gz压缩
    tar -zcvf /tmp/etc.tar.gz /etc
  3. 查看刚打包的文件内容(一定加z,因为是使用gzip压缩的)
    tar -ztvf /tmp/etc.tar.gz
  4. 将指定文件解压到指定/etc目录下
    tar -zxvf /tmp/etc.tar.gz -C /etc

注:文件名并不定要以后缀tar.gz结尾,这里主要是为了说明使用的压缩程序为gzip

> time命令

该命令用于测算一个命令(即程序)的执行时间。它的使用非常简单,就像平时输入命令一样,不过在命令的前面加入一个time即可

在程序或命令运行结束后,在最后输出了三个时间,它们分别是:
user:用户CPU时间,命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;
system:系统CPU时间,命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和;
real:实际时间,从command命令行开始执行到运行终止的消逝时间;

注:用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。


  • 格式:time 命令/程序名

  • 例:

  1. 查看程序运行时间
    time ./process
  2. 查看命令运行时间
    time ps aux

> chgrp命令

该命令用于改变文件所属用户组

  • 格式:chgrp groupname [-R] 文件名
  • 常用参数搭配:
参数 说明
-R 进行递归的持续对所有文件和子目录更改
  • 例:
  1. 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users
    chgrp users -R ./dir

> chown命令

chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符

  • 格式:chown [参数] user[:group] 文件名
  • 常用参数搭配:
参数 说明
-c 显示更改的部分的信息
-R 进行递归的持续对所有文件和子目录更改
-f 忽略错误信息
-v 显示详细的处理信息
  • 例:
  1. 改变拥有者和群组 并显示改变信息
    chown -c mail:mail log2012.log
  2. 改变文件群组
    chown -c :mail t.log
  3. 改变文件夹及子文件目录属主及属组为mail
    chown -cR :mail test/

> chmod命令

用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用ls -l test.txt查找

以文件log2012.log为例:

-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。


  • 格式:chown [参数] 文件名
  • 常用参数搭配:
参数 说明
-R 进行递归的持续对所有文件和子目录更改
-c 当发生改变时,报告处理信息
  • 权限范围:
u 目录或者文件的当前的用户
g 目录或者文件的当前的群组
o 除了目录或者文件的当前用户或群组之外的用户或者群组
a 所有的用户及群组
  • 权限代号:
r 读权限,用数字4表示
w 写权限,用数字2表示
x 执行权限,用数字1表示
s 特殊权限
+ 表示增加权限
- 删除权限,用数字0表示
= 表示唯一设定权限
  • 例:
  1. 增加文件t.log所有用户可执行权限
    chmod a+x t.log
  2. 撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
    chmod u=r t.log -c
  3. 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
    chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
  4. 将test目录及其子目录所有文件添加可读权限
    chmod u+r,g+r,o+r -R text/ -c

> ps命令

ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用top
linux上进程有5种状态:

  • 运行(正在运行或在运行队列中等待)
  • 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  • 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

  • 格式:ps [参数]
  • 常用参数:
参数 说明
-A 所有的进程均显示出来
-a 不与terminal有关的所有进程
-u 有效用户的相关进程
-x 一般与a参数一起使用,可列出较完整的信息
-l 较长,较详细地将PID的信息列出
f 显示进程间的关系
r 显示当前终端运行的进程
e 显示环境变量
  • 命令参数搭配:
参数 说明
aux 查看系统所有的进程数据
ax 查看不与terminal有关的所有进程
--lA 查看系统所有的进程数据
axjf 查看连同一部分进程树状态
  • 例:
  1. 显示当前所有进程环境变量及进程间关系
    ps -ef
  2. 与grep联用查找某进程
    ps -aux | grep apache

> top命令

该命令用于删除文件或目录,remove之意,如果没有使用 -r 选项,则rm不会删除目录。如果使用 rm 来删除文件, 则无法恢复

  • 格式:rm [参数] 文件名
  • 常用参数搭配:
参数 说明
-c 显示完整的进程命令
-s 保密模式, 将交谈式指令取消,避免潜在的危机
-p <进程号> 指定进程显示
-n <次数> 循环显示次数
-d 改变显示的更新速度
-i 不显示任何闲置 (idle) 或无用 (zombie) 的行程
-b 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
  • 例:
  1. 设置信息更新次数
    top -n 2
  2. 显示指定的进程信息
    top -p 139
  3. 将更新显示二次的结果输入到名称为 top.log 的档案里
    top -n 2 -b > top.log

> kill命令

发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

  • 格式:kill [参数] PID
  • 常用参数搭配:
参数 说明
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-u 指定用户

signal的常用参数如下:

信号 说明
1 SIGHUP,启动被终止的进程
2 SIGINT,相当于输入ctrl+c,中断一个程序的进行
9 SIGKILL,强制中断一个进程的进行
15 SIGTERM,以正常的结束进程方式来终止进程
17 SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
  • 例:
  1. 杀死进程
    kill 12345
  2. 强制杀死进程
    kill -KILL 12345
  3. 彻底杀死进程
    kill -9 12345
  4. 杀死指定用户所有进程
    kill -9 $(ps -ef | grep shenle) //方法一 过滤出shenle用户进程
    kill -u shenle //方法二

> file命令

该命令用于判断接在file命令后的文件的基本数据,因为在Linux下文件的类型并不是以后缀为分的,所以这个命令对我们来说就很有用了

  • 格式:file 文件名
  • 例:
  1. 查看文件类型
    file ./test.c
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容