02-Linux命令(上)

一、目录结构

1.Windows文件系统

看到的是一个个驱动器盘符,例如:C盘,D盘等

每个驱动器都有自己的根目录结构,形成了树结构

2.Linux文件系统

ubuntu没有盘符这个概念,只有一个根目录 :/,所有目录和文件都存放在/的下面

注意:在Linux系统下所有的内容都被视为文件,目录也被视为文件

ls -l       #查看当前路径下文件的详细信息
ls -l  /     #查看根目录下的详细信息
Linux目录结构: 

/ : 根目录     #Linux下的根目录有且只有一个,在终端输入/home,就是告诉电脑,从根目录开始,进入home目录
/boot : boot配置文件、内核和其它启动时所需的文件
/etc :存放系统配置有关的文件   #用户信息都存放在etc目录下【修改用户名和密码】
/home :存放普通用户目录      #ls /home/   列出home下所有的普通用户
/mnt :硬盘上手动挂载的文件系统    
  #挂载:把硬盘连接在文件系统上【类似于大卡车车厢挂载在车头上】
  #注意:默认是空的
/media :自动挂载(加载)的硬盘分区以及类似CD、数码相机等可移动介质。   
/cdrom :挂载光盘 
/opt : 存放一些可选程序,如某个程序测试版本,安装到该目录的程序的所有数据,库文件都存在同个目录下
/root : 系统管理员的目录,对于系统来说,系统管理员好比上帝
  #可以对系统做任何的操作,比如删除文件,一般情况下尽量少使用root用户
      #可以通过命令使得普通用户享有root用户的权限
/bin :存放常用的程序文件      #binary,二进制文件或者命令文件
/sbin :系统管理命令,这里存放的是系统管理员使用的管理程序 
/tmp :临时目录,存放临时文件   #temp,暂时的,临时目录,
  #注意:是一些命令或者程序产生的一些临时文件,系统会定期清理该目录下的文件
/usr :在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如游戏、打印工具等。/usr目录包含了许多子目录: 
  /usr/bin目录用于存放程序;
  /usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;
  /usr/lib目录用于存放那些不能直接 运行的,但却是许多程序运行所必需的一些函数库文件。
  /usr/local : 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。
  /usr/bin/ 非必要可执行文件 (在单用户模式中不需要);面向所有用户。
  /usr/include/ 标准包含文件。
  /usr/lib/ /usr/bin/和/usr/sbin/中二进制文件的库。
  /usr/sbin/ 非必要的系统二进制文件,例如:大量网络服务的守护进程。
  /usr/share/ 体系结构无关(共享)数据。
  /usr/src/ 源代码,例如:内核源代码及其头文件。
  /usr/X11R6/ X Window系统 版本 11, Release 6.
  /usr/local/ 本地数据的第三层次,具体到本台主机。通常而言有进一步的子目录, 例如:bin/、lib/、share/.

/var :该目录存放那些经常被修改的文件,包括各种日志、数据文件;
    /var/cache/ 应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
    /var/lib/ 状态信息。 由程序在运行时维护的持久性数据。 例如:数据库、包装的系统元数据等。
    /var/lock/ 锁文件,一类跟踪当前使用中资源的文件。
    /var/log/ 日志文件,包含大量日志文件。
    /var/mail/ 用户的电子邮箱。
    /var/run/ 自最后一次启动以来运行中的系统的信息,例如:当前登录的用户和运行中的守护进程。现已经被/run代替[13]。
    /var/spool/ 等待处理的任务的脱机文件,例如:打印队列和未读的邮件。
    /var/spool/mail/ 用户的邮箱(不鼓励的存储位置)
    /var/tmp/ 在系统重启过程中可以保留的临时文件。
    
/lib : 目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。
/lib32 : 同上
/lib64 : 同上
/lost+found : 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在;
/dev : 存放设备文件
/run :代替/var/run目录,
/proc : 虚拟文件系统,可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的,该目录的内容不在硬盘上而在内存里;
  cat /proc/cpuinfo
  
/sys : 和proc一样,虚拟文件系统,可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的,该目录的内容不在硬盘上而在内存里;

补充:

.   代表当前目录
..  代表上一级目录
注意:根目录下.和..都代表当前目录

相对路径和绝对路径
相对路径:从当前位置开始描述的路径
绝对路径:从/目录开始描述的路径
演示命令:
yangyang@yangyang-virtualmachine:~$ ls -l
总用量 40
drwxr-xr-x 3 yangyang rock 4096 6月  26 02:23 Desktop
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Documents
drwxr-xr-x 2 yangyang rock 4096 3月  25 22:05 Downloads
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Music
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Pictures
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Public
drwxrwxr-x 3 yangyang rock 4096 3月  25 22:43 PycharmProjects
drwxrwxr-x 3 yangyang rock 4096 3月  25 22:37 Software
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Templates
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Videos
yangyang@yangyang-virtualmachine:~$ pwd
/home/yangyang
yangyang@yangyang-virtualmachine:~$ ls -l /
总用量 100
drwxr-xr-x   2 root root  4096 3月  25 22:26 bin
drwxr-xr-x   3 root root  4096 6月  26 18:01 boot
drwxrwxr-x   2 root root  4096 7月  18  2017 cdrom
drwxr-xr-x  19 root root  4020 6月  26 18:01 dev
drwxr-xr-x 137 root root 12288 6月  26 18:10 etc
drwxr-xr-x   3 root root  4096 6月  26 17:58 home
lrwxrwxrwx   1 root root    33 3月  25 22:28 initrd.img -> boot/initrd.img-4.13.0-37-generic
yangyang@yangyang-virtualmachine:~$ ls /mnt/

