关于linux的一些学习中的疑惑?请老师们解答。

第一个问题:为何find命令的结果不能直接用管道符和ls输出?而要用-exec连接下一个命令。为什么?第二个问题:我百度得到的答案是:“ls不能从stdin读参数”这句话... 第一个问题:为何find命令的结果不能直接用管道符和ls输出?而要用-exec连接下一个命令。为什么?
第二个问题:我百度得到的答案是:“ls 不能从 stdin 读参数”这句话什么意思?本人菜鸟不懂什么意思?
本人英语水平欠佳,man一下看不懂。

另外,linux中是通过uid识别用户身份的吗?如果是,那么一个用户被删除后,新创建的用户的UID有可能会是之前的UID吗?如果是,那么在windows系统中,也是这样吗?

请回答 问题的老师们用通俗一点的 详细一点的 语言回答,本人初出茅庐,才疏学浅,太深奥的 理解不了,但各位老师也不妨说说,以便他人参考。
展开
 我来答
不知详解
2016-11-25 · 知道合伙人软件行家
不知详解
知道合伙人软件行家
采纳数:609 获赞数:2252
自学计算机。

向TA提问 私信TA
展开全部
1、 可以用管道。实际上就是把一个stdout 传递给下一个命令的 stdin 。管道给 下一个命令,下一个命令读取到的是一系列路径。而不是给每个路径执行一次命令。不符合需求。
2、ls 只输出 不需要读取输入。所以跟stdin无关。
3、有可能uid会重复,但是概率极低。不需要思考这类问题。可以修改passwd文件手动指定uid。uid和以往用户一样也没什么关系。
4、windows不了解。
更多追问追答
追问
嗯,谢谢你的热心帮助。但是第1条第2条我还是没看明白。
我说说我对你回答的理解:你的意思是 find命令可以用管道符把搜索到的结果传递给下一条命令是吗,只是不能直接传递给ls命令,(也就是说问题是出在了ls身上,是ls不能通过管道符直接接收)是吗?

另外我刚刚做实验有发现一个新问题:
find /etc/ -name *i* 这条命令为什么不对?
系统提示 find: 路径必须在表达式之前:
追答
你不明白是因为你实践太少 不理解什么是标准输入和标准输出。问题是出在ls身上。
用这个:
find . | ( while read line;do ;ls "$line" ;done )
它功能类似于 -exec 参数,

你那个命令想搜索所有包含i的文件?find /etc -name '*i*' 用单引号括住。否则shell 会把*i* 展开成当前目录下所以包含i的文件名 会有多个。所以导致find出错
锛屸櫅锛侊紵鈾
2016-11-25 · 贡献了超过100个回答
知道答主
回答量:100
采纳率:0%
帮助的人:11.7万
展开全部
追问
我好像有点明白了。你的意思是,管道符的本质就是 把一个命令的stdout传递给下一个命令的stdin 。 (stdout 、stdin  是标准输入输出) 我理解的对吗?老师。。

另外一问题:

find /etc/ -name *i* 这条命令为什么不对?
系统提示 find: 路径必须在表达式之前:
而 find /etc/ -name *init* 这条命令就会正确执行?why?有什么区别?
追答
对√
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式