分享
 
 
 

Linux系列培训——BASH的使用

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

Linux 有各种shell提供给用户,它们是sh、bash、tcsh、pdksh、zsh、ash和mc。但是只有几个标准的shell可在几乎所有的linux版本上使用。本章,您将学习到:

·什么是shell。

·Linux系统中最常用的shell。

·命令行参数与通配符。

·查看使用过的命令(history)和定义命令的别名(alias)。

·重定向与管道命令。

·作业控制。

·如何定制bash shell。

我们将主要介绍bash(Bourne Again Shell),一种新学者最常用的、Linux默认的shell。读者还将学会使用一些常用的bash 命令和环境变量。通过对本章的学习,将学会如何通过bash快速有效地工作。

什么是shell

shell是Linux系统,更确切的说是Linux核心和用户相互交流的一个程序。许多人认为shell就是Linux,但是shell不是系统内核的一部分。Shell的作用是翻译各种命令代码。它有它自己内置的shell命令。图1说明了用户、shell和Linux核心的关系。

500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.chinalinuxpub.com/images/image001.png');}" src="http://www.chinalinuxpub.com/images/image001.png" onmousewheel="return bbimg(this)" width=228 border=0

图1 用户和shell的关系

如果用户熟悉MS-DOS就会明白,这种关系实际上和DOS用户与COMMAND.COM的关系是类似的。

每当用户输入一条命令,shell就会把它翻译成机器码并传送给内核。例如,进行目录和文件操作时,用户所输入的命令都会被shell翻译成机器码传给内核,再由核心做相应的处理。有一些命令,如显示当前目录命令pwd,已经成为bash shell的一部分。还有一些命令,如拷贝命令cp和删除命令rm,是存在于文件系统的目录中并单独执行的程序。图2说明了shell如何进行命令翻译工作。

500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.chinalinuxpub.com/images/image003.png');}" src="http://www.chinalinuxpub.com/images/image003.png" onmousewheel="return bbimg(this)" width=378 border=0

图2 shell的工作流程

首先,它先检查输入的命令是否是shell自己内在的命令(象cd,pwd)。如果不是,就检查该命令是否是应用程序,应用程序可以是Linux系统的可用程序,象ls和rm;也可以是购买的商业程序,如XV。

Shell会在系统的所有子目录中寻找这些应用程序的路径。路径是可执行程序的位置,由一系列的目录组成。如果输入的命令既不是shell的内部命令也不是系统中的可执行程序,那么,用户就会看到一条出错信息。如果输入的命令是正确的,最终系统就会用这些命令,并将它们传给内核。

Shell的另外一个重要性是,它具有功能很强的编程能力。这一点在功能上和MS-DOS中的批命令语言类似,但要强大得多。它支持高级程序语言中能找到的几乎所有的命令,象循环、函数、变量和排列。

最常用的shell工具

在UNIX和Linux系统中有好几种shell,最普通的是sh,C shell(csh)和 Korn shell(ksh)。这三种shell都有各自的优缺点。

Bourne shell是由Steve Bourn编写的,它是最初的UNIX shell,具有很强的编程能力,几乎所有的UNIX系统中都有Bourne shell,但它在人机交互方面不及其它几种shell。Bourne shell的可执行程序放在/bin/sh中。

C shell是由Bill Joy编写的,和c语言很相似,这也是它为什么被叫作C shell。它在人机交互方面强于 Bourne shell,支持在Bourne shell中所没有的许多特性,如对命令进行编辑、保留命令(history)和为命令起别名等。C shell的可执行程序放在/bin/csh中。

Korn shell是由Dave Korn编写的。它具有C shell 的所有特性,却使用Bourne shell的语法。Ksh在人机互换和编程方面功能都较强。ksh的可执行程序放在/bin/ksh中。

除了以上提到的这三种shell,还有很多其它的shell程序,每一种都有其各自的新特征。下一节我们就将探讨Bourne Again Shell(bash)———Red Hat系统默认的shell 。

bash

bash(Bourne Again Shell)故名思意是Bourne shell的全新脚本。Bash不但全面间容Bourne shell,而且集中了C shell和 Korn shell 的优点和许多Bourne shell没有的新特性。Bash有很好的弹性、强有力的编程界面和人机交互功能。