yangyang@yangyang-virtualmachine:~$ pwd
/home/yangyang
yangyang@yangyang-virtualmachine:~$ cd Desktop/     #相对路径   
yangyang@yangyang-virtualmachine:~/Desktop$ cd .
yangyang@yangyang-virtualmachine:~/Desktop$ cd ..
yangyang@yangyang-virtualmachine:~$ cd /home/yangyang/Desktop/   #绝对路径
yangyang@yangyang-virtualmachine:~/Desktop$ cd ..
yangyang@yangyang-virtualmachine:~$ cd Desktop/      #相对路径
yangyang@yangyang-virtualmachine:~/Desktop$

二、快捷键

ctrl + shift +  + :放大字体,放大终端窗口
ctrl + -   :缩小字体

ctrl  +  alt:显示鼠标

ctrl + alt + t :快速打开终端

tab  :命令行自动补全

箭头上下键:翻看已经执行过的命令

ctrl + f :前进一个字符
ctrl + b:后退一个字符
ctrl + a:回到行首
ctrl + e:回到行尾

ctrl + w: 向左删除一个单词
ctrl + u:向左删除全部单词
ctrl + k:向右删除全部单词

ctrl + y:将ctrl + w,ctrl + u,ctrl + k删除的结果恢复

ctrl + l:清屏【并不是真正意义上的清屏,只是将历史记录向上翻一页】

ctrl + c:中断执行

ctrl + d:退出终端

三、安装软件

1.apt

软件管理 apt ( Advanced Packaging Tool ) , 他可以自动下载、配置、安装软件包

apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package 安装包
sudo apt-get install package –reinstall 重新安装包
sudo apt-get -f install 强制安装
sudo apt-get remove package 删除包
sudo apt-get remove package –purge 删除包,包括删除配置文件等
sudo apt-get autoremove 自动删除不需要的包
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends package 了解使用依赖
apt-cache rdepends package 了解某个具体的依赖
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理下载文件的存档
sudo apt-get check 检查是否有损坏的依赖

apt的配置文件

/etc/apt/sources.list 设置软件包的获取来源
/etc/apt/apt.conf apt配置文件
/etc/apt/apt.conf.d apt的零碎配置文件
/etc/apt/preferences 版本参数
/var/cache/apt/archives/partial 存放正在下载的软件包
/var/cache/apt/archives 存放已经下载的软件包
/var/lib/apt/lists 存放已经下载的软件包详细信息
/var/lib/apt/lists/partial 存放正在下载的软件包详细信息

2.dpkg

dpkg是Debian软件包管理器的基础,被用于安装、卸载和供给和.deb软件包相关的信息,dpkg本身是一个底层的工具,本身并不能从远程包仓库下载包以及处理包的依赖的关系,需要将包从远程下载后再安装

dpkg -i package.deb 安装包
dpkg -r package 删除包
dpkg -P package 删除包(包括配置文件)
dpkg -L package 列出与该包关联的文件
dpkg -l package 显示该包的版本
dpkg –unpack package.deb 解开 deb 包的内容
dpkg -S keyword 搜索所属的包内容
dpkg -l 列出当前已安装的包
dpkg -c package.deb 列出 deb 包的内容
dpkg –configure package 配置包

五、常用命令

1.概述

语法:

command options parameters

command :命令名称

options :选项,可以对命令进行控制,根据具体需求可写可不写

parameters:传给命令的参数,根据具体需求可写可不写,也可以写多个

2.查看帮助文档

1>--help

作用:Linux命令自带的帮助信息

演示命令:
yangyang@yangyang-virtualmachine:~$ ls --help
yangyang@yangyang-virtualmachine:~$ cd --help

2>man

作用:相当于一个手册,包含了大多数的命令以及命令的使用方式

man命令中常用的按键
空格键       向下翻页
上下方向键    向上或者向下翻一行
fn + 左方向键     回到首页
fn + 右方向键       回到尾页

/xxx       从上到下进行搜索和指定关键字有关的内容
?xxx    从上到下进行搜索和指定关键字有关的内容
n       定位到下一个搜索到的关键字
N       定位到上一个搜索到的关键字
q       退出帮助文档

演示命令:
yangyang@yangyang-virtualmachine:~$ man ls 

3>history 查看执行过的命令

当系统执行过一些命令之后,可以通过上下键翻看以前的命令,history将执行过的命令列举出来

history 显示最近1000条记录

history 5 显示最后5条命令

!number number 是history每条命令前面的编号,直接使用表示执行对应的命令

演示命令:
yangyang@yangyang-virtualmachine:~$ history        #显示最近1000条记录
yangyang@yangyang-virtualmachine:~$ history  5     #显示最后5条命令
  958  cd ..
  959  ls
  960  pwd
  961  history 
  962  history  5
