locate in locate at前面是which还是where

Find是一个非常有效的工具,它可以遍历当前目录甚至于整个文件系统来查找某些文件或目录.&
主要选项:&
-name 按照文件名查找文件&
-perm 按照文件权限来查找文件&
-prune 不在当前指定的目录中查找&
-user 按照文件属主来查找文件&
-group 按照文件所属的组来查找文件&
-mtime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前.&
-nogroup 查找无有效所属组的文件,即该文件所属的组不存在&
-nouser 查找无有效属主的文件&
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件&
-type 查找某一类型的文件&
[ 文件类型:&
b 块设备文件&
c 字符设备文件&
p 管道文件&
l 符号链接文件&
f 普通文件&
-size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计&
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找&
-mount 在查找文件时不跨越文件系统mount点&
-follow 如果find命令遇到符号链接文件,就跟踪到链接所指向的文件&
-cpio 对匹配的文件使用cpio命令,就将这些文件备份到磁盘设备中&
(其余选项,请man find,进一步查看)&
对find命令选项的一些例子:&
&&$ find /etc -type d #在/ etc目录下查找所有的目录&
&&$ find /etc -user yaoyuan #在/etc目录下查找文件属主为yaoyuan的文件&
&&$ find . -size +1000000c #在当前目录下查找文件长度大于1 M字节的文件
whereis命令会在指定的目录中查找符合条件的文件,文件应的属性应属于原始代码,二进制文件,或是帮助文件.&
-b 只查找二进制文件&
-B 只在设置的目录下查找二进制文件&
-f 不显示文件名前的路径名称&
-m 只查找说明文件&
-M 只在设置的目录下查找说明文件&
-s 只查找原始代码文件&
-S 只在设置的目录下查找原始代码文件&
-u 查找不包含指定类型的文件&
whereis例子&
$ whereis mysql&
mysql: /usr/bin/mysql /etc/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz&
locate命令用于查找符合条件的文件,它会去保存文件与目录名称的数据库内,查找符合条件的文件或目录&
-u 建立数据库,由根目录开始&
-U 建立数据库,可以指定开始的位置&
-e 将排除在寻找的范围之外&
-f 将特定的档案系统排除在外&
-q 安静模式,不会显示任何错误讯息&
-n 至多显示n个输出&
-r 使用正规运算式 做寻找的条件&
-o 指定数据库存的名称&
-d 指定数据库的路径&
-h 显示辅助讯息&
-v 显示更多的讯息&
-V 显示程序的版本讯息&
(locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)&
  locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如&*&或&?&等)来指定范本样式,如指定范本为kcpa*ner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括子目录在内的所有档案。 )&
locate例子:&
$ locate inittab&
/usr/lib/upstart/migrate-inittab.pl&
/usr/share/terminfo/a/ansi+inittabs&
which 和where 相似,只是我们所设置的环境变量中设置好的路径中寻找;比如;&
[root@localhost ~]# which fdisk &
/sbin/fdisk&
=============================================================================================================
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
find的使用格式如下:
  $ find &指定目录& &指定条件& &指定动作&
  - &指定目录&: 所要搜索的目录及其所有子目录。默认为当前目录。
  - &指定条件&: 所要搜索的文件的特征。
  - &指定动作&: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
find的使用实例:
  $ find . -name &my*&
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
  $ find . -name &my*& -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
  $ find . -type f -mmin -10
搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
locate命令的使用实例:
  $ locate /etc/sh
搜索etc目录下所有以sh开头的文件。
  $ locate ~/m
搜索用户主目录下,所有以m开头的文件。
  $ locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
3. whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
whereis命令的使用实例:
  $ whereis grep
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which命令的使用实例:
  $ which grep
type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
type命令的使用实例:
  $ type cd
系统会提示,cd是shell的自带命令(build-in)。
  $ type grep
系统会提示,grep是一个外部命令,并显示该命令的路径。
  $ type -p grep