用bash代替Bourne shell是因为 Bourne shell在处理用户输入方面有很大的局限性。向 Bourne shell输入命令通常乏味而蘩琐,特别是当用户输入的命令很长时更是如此。而使用bash使输入命令简单了许多。

简化命令输入

当用户向 bash或其它shell输入一条命令时,没有必要为了让bash明白自己的意图而输入完整的命令。例如,假设当前工作目录包含下列文件和子目录:news/ ,bin/,games/,mail/,samplefile test/。如果用户想从当前工作目录转到子目录test,可以输入:

#cd test

尽管这条命令可以达到预期的目的,但还有更简便的方法。因为test当前目录下唯一以t开头的目录,所以如果我们只键入下面的命令,bash是可以识别的。

#cd t

然后所要做的就是按Tab键,bash将补全这条命令并把它显示在屏幕上。这时只要按Enter键就可以执行这条命令了。

对于像这样的简单命令也许看不到使用命令行参数有多大的价值,在使用短小命令时,这样做甚至会减慢你的速度。但当习惯使用它以后,你就会发现它是多么有用。

还是上面这个例子,如果有两个或两个以上以t开头的子目录名,如还有目录tools/,就不能简单的用cd t<tab>。bash将无法判断用户要进入哪一个子目录,它将发出警报声并把您输入的命令原封不动的摆在屏幕上。用户还需要给出更详细的信息,例如键入:

#cd te<tab>

总之,在输入命令的任何时刻,都可以按Tab键。这样做时,bash将会试图补全此时键入的部分命令。如果不能补全,bash就会用声音提醒您它需要更多的信息。

通配符

Linux支持在查找文件和字符时使用通配符,bash支持表1列出的三种通配符:

表1 通配符

字符

含意

*

代表一个字符集。当它是文件名中的第一个字符时,它代表除以“.”开头外的所有字符

代表单个字符

[…]

代表一个范围内的单个字符

“*”是最流行的通配符。它表示任意和所有的字符。例如,字符串t*表示所有以t开头的文件名。用户可以在一个表达式中用多个“*”号来定义一个文件集。例如,字符串*ab*.bmp表示所有有扩展名bmp,并在文件名中间有ab字母的文件。

“*”号可表示任何的字符序列。如要打印当前目录下所有以.bmp结尾的图形文件,那么输入:

# lpr *.bmp

afterstep.bmp

control.bmp

xv.bmp

使用通配符时请注意,如果输入下面的命令,那就将打印所有文件名bmp结尾的文件:

# lpr *bmp

afterstep.bmp

control.bmp

tabmp

xv.bmp

当删除文件时,使用“*”通配符要特别小心。命令rm *将删除目录中的所有文件。最常见的是,当只是想删除带有相同的前缀或后缀的文件集时不经意的删除了所有文件。例如,键入rm *.bmp(删除所有后缀为bmp的文件)时错误的键入了rm * bmp,那么Linux将首先删除所有文件,再删除所有后缀为bmp的文件,而这时已经没有文件了。为了安全起见,最好使用带-i选项的rm。rm –i *.bmp命令在删除每一个文件之前提示用户确认删除操作。

通配符“?”代表一个字符。如果当前目录下有文件file1.doc、file2.doc、file1c.doc、file2s.doc和file2q.doc。如果用户只想打印前两个文件,请用:

# lpr file?.doc

因为“?”只代表一个字符,可以用ls *.???来产生一个扩展名为三个字符的文件列表。

通配符[…]有比前两个通配符更多的选择,如果用户想选择文件file1.doc,file2.doc和file3.doc,但不选file4.doc,可用file[123]作为文件的通配符。还可以在[ ]中括入一个字符范围来代表一个字符。假设有名为sail.1,sail.2 ,sail.3和sail.4的四个文件,现在想把前两个文件存入已经安装在/mnt下的软盘,可用:

# cp file.[1-2] /mnt

与“?”一样,在[ ]中的一项代表一个字符,用户可描述允许数值中的分离数字值,如[123],它只允许字符1、2、3;也可描述字符的范围,如[1-5]它表示在数字1到5的任意字符;也可以指定一个范围集。例如,只想指定字母字符,那么可以用[A-Z,a-z]。在ASCII字符集中,在ASCII Z 和ASCII a之间有一些特殊字符,如果指定[A-z],那么就包含了这些字符。