yangyang@yangyang-virtualmachine:~$ !951            #指定编号对应的命令
cd Desktop/
yangyang@yangyang-virtualmachine:~/Desktop$ 

补充:

#查看历史命令的记录
#命令不会一直保存下去,最多只会显示1000条,查看信息:
演示命令:
angyang@yangyang-virtualmachine:~/Desktop$ cat ~/.bashrc | grep -i hist
# don't put duplicate lines or lines starting with space in the history.
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000        #最多显示的条数
HISTFILESIZE=2000     #执行过的命令都会存放在一个文件中,这个文件中最多存放2000条
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
#查看命令保存的位置
演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ ls -a ~/.bash*
/home/yangyang/.bash_history         #存放历史命令的文件
/home/yangyang/.bashrc                #存放详细信息的文件
/home/yangyang/.bash_logout          #存放日志的文件
yangyang@yangyang-virtualmachine:~/Desktop$ gedit /home/yangyang/.bash_history         #打开文件
yangyang@yangyang-virtualmachine:~/Desktop$ 

3.文件管理

1>ls:列举出当前工作目录的内容【list】

-a 用于显示所有文件和子目录(包括隐藏文件)
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。 (文件大小是字节)
-lh 与-l 类似  只不过文件大小显示的是 KB [默认是按照文件名的 abcd 排序的]
-lht 与-l -lh 类似  排序是按照修改时间降序排的
-lhtr 按照时间升序排
-r 将目录的内容清单以英文字母顺序的逆序显示
-t 按文件修改时间进行排序
-F 在列出的文件名和目录名后添加标志。例如,在可执行文件后添加“*”,在目录名后添加“/”以区分不同的类型
-R 如果目标目录及其子目录中有文件,就列出所有的文件

补充
#[1位目录还是文件][9位权限][硬链接个数][用户名][主机名][文件大小][时间][文件名]
drwxr-xr-x 2 yangyang rock 4096 6月   5 21:41 Desktop
一、文件类型
#第一位代表的是文件类型:
  - 代表是文件
  d 代表目录
    b 块设备文件
    c  字符设备文件
    l  链接文件
    p  管道文件
    s  socket文件

二、文件权限
#第二位到十位是文件的权限
权限共九位,分三组,每三个一组
  rwx     
  r  read  可读权限,可以用数字4表示
  w  write   可写权限,可以用数字2表示
  x  execute  可执行权限,可以用数字1表示
  -  表示没有相应权限,可以用数字0表示
    
    取值范围为0-7
  -0  代表什么权限都没有
  -1  文件只能执行
  -2  文件只有写权限
  -3  文件可写可执行
  -4  只读权限
  -5  可读可执行
  -6  可读可写
  -7 可读可写可执行
  
三、文件和目录的权限类型  
对于文件而言:
  可读权限表示允许读其内容,禁止对其做任何的更改操作
  可写权限表示可以修改编辑文件的内容或者删除文件(要有文件所在目录的写权限)
  可执行表示允许将文件作为一个程序执行

对目录而言:
  可读权限表示允许显示该目录中的内容      #ls内部内容
  可写权限表示可以在该目录中新建,删除,重命名文件 #vi xx
  可执行权限表示可以进入该目录,可执行是基本权限,如果没有它,就进不了
        
四、硬链接的个数
#第二列一位代表硬链接的个数
  
五、表示组
#第三列表示组
  分三个组:
  代表当前用户的权限[user]
  代表用户所属组的权限[group]
  代表其他组的权限[other]