加上-p参数后,就相当于which命令。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:334557次
积分:5391
积分:5391
排名:第2362名
原创:161篇
转载:286篇
评论:29条
(1)(1)(7)(6)(8)(8)(5)(6)(12)(9)(27)(12)(138)(16)(24)(3)(1)(1)(1)(1)(11)(28)(26)(43)(53)当前位置:&>&&>&&>&
linux shell之查找命令(find、locate、whereis、which和type)
发布时间:编辑:
本文介绍了linux中几个查找命令的用法,它们分别是find、locate、whereis、which和type,有需要的朋友参考下。
Linux提供了5种查找文件的命令:find、locate、whereis、which和type。其中,find最强大,之前介绍过了,请参考文章:,接下来介绍其余4个命令。
一、locate
其实是find -name的另一种写法,但要比后者快得多,因为其不搜索具体目录,而是搜索一个(/var/lib/locatedb),这个数据库中存有本地所有文件的信息。Linux系统自动创建这个数据库,并且默认通过cron(/etc/crontab)调用updatedb程序来每天自动更新一次,所以使用locate命令查不到最新变动过的文件。
为了避免这种情况,可以在使用locate之前,先调用updatedb命令手动更新下数据库。locate命令的可选项如下:
-u:建立数据库,由根目录开始。
-U:建立数据库,可以指定开始的位置。
-e:将排除在寻找的范围之外。
-f:将特定的档案系统排出在外。
-q:安静模式,不显示任何错误信息。
-n:至多显示n个输出。
-r:使用做寻找条件。
-o:指定数据库存储的名字。
-d:指定数据库路径。
-h:显示帮助信息。
-v:显示更多信息。
-V:显示程序的版本信息。
locate命令使用举例:
$locate /etc/sh
搜索etc目录下所有以sh开头的文件。
$locate ~/m
搜索用户主目录下所有以m开头的文件。
二、whereis
只能用于程序名的搜索,而且只搜索二进制文件、man说明文件和源代码文件,其可选参数如下:
-b:只查找二进制文件。
-B:只在指定的目录下查找二进制文件。
-f:不显示文件名前的路径名称。
-m:只查找man说明文件。
-M:只在指定的目录下查找man说明文件。
-s:只查找源代码文件。
-S:只在指定的目录下查找源代码文件。
-u:查找不包含指定类型的文件。
如果省略选项参数,则返回所有信息。
whereis命令使用举例:
复制代码 代码示例:
$whereis grep
grep: /bin/grep /usr/share/man/man1/grep.1.gz
$whereis -b grep
grep: /bin/grep
的作用是在PATH变量指定的路径中搜索某个系统命令的为止,并且返回第一个搜索结果,即使用which命令就可以查看某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which命令用法:
复制代码 代码示例:
$which grep
type命令其实不是查找命令,它是用来区分某个命令到底是由自带的,还是由shell外部的独立二进制文件提供的。如果是外部命令,那么使用-p参数会显示该命令的路径,相当于which命令。
type命令使用举例:
复制代码 代码示例:
cd is a shell builtin
$type grep
grep is /bin/grep
$type -p grep
您可能感兴趣的文章:
与 linux shell之查找命令(find、locate、whereis、which和type) 有关的文章
本文标题:
本页链接:
123456789101542人阅读
find & path & & expression & & cmd &
path: 所要搜索的目录及其所有子目录。默认为当前目录。expression: 所要搜索的文件的特征。cmd: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
find命令常用选项及实例
-name 按照文件名查找文件。
find /dir -name filename
在/dir目录及其子目录下面查找名字为filename的文件
find . -name &*.c& 在当前目录及其子目录(用“.”表示)中查找任何扩展名为“c”的文件
-perm 按照文件权限来查找文件。
find . -perm 755 –print 在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
find /apps -path &/apps/bin& -prune -o –print 在/apps目录下查找文件,但不希望在/apps/bin目录下查找
find /usr/sam -path &/usr/sam/dir1& -prune -o –print 在/usr/sam目录下查找不在dir1子目录之内的所有文件
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
find / -name &CON.FILE& -depth –print 它将首先匹配所有的文件然后再进入子目录中查找
-user 按照文件属主来查找文件。
find ~ -user sam –print 在$HOME目录中查找文件属主为sam的文件
-group 按照文件所属的组来查找文件。
find /apps -group gem –print 在/apps目录下查找属于gem用户组的文件
-mtime -n +n 按照文件的更改时间来查找文件, -n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
find / -mtime -5 –print 在系统根目录下查找更改时间在5日以内的文件
find /var/adm -mtime +3 –print 在/var/adm目录下查找更改时间在3日以前的文件
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
find / –nogroup -print
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
find /home -nouser –print
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。-type 查找某一类型的文件,
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
find /etc -type d –print 在/etc目录下查找所有的目录
find . ! -type d –print 在当前目录下查找除目录以外的所有类型的文件
find /etc -type l –print 在/etc目录下查找所有的符号链接文件
-size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
find . -size +1000000c –print 在当前目录下查找文件长度大于1 M字节的文件
find /home/apache -size 100c –print 在/home/apache目录下查找文件长度恰好为100字节的文件
find . -size +10 –print 在当前目录下查找长度超过10块的文件(一块等于512字节)
-mount:在查找文件时不跨越文件系统mount点。
find . -name “*.XC” -mount –print 从当前目录开始查找位于本文件系统中文件名以XC结尾的文件(不进入其他文件系统)-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件-exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ {} \;,注意{}和\;之间的空格
$ find ./ -size 0 -exec rm {} \; 删除文件大小为零的文件
$ rm -i `find ./ -size 0`
$ find ./ -size 0 | xargs rm -f &
为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中:
$ find . -type f -exec ls -l {} \;
在/logs目录中查找更改时间在5日以前的文件并删除它们:
find /logs -type f -mtime +5 -exec rm {} \;
-ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find . -name &*.conf&
-mtime +5 -ok rm {
} \; 在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示
说明: 如果你要寻找一个档案的话,那么使用 find 会是一个不错的主意。不过,由于 find 在寻找数据的时候相当的耗硬盘,所以没事情不要使用 find 啦!有更棒的指令可以取代呦,那就是 whereis 与 locate 咯~
一些常用命令
1. find . -type f -exec ls -l {} \;
查找当前路径下的所有普通文件,并把它们列出来。
2. find logs -type f -mtime +5 -exec rm {} \;
删除logs目录下更新时间为5日以上的文件。
3.find . -name &*.log& -mtime +5 -ok rm {} \;
删除当前路径下以。log结尾的五日以上的文件,删除之前要确认。
4. find ~ -type f -perm 4755 -print
查找$HOME目录下suid位被设置,文件属性为755的文件打印出来。
说明: find在有点系统中会一次性得到将匹配到的文件都传给exec,但是有的系统对exec的命令长度做限制,就会报:”参数列太长“,这就需要使用xargs。xargs是部分取传来的文件。
5. find / -type f -print |xargs file
xargs测试文件分类
6. find . -name &core*& -print|xargs echo & &&/tmp/core.log
将core文件信息查询结果报存到core。log日志。
7. find / -type f -print | xargs chmod o -w
8. find . -name * -print |xargs grep &DBO&
grep [选项] pattern [文件名]
命令中的选项为:
-? 同时显示匹配行上下的?行,如:grep -2 pattern filename&同时显示匹配行的上下2行。-b,—byte-offset 打印匹配行前面打印该行所在的块号码。-c,—count 只打印匹配的行数,不显示匹配的内容。-f File,—file=File 从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。-h,—no-filename 当搜索多个文件时,不显示匹配文件名前缀。-i,—ignore-case 忽略大小写差别。-q,—quiet 取消显示,只返回退出状态。0则表示找到了匹配的行。-l,—files-with-matches 打印匹配模板的文件清单。-L,—files-without-match 打印不匹配模板的文件清单。-n,—line-number 在匹配的行前面打印行号。-s,—silent 不显示关于不存在或者无法读取文件的错误信息。-v,—revert-match 反检索,只显示不匹配的行。-w,—word-regexp 如果被\&和&引用,就把表达式做为一个单词搜索。-V,—version 显示软件版本信息。
ls -l | grep '^a' 通过管道过滤ls -l输出的内容,只显示以a开头的行。
grep 'test' d* 显示所有以d开头的文件中包含test的行。
grep 'test' aa bb cc 显示在aa,bb,cc文件中匹配test的行。
grep '[a-z]' aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
grep 'w(es)t.*' aa 如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(),找到就显示该行。如果用egrep或grep -E,就不用&&号进行转义,直接写成'w(es)t.*'就可以了。
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
pattern为所要匹配的字符串,可使用下列模式
. 匹配任意一个字符
* 匹配0 个或多个*前的字符
^ 匹配行开头
$ 匹配行结尾
[] 匹配[ ]中的任意一个字符,[]中可用 - 表示范围,
例如[a-z]表示字母a 至z 中的任意一个
\ 转意字符
【xargs定位参数位置 | xargs控制参数位置 | 如何定位控制xargs参数位置】
管道 + xargs用于把上游输出转换为下游参数输入。
例如&ls *.bak | xargs rm -f
xargs默认把输入作为参数放到命令的最后,但是很多命令需要自己定位参数的位置,比如拷贝命令cp {上游结果} destFolder
解决方法:
xargs 使用大写字母i 定义参数指示符&-I &指示符&,然后用这个参数指示符定位参数插入的位置, 例如:
ls *.bak | xargs -I % cp % /tmp/test
注释:这里使用%作为指示符,第一个%可以理解为声明,第二个%可以理解为调用。你也可以用其他字符,比如&ls
*.bak | xargs -I {} cp {} /tmp/test
之所以能用到xargs这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:
find /sbin -perm +700 | ls -l
这个命令是错误的
find /sbin -perm +700 | xargs ls -l
这样才是正确的
xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判了~
-0 当sdtin含有特殊字元时候,将其当成一般字符,像/ ‘ 空格等
root@localhost:~/test#echo &//&|xargs
root@localhost:~/test#echo &//&|xargs -0 echo
-a file 从文件中读入作为sdtin
root@localhost:~/test#cat test#!/bin/shecho &hello world/n&
root@localhost:~/test#xargs -a test echo#!/bin/sh echo hello world/n
root@localhost:~/test#
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
root@localhost:~/test#cat txt
/bin tao shou kun
root@localhost:~/test#cat txt|xargs -E 'shou' echo
-p 当每次执行一个argument的时候询问一次用户。
root@localhost:~/test#cat txt|xargs -p echoecho /bin tao shou kun ff ?...y
/bin tao shou kun ff
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的
root@localhost:~/test#cat txt|xargs -n1 echo
root@localhost:~/test3#cat txt|xargs
/bin tao shou ku
-t 表示先打印命令,然后再执行。
root@localhost:~/test#cat txt|xargs -t echoecho /bin tao shou kun
/bin tao shou kun
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。
$ ls | xargs -t -i mv {} {}.bak
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
root@localhost:~/test#echo &&|xargs -t -r
root@localhost:~/test#
-s num 命令行的最大字符数,指的是xargs后面那个命令的最大命令行字符数
root@localhost:~/test#cat test |xargs -i -x
-s 14 echo &{}&
xargs: argument line too long
root@localhost:~/test#
-L num Use at most max-lines nonblank input lines per command line.-s是含有空格的。-l 同-L-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符
root@localhost:~/test#cat txt |xargs -i -p echo {}echo /bin tao shou kun ?...y
root@localhost:~/test#cat txt |xargs -i -p -d & & echo {}echo /bin ?...y
echo tao ?.../bin
echo shou ?...tao
root@localhost:~/test#cat test |xargs -i -p -d & & echo {}echo exp1
root@localhost:~/test#cat test |xargs -i -p echo {}echo exp1 ?...y
echo exp5 ?...exp1
echo file ?...exp5
-x exit的意思,主要是配合-s使用。-P 修改最大的进程数,默认是1,为0时候为as many as it can
其他查找命令
1. locate命令
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
locate命令的使用实例:
$ locate /etc/sh
搜索etc目录下所有以sh开头的文件。
$ locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
2. whereis命令
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
whereis命令的使用实例:
$ whereis grep
grep: /bin/grep /usr/share/man/man1p/grep.1p.gz /usr/share/man/man1/grep.1.gz
3. which命令
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which命令的使用实例:
$ which grep
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:218010次
积分:2902
积分:2902
排名:第6254名
原创:63篇
评论:52条
文章:14篇
阅读:19392
阅读:4016
文章:14篇
阅读:104515很纠结.尤其是what跟which.很久都没搞清楚.1.Shall never forget those years when I lived in the country with the farmers,____has a great influence on my life.A.which B.what C.where D.who【我选了B.我知道which可以代指前面的整_百度作业帮
很纠结.尤其是what跟which.很久都没搞清楚.1.Shall never forget those years when I lived in the country with the farmers,____has a great influence on my life.A.which B.what C.where D.who【我选了B.我知道which可以代指前面的整
很纠结.尤其是what跟which.很久都没搞清楚.1.Shall never forget those years when I lived in the country with the farmers,____has a great influence on my life.A.which B.what C.where D.who【我选了B.我知道which可以代指前面的整句句子,后面的句子不是缺主语么?】2.The pupils in primary and secondary schools across England lack___general a view of world history as ours do.A.so B.too C.as D.how【我选的是A.as...as和so...as不是一样的么?不理解为什么选C而A不行】3.The daughter was so angry at all____her mother was doing___she walked out of the house without saying anything.A.which...that B.what.that C.that...which D.that...that【选了B.缺宾语的时候what不能用么?what跟which一直很搞啊!】
很纠结.尤其是what跟which.很久都没搞清楚.1.I shall never forget those years when I lived in the country with the farmers,____has a great influence on my life.A.which B.what C.where D.who【我选了B.我知道which可以代指前面的整句句子,后面的句子不是缺主语么?】答:你知道句子需要主语,也知道which指代前面整个句子,想必知道什么是主语从句,什么是定语从句.想必知道引导定语从句的关系词有哪一些.想必知道what不是关系代词,不能引导定语从句.本题考非限制性定语从句.which指前句中“我在乡下和农民们一起生活”这件事情.译作“这”译:我将永远不会忘记在乡下和农民们一起生活的那些岁月,下乡对我的生活(人生)影响很大.2.The pupils in primary and secondary schools across England lack___general a view of world history as ours do.A.so B.too C.as D.how【我选的是A.as...as和so...as不是一样的么?不理解为什么选C而A不行】答:你需要理解整句话意思,当然先得知道整个句子的结构:这句话中的主语是:The pupils in primary and secondary schools across England (全英国中小学的学生)谓语是lack 缺乏(这是一个及物动词,后直接跟名词作宾语)宾语是:a view of world history 世界历史观.状语:as general 作为整体,总的说来比较状语从句:as ours do = as our pupils do.象我们的学生一样.译:全英国中小学的学生总的说来象我们的学生一样缺乏世界历史观.你不能只记so...as...与as...as...是一样的.事实上,这两个是有区别的.在肯定句中,用as adj.(作表语) as 从句,如:He is as tall as Peter.在否定句中用not so ...as...如:He is not so tall as Peter.在现代英语中,可以用not as...as...He is not as tall as Peter.本题句不是as..as...结构.即使是这样的结构,如:He is as tall as Peter.这第一个as也不能改成so.只有否定句式not so ...as.可以改为not as.as.懂了吗?3.The daughter was so angry at all____her mother was doing___she walked out of the house without saying anything.A.which...that B.what.that C.that...which D.that...that【选了B.缺宾语的时候what不能用么?what跟which一直很搞啊!】 答:D这题是很搞,有陷井.还是要对整句话的理解.需要进行句子分析.这句中最搞的是这个at all,不是not ...at all ,也不是at all加强语气.其实主句是:the daughter was angry at sth.这里的sth.就是all (that) her mother was doing 她母亲正在做的一切事情,all是不定代词,后跟一个限制性定语从句,关系代词that可以省略,因为这在从句中作宾语.也可以是一个名词性从句:what her mother was doing 她母亲正在做的事性.The daugher was so angry at ( sth) that she walked out of the house without saying anything.这个复合句的结构是so ...that- 结果状语从句.译:这女儿对母亲正在做的一切事情是如此生气以至于什么也不说,就走出了房子.评:这是为出题而生造的句子,不是很合生活逻辑的.
实际上。。。第一我还是不明白。。。我知道which可以的,但是还是不明白为什么不能选what。
答:what不是关系代词,不能引导定语从句。
它是一个连接词,可以引导名词性从句(主语从句、宾语从句、表语从句和同位语从句)
它有两层意思。
一个是由特殊疑问句变来的如:
What is his father? 他的父亲是干什么的?
-->I don't know what his father is. 宾语从句。
-->What his father is is still a question. 主语从句
-->The question is what his father is. 表语从句。
--> The question (of) what his father is
is not important. 同位语从句。
另一个相当于一个名词+定语从句,没有疑问的意思如:
What he said is not true. 他说的(话)不是真的。=The word that he said is not true.
I don't understand what he said.
这么用时,what可以理解成“那个。。。啥”,用于不知道用什么名词表达时。
如:He is no longer what he was ten years ago. 他不再是10年前的那个他了。
注意有个逗号
中间夹着宾语从句
1.which用于定语从句,修饰名词,what用于名词性从句 这里which指代前面的those years when I lived in the country with the farmers2.so...as我记得是用在否定句里的吧3.第一眼我也选了b,all这里是名词,指一切她母亲做的事,that引导的从句修饰all,如果all没有就选what了 补充一下,...}

我要回帖

更多关于 where in which 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信