history命令

bash还支持历史命令(history),它可以保留一定数量的、曾经送入shell的命令。在Linux系统上工作时,经常会重复执行同一组命令。例如,在开发程序和查错时,将重复进行相同的循环。编辑源程序、编译源程序、运行可执行文件来测试它的性能,然后在从头开始。为了避免重复输入同样的命令,bash在送入命令时将它们保存起来,需要时可重复使用这些命令。bash用历史表(history list)保存这些命令。历史表一般可保留500行命令。每次当用户退出系统时, bash自动将当前历史表保存到一个文件中。默认的文件名称是 .bash_history,它位于根目录下,下一次登录时,bash自动将历史文件的内容加载到您的历史表中。

存入历史表的命令并非都是有用的,所以bash提供了几种方法来调用它们。最简单的是使用up- 和 down-arrow键,这将逐个列出使用过的命令。用up-arrow键会使最新敲入的命令现示在命令行上;再用up-arrow键就可以得到次新的命令,以此类推。

如果需要的话,历史表中的命令是可以编辑的。我们这里不去探讨bash本身所有的、复杂的编辑方法。用户可以使用up- 和 down-arrow键来移动命令行。可以在命令行中任意一点插入一条命令,也可以用Backspace或Delete键删除一条命令。大多数用户都能发现这些简单有效的编辑方法。

另一种使用历史文件的方法是用history命令,history命令有两种使用方法。第一种是使用命令:

# history [n]

如果history命令后不带任何参数,那么整个历史表的内容都会现示在屏幕上。在history命令后跟上参数n使历史表中最后n条命令被显示出来。例如history 20显示历史表中最后20条命令(见图3)。

500) {this.resized=true; this.width=500;}" onmouseover="this.style.cursor='hand'" onclick="{window.open('http://www.chinalinuxpub.com/images/image005.gif');}" src="http://www.chinalinuxpub.com/images/image005.gif" onmousewheel="return bbimg(this)" width=511 border=0

图3 使用history 20将显示历史表中最后20条命令

History的第二种使用方法是使用下面的格式改变历史文件或历史表的内容:

# history [-r | w | a | n] [filename]

-r是告诉history命令读取历史文件的内容,并把它们作为当前的历史表。-w是告诉history命令把当前历史表写入历时文件(覆盖当前历史文件)。-a参数则把当前历史表添加到历史文件的尾部。-n参数把历史文件中的最后n行读取到当前历史表中。

History命令的这些参数的执行结果都会被送入其后的[filename]中,并把该文件作为历史文件。如果没有定义任何文件名,执行结果就会送入shell变量HISTFILE。

定义命令的别名

命令的别名对定义那些用户经常要使用而又不愿伤脑筋来记住里面的细节的那些命令是非常有用的。它对用一组有用的工具来优化环境也很有用。例如,如果用户经常使用下面这一条命令:

# cd /usr/X11R6/lib/X11/config

就有必要为它定义一个别名,例如goconfig。用为它定义的别名代替每次输入一长串目录。为了定义这样的别名,用户必需使用bash的alias命令:

# alias goconfig=’cd /usr/X11R6/lib/X11/config/’

这样一来,每当输入goconfig命令,它就会代替原来很长的命令而且能得到和从前一样的结果。如果想删除一条不想要的别名命令,可以使用bash的unalias命令:

# unalias goconfig

有很多别名对多数用户来说是很有用的。它们在用户登录时被写入执行文件,当每次使用它们以后都会被保存起来。对下面是一些也许是用户想要定义的别名:

alias ll='ls -l'

alias log='logout'

alias ls='ls -F'

如果您是一个DOS用户且习惯于使用DOS文件命令,可以用alias命令定义如下的别名,使Linux使用起来就象DOS一样:

alias dir='ls'

alias copy='cp'

alias rename='mv'

alias md='mkdir'

alias rd='rmdir'

如果用户输入alias命令不带任何参数,bash将为用户在屏幕上列出所有已定义的别名。下面是使用不带任何参数的alias命令得到的一个样本:

alias dir='ls'

alias ll='ls -l'

alias ls='ls -F'

alias md='mkdir'

alias net='term < /dev/modem > /dev/modem 2> /dev/null&'

alias rd='rmdir'

输入输出重定向

Linux命令的设计思想是提供许多有效的完成特殊任务的命令,这些命令又可以很容易地结合在一起完成复杂的功能。

一般情况下Linux命令是从键盘输入的,并将命令的运行结果送给屏幕显示。有时从文件接受输入或把结果送到文件中去也是很有用的。在这种情况下,在编写命令时,增加文件名作为附加的或可选的参数是能做到的,一些命令也是这样做的。但是,每条命令都增加这些并不经常使用的功能将会不必要地增加命令执行文件的长度。

为了避免这样做,Linux和shell提供了重定向的功能。在必要时,允许将程序的标准输入输出进行重定向。请看下面这条命令:

# ls –l /usr/tmp >dir

该命令的前部分产生 /usr/tmp目录的长清单。在正常情况下,应该是在屏幕上显示清单。在命令后面跟上“>”和文件名时,清单将送到指定的文件中,而不是在屏幕上显示。如果指定的文件存在,其原有的内容将被覆盖。对于上面这个例子:

# cat dir

total 4

drwxr-xr-x 2pc book 1024 May 22 16:30 bin

drwxr-xr-x 2pc book 1024 May 22 16:30 doc

drwxr-xr-x 2pc book 1024 May 22 16:30 lib

drwxr-xr-x 2pc book 1024 May 22 16:30 src

ls命令其实并不知道“>”的作用,它甚至不知道“>”的存在。因为bash将任何命令行参数送给ls命令以前已将“>”和后面的文件名移去。ls命令执行时象往常一样将它的输出送到标准输出设备。由bash在ls命令执行之前将它的输出从屏幕上重新定向到指定的文件。其它重定向功能也是类似的。

有时候,希望使用输出重定向功能,将另一条命令的输出结果追加到已有的文件的后面。这时侯,可以使用追加重定向操作符(>>):

# ls /usr/tmp/ >>dir

# cat dir

total 4

drwxr-xr-x 2pc book 1024 May 22 16:30 bin

drwxr-xr-x 2pc book 1024 May 22 16:30 doc

drwxr-xr-x 2pc book 1024 May 22 16:30 lib

drwxr-xr-x 2pc book 1024 May 22 16:30 src

bin doc lib src

如果在cat命令中不给出文件名,它将从标准输入设备(键盘)接受输入,一直到遇到文件结束符为止。即在键盘上按Ctrl+d结束从键盘输入。现在,您就可以用下面的简单命令利用重定向功能从键盘上直接把正文送到文件中去:

# cat > text.file

any text entered here goes into text.file up to

Crtl+d

#

和程序的标准输出重定向一样,程序的错误输出也可以重新定向。程序的标准输出和错误输出通常作为两件不同的事情对待,可以对它们分别进行重定向。例如,要在屏幕上看到程序的正常输出结果,但又要将程序的任何错误信息送到一个文件中去以备以后检查,可以用下面的命令:

# ls /usr/tmp/ 2> err.file

bin doc lib src

使用符号“2>”表示对错误输出设备重定向。为了将标准输出和错误输出同时送到一个文件中,可以使用另一个输出重定向操作符“&>”:

# ls /usr/tmp &> output.file

如同程序的输出可以写到文件中去一样,它的标准输入也可以读自文件,而不用从键盘输入。这可以用“<”作为重定向操作符:

# wc < /etc/passwd

21 42 775

由于由bash处理“<”后面的部分,wc看不到文件名/etc/passwd,它象不包括文件名一样,认为输入来自键盘。

另一种输入重定向称为here文档。它告诉bash当前命令的标准输入来自命令行。Here文档的重定向操作符使用“<<”。它将一对分格符(delimiter)之间的正文重新定向输入给命令:

# wc << delim

>this text froms the content

>of the here document,which

>continus until the end of

>text delimiter

>delim

4 17 98

当将文本送入here文档时,不必在每行前加“>”,它们由shell作为提示符提供。Shell用这个提示符告诉用户当前命令还未结束。它在执行命令之前将等待更多的输入。