演示命令:
yangyang@yangyang-virtualmachine:~$ ls
Desktop    Downloads  Pictures  PycharmProjects  Templates
Documents  Music      Public    Software         Videos
yangyang@yangyang-virtualmachine:~$ ls /home/yangyang
Desktop    Downloads  Pictures  PycharmProjects  Templates
Documents  Music      Public    Software         Videos
yangyang@yangyang-virtualmachine:~$ ls Desktop/
vmware-tools-distrib            VNC-Server-6.1.1-Linux-x64.deb
VNC-6.1.1-Linux-x64-DEB.tar.gz
yangyang@yangyang-virtualmachine:~$ ls -a
.                   Documents      .mysql_history    .sogouinput
..                  Downloads      .nano             .sudo_as_admin_successful
.apport-ignore.xml  .gconf         .pam_environment  .sunpinyin
.bash_history       .gnome         Pictures          Templates
.bash_logout        .gnupg         .pki              Videos
.bashrc             .ICEauthority  .presage          .viminfo
.cache              .java          .profile          .virtualenvs
.compiz             .lesshst       Public            .vnc
.config             .local         .PyCharm2017.3    .Xauthority
.dbus               .mozilla       PycharmProjects   .xinputrc
Desktop             Music          .python_history   .xsession-errors
.dmrc               .mysql         Software          .xsession-errors.old
yangyang@yangyang-virtualmachine:~$ ls -A
.apport-ignore.xml  .java             .python_history
.bash_history       .lesshst          Software
.bash_logout        .local            .sogouinput
.bashrc             .mozilla          .sudo_as_admin_successful
.cache              Music             .sunpinyin
.compiz             .mysql            Templates
.config             .mysql_history    Videos
.dbus               .nano             .viminfo
Desktop             .pam_environment  .virtualenvs
.dmrc               Pictures          .vnc
Documents           .pki              .Xauthority
Downloads           .presage          .xinputrc
.gconf              .profile          .xsession-errors
.gnome              Public            .xsession-errors.old
.gnupg              .PyCharm2017.3
.ICEauthority       PycharmProjects
yangyang@yangyang-virtualmachine:~$ ls -l   #显示文件详细信息
总用量 40
drwxr-xr-x 3 yangyang rock 4096 6月  26 02:23 Desktop
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Documents
drwxr-xr-x 2 yangyang rock 4096 3月  25 22:05 Downloads
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Music
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Pictures
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Public
drwxrwxr-x 3 yangyang rock 4096 3月  25 22:43 PycharmProjects
drwxrwxr-x 3 yangyang rock 4096 3月  25 22:37 Software
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Templates
drwxr-xr-x 2 yangyang rock 4096 7月  18  2017 Videos
yangyang@yangyang-virtualmachine:~$ ls -lh   #以k为单位,显示详细信息
yangyang@yangyang-virtualmachine:~$ ls -r    #以文件名倒序
Videos     Software         Public    Music      Documents
Templates  PycharmProjects  Pictures  Downloads  Desktop
yangyang@yangyang-virtualmachine:~$ ls -lt    #以时间排序
Desktop          Software   Documents  Pictures  Templates
PycharmProjects  Downloads  Music      Public    Videos
yangyang@yangyang-virtualmachine:~$ ls -F    #目录后面会显示/
Desktop/    Downloads/  Pictures/  PycharmProjects/  Templates/
Documents/  Music/      Public/    Software/         Videos/
yangyang@yangyang-virtualmachine:~$ ls -R    #将目录及其子目录一并显示
.:
Desktop    Downloads  Pictures  PycharmProjects  Templates
Documents  Music      Public    Softw

2>pwd 查看当前的工作目录[print working directory]

演示命令:
yangyang@yangyang-virtualmachine:~$ pwd
/home/yangyang

3>查看文件

cat:查看完整的文件内容        
  -n  :显示每一行的行号,包括空行
  -b  :显示每一行的行号,不包括空行
#使用文件内容较少的情况下使用cat
head:查看文件内容
tail:查看文件内容

less:查看文件
more:查看文件
#使用文件内容较少的情况下使用more

wc:一次显示文件行数,字节数以及文件名信息
stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细
file:查看文件的类型
echo:用于在终端输出字符串或变量的值

|:管道,作用:将一个命令的输出作为另一个命令的输入,格式:命令1 | 命令2  ****
>:输出重定向,Linux允许将执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中     #清空源文件
>>:输出重定向,Linux允许将执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中 
1>  标准正确输出,同上
1>> 标准正确输出,同上     #追加不清空
2> 标准错误输出,同上
2>> 标准错误输出,同上
&> 标准正确输出和标准错误输出,同上
  将1和2结合在一起了
  
演示命令:
yangyang@yangyang-virtualmachine:~$ cd Desktop/
yangyang@yangyang-virtualmachine:~/Desktop$ ls
aaa.txt               VNC-6.1.1-Linux-x64-DEB.tar.gz
vmware-tools-distrib  VNC-Server-6.1.1-Linux-x64.deb
yangyang@yangyang-virtualmachine:~/Desktop$ cat aaa.txt 
hfuiewhg
less:查看文件
head:查看文件内容
tail:查看文件内容
less:查看文件
more:查看文件
wc:一次显示文件行数,字节数以及文件名信息
stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细
file:查看文件的类型
echo:用于在终端输出字
yangyang@yangyang-virtualmachine:~/Desktop$ cat -n aaa.txt 
     1    hfuiewhg
     2    less:查看文件
     3    head:查看文件内容
     4    tail:查看文件内容
     5    less:查看文件
     6    more:查看文件
     7    wc:一次显示文件行数,字节数以及文件名信息
     8    stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细
     9    file:查看文件的类型
    10    echo:用于在终端输出字
yangyang@yangyang-virtualmachine:~/Desktop$ cat -b aaa.txt 
     1    hfuiewhg
     2    less:查看文件
     3    head:查看文件内容
     4    tail:查看文件内容
     5    less:查看文件
     6    more:查看文件
     7    wc:一次显示文件行数,字节数以及文件名信息
     8    stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细
     9    file:查看文件的类型
    10    echo:用于在终端输出字
yangyang@yangyang-virtualmachine:~/Desktop$ head aaa.txt 
hfuiewhg
less:查看文件
head:查看文件内容
tail:查看文件内容
less:查看文件
more:查看文件
wc:一次显示文件行数,字节数以及文件名信息
stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细
file:查看文件的类型
echo:用于在终端输出字
yangyang@yangyang-virtualmachine:~/Desktop$ head -2 aaa.txt 
hfuiewhg
less:查看文件
yangyang@yangyang-virtualmachine:~/Desktop$ tail aaa.txt 
hfuiewhg
less:查看文件
head:查看文件内容
tail:查看文件内容
less:查看文件
more:查看文件
wc:一次显示文件行数,字节数以及文件名信息
stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细
file:查看文件的类型
echo:用于在终端输出字
yangyang@yangyang-virtualmachine:~/Desktop$ tail -2 aaa.txt 
file:查看文件的类型
echo:用于在终端输出字
yangyang@yangyang-virtualmachine:~/Desktop$ less aaa.txt 
yangyang@yangyang-virtualmachine:~/Desktop$ more aaa.txt 
hfuiewhg
less:查看文件
head:查看文件内容
tail:查看文件内容
less:查看文件
more:查看文件
wc:一次显示文件行数,字节数以及文件名信息
stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的
时间,stat命令的输出信息比ls命令还要详细
file:查看文件的类型
echo:用于在终端输出字
yangyang@yangyang-virtualmachine:~/Desktop$ wc aaa.txt    #统计字符信息
#行数 单词数  字节数  文件名  
 10  10 421 aaa.txt
yangyang@yangyang-virtualmachine:~/Desktop$ stat aaa.txt   #文件状态
  文件:'aaa.txt'
  大小:421          块:8          IO 块:4096   普通文件
设备:801h/2049d Inode:572338      硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1000/yangyang)   Gid:( 1000/    rock)
最近访问:2018-06-27 11:35:53.174601466 +0800
最近更改:2018-06-27 11:34:31.286596606 +0800
最近改动:2018-06-27 11:34:31.290596607 +0800
创建时间:-
yangyang@yangyang-virtualmachine:~/Desktop$ file aaa.txt  #查看文件类型
aaa.txt: UTF-8 Unicode text
yangyang@yangyang-virtualmachine:~/Desktop$ echo "today is a good day"   #终端输出
today is a good day
yangyang@yangyang-virtualmachine:~/Desktop$ ls
aaa.txt               VNC-6.1.1-Linux-x64-DEB.tar.gz
vmware-tools-distrib  VNC-Server-6.1.1-Linux-x64.deb
yangyang@yangyang-virtualmachine:~/Desktop$ ls > bbb.txt   #将ls结果,输入到bbb.txt中
yangyang@yangyang-virtualmachine:~/Desktop$ cat aaa.txt 
hfuiewhg
less:查看文件
head:查看文件内容
tail:查看文件内容
less:查看文件
more:查看文件
wc:一次显示文件行数,字节数以及文件名信息
stat:查看文件详细信息,可以获取文件的文件名、大小、权限,最近访问以及最近更改的时间,stat命令的输出信息比ls命令还要详细
file:查看文件的类型
echo:用于在终端输出字
yangyang@yangyang-virtualmachine:~/Desktop$ cat aaa.txt > bbb.txt 
yangyang@yangyang-virtualmachine:~/Desktop$ 

4>tree 以树形结构去显示目录结构

​ 注意:默认情况下是当前路径下的所有文件的显示

-d    只显示文件夹
-f    显示文件的完整路径
-L 2  :只看前两级的内容

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$  tree
    #如果不能使用tree,那么需要执行 sudo apt-get install tree安装
yangyang@yangyang-virtualmachine:~/Desktop$  tree -d
yangyang@yangyang-virtualmachine:~/Desktop$  tree -f 
yangyang@yangyang-virtualmachine:~/Desktop$  tree -L 2

5>cd 切换工作目录【change diretory】

用法:cd  路径[此处可以是相对路径,也可以是绝对路径]       ******
特殊用法: 
cd    切换到当前用户的主目录,用户登录的时候,默认的目录就是用户的主目录
cd ~  切换到当前用户的主目录
cd .  切换到当前目录
cd .. 切换到上一级目录            *******
cd -  返回上一次切换的目录
cd #  回到当前用户的主目录

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ cd /home/yangyang
yangyang@yangyang-virtualmachine:~$ cd
yangyang@yangyang-virtualmachine:~$ cd ~
yangyang@yangyang-virtualmachine:~$ cd Desktop/
yangyang@yangyang-virtualmachine:~/Desktop$ cd -
/home/yangyang
yangyang@yangyang-virtualmachine:~$ cd Desktop/

6>mv 移动或者重命名文件或者目录

注意:如果目标是文件,则表示重命名

​ 如果目标是目录,则表示移动

命令格式:mv [参数] 源文件  [目标路径|目标文件名]    ------》可以cd到【文件所在路径下】或者【直接通过路径指明文件】
-i    在目标文件存在的时候会询问是否要覆盖
-b    当目标文件存在的时候,不会进行询问直接覆盖

演示命令:
                                      #将aaa.txt重命名
yangyang@yangyang-virtualmachine:~/Desktop$ mv aaa.txt  abc.txt     
                            #将bbb.txt bbb1.txt bbb2.txt移动到dir1目录中         
yangyang@yangyang-virtualmachine:~/Desktop$ mv bbb.txt bbb1.txt  bbb2.txt  dir1/
                            #将abc.txt移动到dir1目录中,重名时会询问
yangyang@yangyang-virtualmachine:~/Desktop$ mv -i abc.txt  dir1/
mv:是否覆盖'dir1/abc.txt'? y
                           #重名时,不会询问