在“<<”操作符后面,任何字符都可以用作正文开始前的分格符,本例中使用delim作为分格符。Here文档一直继续到遇到另一个分格符为止。第二个分格符应该出现在新行的开头。这时,here文档的正文,不包括开始和结束的分格符,将重新定向送给命令(本例中是wc),作为它的标准输入。

利用重定向将命令组合在一起,实现系统单个命令未曾提供的新功能是完全可能的。例如,为了统计目录中的文件数目,可以使用下面的命令序列:

# ls /usr/bin > /tmp/dir

#wc –w < /tmp/dir

459

# rm /tmp/dir

开始时使用ls命令列出/usr/bin目录的内容,将结果重新定向送给/tmp/dir文件。第二条命令对ls输出文件的字数进行统计,并显示总数为459。和该例一样,在结束工作时,您应将在/tmp目录下的临时文件删去。以免浪费磁盘空间。

管道

使用管道命令可以把一系列的命令连接起来,使第一条命令的输出作为第二条命令的输入、第二条命令的输出作为第三条命令的输入,以此类推。管道使用“|”作为重定向操作符。

用户可以通过几个用“|”分开的命令告诉bash产生一个管道。下面这个例子说明了如何使用管道:

# cat sample.text | grep "High" | wc –l

管道命令把cat命令的输出(sample.text文件的内容)送给grep命令。grep命令在当前输入中寻找字符串High。输出再送给wc命令。带-l参数的wc命令再打印出输入的行数。假设sample.text文件的内容是:

Things to do today:

Low: Go grocery shopping

High: Return movie

High: Clear level 3 in Alien vs. Predator

Medium: Pick up clothes from dry cleaner

管道会得到结果2,意味着今天您有两件重要的事情要完成:

# cat sample.text | grep "High" | wc -l

2

改变bash提示符

bash有两级提示符。第一级是bash在等待输入命令时用户看到的提示符,这也是通常所看到的提示符。

对于普通用户,Bash默认的第一级提示符是“ $”。如果不喜欢用“ $”作为提示符,用户可以用bash变量PS1来定制自己的提示符,例如:

 $ PS1=“Enter a Command:”

那么现在bash的提示符就成为:

Enter a Command:

第二级提示符是当shell发现用户的命令不全,告诉用户还需要更多输入时的提示符。在6.3.5节中讨论here文档时,用到了第二级提示符,当时使用的是第二级提示符默认的“>”。可以用bash变量PS2来定制用户的第二级提示符,例如:

 $ PS2=“I need more information”

可以在命令提示符中显示系统制定好的特殊字符,这些特殊的字符可以再提示符中显示诸如时间等一些东西。表2列出了最常用的特殊字符。

表2 最常用的特殊字符

字符

含意

\!

显示该命令的使用次数。

\#

显示当前命令使用的次数

\ $

使用  $ 作为提示符,如果您是root,那就显示 #。

\

显示 \。

\d

显示当前日期。

\h

显示在shell上运行的主机名。

\s

显示正在运行的shell名。

\t

显示当前时间。

\u

显示当前使用者的用户姓名。

\W

显示当前工作目录。

\w

显示当前工作路径。

这些特殊字符可以组合起来形成一些有用的提示符,提供给用户一些有用的信息。下面是使用PS1改变提示符的几个例子:

 $ PS1=”\t”

这条命令将在提示符中显示时间,如:

17:49:35

而提示字符:

 $ PS1=\t

将产生下面的提示符

t

这个例子就说明了引号的重要性。而提示字符:

 $ PS1="\t\\ "

将产生下面的提示符

17:49:35

作业控制

作业控制是指bash控制正在运行的进程的能力。bash可以挂起某个进程,以后再恢复该进程的执行。Bash保存当前执行的作业清单。它可以用jobs命令进行显示。

为了挂起一个正在运行的进程,可以用Ctrl+z。使用bg命令可以恢复一个被挂起的后台进程,而fg命令可以恢复一个被挂起的前台进程。