yangyang@yangyang-virtualmachine:~/Desktop$ mv -b abc.txt  dir1/

7>cp 复制文件或者目录

命令格式:cp [参数] 源文件 目标文件

-i    在目标文件存在的时候会询问是否要覆盖【交互式复制】
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名
-a 复制的时候保持文件原有属性
-f 对于已经存在的目标文件不提示
-v 显示拷贝进度

演示命令:
yangyang@yangyang-virtualmachine:~$ cd Desktop/
yangyang@yangyang-virtualmachine:~/Desktop$ cp -i  abc.txt  dir1/
cp:是否覆盖'dir1/abc.txt'? n      #交互式复制   复制abc.txt到dir1目录中,询问是否覆盖
yangyang@yangyang-virtualmachine:~/Desktop$ cp dir1 dir2/
cp: 略过目录'dir1'
yangyang@yangyang-virtualmachine:~/Desktop$ cp dir1 dir2
cp: 略过目录'dir1'
yangyang@yangyang-virtualmachine:~/Desktop$ cp -r  dir1 dir2/   #如果复制目录,则一定要-r
yangyang@yangyang-virtualmachine:~/Desktop$ cp -v  abc.txt dir2/  
#拷贝时,会显示当前拷贝的文件
'abc.txt' -> 'dir2/abc.txt'

8>创建文件或者目录

8.1>mkdir 创建一个新的目录   【make directory】
  -p:创建出具有嵌套层关系的文件目录
8.2>touch 创建空白文件,可以设置文件的时间
  名词解释:
  atime:最后一次访问文件或目录的时间【access time】
  mtime:最后一次修改内容的时间【modify time】
  ctime :最后一次改变属性的时间【change time】
  参数:
  -a   修改atime
  -m  修改mtime
  -c  修改ctime
  -d  同时修改atime与mtime
  -t  同时修改atime与mtime,格式{YYYYMMDDhhmm}
  注意:只有-d和-t后面可以指定时间,其他的只能把时间修改为当前时间

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ mkdir check   #创建单层目录
yangyang@yangyang-virtualmachine:~/Desktop$ mkdir -p a/b/c/d  #创建多级目录
yangyang@yangyang-virtualmachine:~/Desktop$ mkdir -p b/{c,d}/{e,f,g}
yangyang@yangyang-virtualmachine:~/Desktop$ touch file1.txt  
yangyang@yangyang-virtualmachine:~/Desktop$ touch -m file2.txt

9>删除文件或者目录

9.1>rmdir  删除给定的目录,注意:只能删除空文件夹
9.2>rm    删除文件或者目录,可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下面所有子文件和目录都删掉

  -r  删除目录,否则删不掉
  -ri 交互式删除,每次删除都会进行询问
  -rf 强制删除文件或目录

演示命令:  
angyang@yangyang-virtualmachine:~/Desktop$ rmdir check
yangyang@yangyang-virtualmachine:~/Desktop$ rmdir b
rmdir: 删除 'b' 失败: 目录非空
yangyang@yangyang-virtualmachine:~/Desktop$ rm -r dir1
yangyang@yangyang-virtualmachine:~/Desktop$ rm -ri dir2
rm:是否进入目录'dir2'? y          #交互式删除
rm:是否进入目录'dir2/dir1'? y
rm:是否删除普通文件 'dir2/dir1/bbb1.txt'? y
rm:是否删除普通文件 'dir2/dir1/abc.txt'? ^C     #control + c中断执行
yangyang@yangyang-virtualmachine:~/Desktop$ rm -rf a       #强制删除目录
  yangyang@yangyang-virtualmachine:~/Desktop$ rm -rf file1.txt #强制删除文件

10>ln 建立链接文件

注意:建立链接文件相当于windows上创建一个快捷方式

分类:

​ 软链接:不占用磁盘空间的,源文件删除则软连接失效【-s】

​ 硬链接:可以占用磁盘空间,源文件删除对硬链接没有影响,

​ 注意:只能链接普通文件,不能链接目录

演示命令:
#软连接
yangyang@yangyang-virtualmachine:~/Desktop$ rm -rf *
yangyang@yangyang-virtualmachine:~/Desktop$ touch a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ ls
a.txt
                                    #创键一个软链接a,指向a.txt
                                    #这个a.txt 和a的内容一样
yangyang@yangyang-virtualmachine:~/Desktop$ ln -s a.txt a
yangyang@yangyang-virtualmachine:~/Desktop$ ll
总用量 8
drwxr-xr-x  2 yangyang rock 4096 6月  27 15:21 ./
drwxr-xr-x 31 yangyang rock 4096 6月  27 14:35 ../
lrwxrwxrwx  1 yangyang rock    5 6月  27 15:21 a -> a.txt
-rw-r--r--  1 yangyang rock    0 6月  27 15:19 a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ cat a.txt 
fhuwegjawhg
hello
html
linux
fjeehdgjsehdg
yangyang@yangyang-virtualmachine:~/Desktop$ cat a
fhuwegjawhg
hello
html
linux
fjeehdgjsehdg
yangyang@yangyang-virtualmachine:~/Desktop$ cat a.txt 
fhuwegjawhg
hello
html
linux
fjeehdgjsehdg
462527568357628
yangyang@yangyang-virtualmachine:~/Desktop$ rm a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ cat a
cat: a: 没有那个文件或目录

#硬链接
yangyang@yangyang-virtualmachine:~/Desktop$ touch a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ rm a
yangyang@yangyang-virtualmachine:~/Desktop$ ln a.txt a   #创键硬链接
yangyang@yangyang-virtualmachine:~/Desktop$ cat a.txt 
hfijehgwahg
hgjehgjwagd
hjaehdg
yangyang@yangyang-virtualmachine:~/Desktop$ cat a
hfijehgwahg
hgjehgjwagd
hjaehdg
yangyang@yangyang-virtualmachine:~/Desktop$ cat a.txt 
hfijehgwahg
hgjehgjwagd
hjaehdg
64723882
yangyang@yangyang-virtualmachine:~/Desktop$ cat a
hfijehgwahg
hgjehgjwagd
hjaehdg
64723882
yangyang@yangyang-virtualmachine:~/Desktop$ ll
总用量 16
drwxr-xr-x  2 yangyang rock 4096 6月  27 15:27 ./
drwxr-xr-x 31 yangyang rock 4096 6月  27 14:35 ../
-rw-r--r--  2 yangyang rock   41 6月  27 15:28 a
-rw-r--r--  2 yangyang rock   41 6月  27 15:28 a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ rm a.txt 
yangyang@yangyang-virtualmachine:~/Desktop$ cat a
hfijehgwahg
hgjehgjwagd
hjaehdg
64723882

【总结】
对于软连接而言,如果软连接和源文件不在同一个目录下,则原文件使用绝对路径,不能使用相对路径
对于硬链接而言,两个文件占用相同大小的磁盘空间,如果源文件被删除,硬链接不受任何影响,正常使用
软连接是常见的形式

11>grep 文本搜索

强大的文本搜索工具,grep允许对文本文件进行模式查找,如果找到匹配模式,grep打印包含模式的所有行
注意:搜索内容串可以是正则表达式

-c:返回匹配到的数目
-i:忽略大小写  
-n:显示匹配行以及行号
-v:反向选择,列出没有关键词的行【求反】

演示命令:
yangyang@yangyang-virtualmachine:~$ cd Desktop/
yangyang@yangyang-virtualmachine:~/Desktop$ touch a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ touch a1.txt
yangyang@yangyang-virtualmachine:~/Desktop$ touch a2.txt
yangyang@yangyang-virtualmachine:~/Desktop$ ls
a  a1.txt  a2.txt  a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ ls | grep a1.txt
a1.txt                                #以ls的输出作为grep的输入,进行检索
yangyang@yangyang-virtualmachine:~/Desktop$ ls | grep a
a                                 #检索桌面上文件名中包含a的文件
a1.txt
a2.txt
a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ touch b.txt
yangyang@yangyang-virtualmachine:~/Desktop$ ls
a  a1.txt  a2.txt  a.txt  b.txt
yangyang@yangyang-virtualmachine:~/Desktop$ ls | grep a
a
a1.txt
a2.txt
a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ ls | grep -c a    #计数
4
yangyang@yangyang-virtualmachine:~/Desktop$ ls | grep -n a   #显示行号
1:a
2:a1.txt
3:a2.txt
4:a.txt
yangyang@yangyang-virtualmachine:~/Desktop$ ls | grep -v a
b.txt                                 #反向检索【否定】
yangyang@yangyang-virtualmachine:~/Desktop$ cat a.txt 
yuieqwhfije
fhhjeanf
hfjaehdgj
hello

yangyang@yangyang-virtualmachine:~/Desktop$ cat a.txt | grep a
fhhjeanf                              #检索a.txt文件中包含a的内容
hfjaehdgj

12>which 查找其他命令所在的位置

注意:显示其他指定命令的路径

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ which ls
/bin/ls
yangyang@yangyang-virtualmachine:~/Desktop$ which cd
yangyang@yangyang-virtualmachine:~/Desktop$ which cat
/bin/cat
yangyang@yangyang-virtualmachine:~/Desktop$ which pwd
/bin/pwd
yangyang@yangyang-virtualmachine:~/Desktop$ which ll

#注意:如果是封装的命令,查找不到位置,比如上面的cd和ll

13>type 寻找命令所在的位置,包括命令别名

-a:可以找到所有,包括别名和位置

#type和which的区别:type列出别名和位置,which列出位置

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ type ls
ls 是 `ls --color=auto' 的别名
yangyang@yangyang-virtualmachine:~/Desktop$ type -a ls
ls 是 `ls --color=auto' 的别名
ls 是 /bin/ls

14>find 按照指定条件来查找文件

格式:find  【查找路径】 【查找方式】 【查找条件】