当用户想在后台执行某条命令,却无意中使它在前台执行时,这些命令就很有用了。当命令在前台执行时,在该进程结束以前用户都无法从键盘输入任何命令。通常大多数命令的执行只需要几秒钟,如果命令执行时间过长,就最好使它进入后台作业以便能在前台继续向bash输入指令。

例如,想运行命令find / -name "test" > find.out ,该命令在前台执行,在根下搜索文件名为test的文件,并把结果送入文件find.out。根据文件系统的大小和系统中用户的多少,将会花去几十秒到几分钟不等。如果拥护已在执行这条命令,并想让它转入后台以便能在前台继续输入命令,可以用Ctrl+z将进程挂起,再在提示符下输入:

 $ bg

这时该命令将在后台执行,用户就可以继续使用bash了。

定制bash

在本章已经描述了很多定制bash的方法。但是,用户所做的这些改变只在当前有效,一但退出系统,所做的努力都会丢失。用户可以在bash的一个初始文件中储存它们使它们长久地发生效果。

可以把每次进入bash都要执行的命令放在该文件中,该文件中的命令通常是命令别名和初始变量。Bash的这个初始文件名为profile。每一个用户在其根目录下都有一个.profile文件,每次起动bash时,bash都要从中读取信息,文件中所有的命令都将被执行。下面这个文件是系统默认的profile文件。该文件位于目录/etc下,如果想向bash添加自己的定制信息,必须把该文件拷贝到自己的根目录下,并改名为.profile(如果您的根目录下没有.profile文件的话)。

# commands common to all logins

export OPENWINHOME=/usr/openwin

export MINICOM="-c on"

export

MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/X11/man:/usr/openwin/man

export HOSTNAME="'cat /etc/HOSTNAME'"

PATH=" $PATH:/usr/X11/bin: $OPENWINHOME/bin:/usr/games:."

LESS=-MM

# I had problems using 'eval test' instead of 'TERM=', but you might want to

# try it anyway. I think with the right /etc/termcap it would work great.

# eval 'tset -sQ " $TERM"'if [ " $TERM" = "" -o " $TERM" = "unknown"]; then

TERM=linux

fi

#PS1=''hostname':'pwd'# '

if [ " $SHELL" = "/bin/pdksh" -o " $SHELL" = "/bin/ksh" ]; then

PS1="!  $"

elif [ " $SHELL" = "/bin/zsh" ]; then

PS1="%m:%~%# "

elif [ " $SHELL" = "/bin/ash" ]; then

PS1=" $ "

else

PS1='\h:\w\ $ '

fi

PS2='> '

ignoreeof=10

export PATH DISPLAY LESS TERM PS1 PS2 ignoreeof

umask 022

# set up the color-ls environment variables:

if [ " $SHELL" = "/bin/zsh" l; then

eval 'dircolors -z'

elif [ " $SHELL" = "/bin/ash" l; then

eval 'dircolors -s'

else

eval 'dircolors -b'

fi

echo

fortune

echo

export TAPE="/dev/nftape"

bash命令摘要

表3是bash shell的一些常用的命令。

表3 常用bash命令

命令

含义

alias

定义命令别名。

bg

后台操作命令。强迫一个被挂起的进程在后台执行。

cd

改变工作路径。

exit

退出登录

fc

编辑当前历史表,作用同history。

fg

前台操作命令。强迫一个被挂起的进程在前台执行。

help

提供bash各种命令使用的帮助信息。

history

显示最近使用过的 n条命令。

kill

终止任何进程。

pwd

显示工作路径。

unalias

撤削命令的别名。

上表列出的仅仅是bash最常使用得命令,为获取更多的信息请参看bash的 man page。

bash的环境变量

bash有很多环境变量,表4列出了部分常用的环境变量及其含义:

表4 bash的环境变量

变量

含义

EDITOR,FCEDIT

默认的fc命令编辑器

HISTFILE

该文件用来存放历史命令

HISTSIZE

历史表的大小

HOME

使用者启始目录的绝对路径名

OLDPWD

上一次操作的绝对路径名

PATH

Bash查找命令的目录

PS1

保存 bash命令行提示符

PS2

保存bash的第二提示符

PWD

保存当前工作目录的绝对路径名

SECONDS

Bash起动所需的秒数

如果想了解其它的环境变量,请参看bash的man page

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有