-name:匹配名称,默认是精确匹配
-size:匹配文件大小
-atime  -n  +n:匹配访问内容的时间(-n指n天以内,+n指n天以前)
-empty

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ ls
a  a1.txt  a2.txt  a.txt  b.txt
yangyang@yangyang-virtualmachine:~/Desktop$ find -name a1.txt
./a1.txt                              #查找文件名为a1.txt的文件
yangyang@yangyang-virtualmachine:~/Desktop$ find -size 1k
./a.txt                                   #查找文件大小等于1k的文件
./a
yangyang@yangyang-virtualmachine:~/Desktop$ find -size +1k
.                                        #查找文件大小大于1k的文件
yangyang@yangyang-virtualmachine:~/Desktop$ find -size -1k
./b.txt                                   #查找文件大小小于1k的文件
./a2.txt
./a1.txt
yangyang@yangyang-virtualmachine:~/Desktop$ find -empty     #查找空文件
./b.txt
./a2.txt
./a1.txt

15>locate 查找数据

-i:忽略大小写
-c:不输出寻找结果,仅计算找到的文件数量
-l:仅输出指定的几行,  例如:-l 8,输出8行
-r:后面可以接正则表达式

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ locate hello
/boot/grub/i386-pc/hello.mod              #全局查找包含hello的内容
/usr/lib/grub/i386-pc/hello.mod
/usr/lib/python2.7/__phello__.foo.py
/usr/lib/python2.7/__phello__.foo.pyc
/usr/lib/python3.5/__phello__.foo.py
/usr/lib/python3.5/__pycache__/__phello__.foo.cpython-35.pyc
/usr/share/doc/python3-uno/demo/hello_world_comp.py
/usr/share/doc/python3-xlsxwriter/docs/_static/hello01.png
/usr/share/doc/syslinux-common/asciidoc/hello.txt
/usr/share/locale-langpack/en@boldquot/LC_MESSAGES/hello.mo
/usr/share/locale-langpack/en@quot/LC_MESSAGES/hello.mo
/usr/share/locale-langpack/en_AU/LC_MESSAGES/hello.mo
/usr/share/locale-langpack/en_CA/LC_MESSAGES/hello.mo
/usr/share/locale-langpack/en_GB/LC_MESSAGES/hello.mo
/usr/share/locale-langpack/zh_CN/LC_MESSAGES/hello.mo
yangyang@yangyang-virtualmachine:~/Desktop$ locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells

16>sort 给文件内容排序

-f:忽略大小写的差异,例如 A 与 a 视为编码相同;
-b:忽略最前面的空格符部分;
-n:使用『纯数字』进行排序(默认是以文字型态来排序的);
-r:反向排序;
-u:就是 uniq,表示唯一的,相同的数据中,仅出现一行代表;
-t:分隔符,默认是用 [tab] 键来分隔;
-k:以那个区间 (field) 来进行排序的意思

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ cat a.txt
yuieqwhfije
fhhjeanf
hfjaehdgj
hello

yangyang@yangyang-virtualmachine:~/Desktop$ sort a.txt
                                  #默认按照升序排序
fhhjeanf
hello
hfjaehdgj
yuieqwhfije
yangyang@yangyang-virtualmachine:~/Desktop$ sort -t ":" -k 2 a.txt
                                  #以:为分隔符,取分隔结果中第2组进行排序
hfj:aehd:gj
fhhj:ean:f
hello:fhedg:fhjdg
yuieq:whfij:e

17>cut 可以从一个文本文件或者文本流中提取文本列

-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;( -连接区间  ,取的是和的意思)

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ cat a.txt
yuieq:whfij:e
fhhj:ean:f
hfj:aehd:gj
hello:fhedg:fhjdg

yangyang@yangyang-virtualmachine:~/Desktop$ cut -d ":" -f 1 a.txt
yuieq                             #提取以:为分隔符的第1个区间的数据
fhhj      
hfj
hello

yangyang@yangyang-virtualmachine:~/Desktop$ cut -c 1 a.txt
y                                 #提取第一个字符
f
h
h

yangyang@yangyang-virtualmachine:~/Desktop$ cut -c 1,3 a.txt
yi                                    #提取第1个和第3个字符
fh
hj
hl

yangyang@yangyang-virtualmachine:~/Desktop$ cut -c 1-3 a.txt
yui                                   #提取第1到第3个字符
fhh
hfj
hel

18>tee 读取标准输入的数据,并将其内容输出成文件【向指定文件中写入内容】

-a:读取原文件内容,并追加新的内容,如果不设置该选项,则新的内容直接覆盖旧的内容

演示命令:
yangyang@yangyang-virtualmachine:~/Desktop$ tee a.txt 
^C
yangyang@yangyang-virtualmachine:~/Desktop$ tee -a a.txt
fhajhf                                #向指定文件中追加内容
fhajhf
gjfg
gjfg
jghqj
jghqj
gjrgh
gjrgh
^C
yangyang@yangyang-virtualmachine:~/Desktop$ cat a1.txt 
yangyang@yangyang-virtualmachine:~/Desktop$ tee a1.txt
tuwit                             #向指定文件中写入内容
tuwit
grehwjgh
grehwjgh
^C
yangyang@yangyang-virtualmachine:~/Desktop$ cat a1.txt
tuwit     
grehwjgh
yangyang@yangyang-virtualmachine:~/Desktop$ tee a1.txt a2.txt
uuuu                              #向多个指定文件中写入内容
uuuu
ppppp
ppppp
^C

19>gedit 打开Linux下的文本编辑器

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

推荐阅读更多精彩内容