关于linux的一些学习中的疑惑?请老师们解答。
第一个问题:为何find命令的结果不能直接用管道符和ls输出?而要用-exec连接下一个命令。为什么?第二个问题:我百度得到的答案是:“ls不能从stdin读参数”这句话...
第一个问题:为何find命令的结果不能直接用管道符和ls输出?而要用-exec连接下一个命令。为什么?
第二个问题:我百度得到的答案是:“ls 不能从 stdin 读参数”这句话什么意思?本人菜鸟不懂什么意思?
本人英语水平欠佳,man一下看不懂。
另外,linux中是通过uid识别用户身份的吗?如果是,那么一个用户被删除后,新创建的用户的UID有可能会是之前的UID吗?如果是,那么在windows系统中,也是这样吗?
请回答 问题的老师们用通俗一点的 详细一点的 语言回答,本人初出茅庐,才疏学浅,太深奥的 理解不了,但各位老师也不妨说说,以便他人参考。 展开
第二个问题:我百度得到的答案是:“ls 不能从 stdin 读参数”这句话什么意思?本人菜鸟不懂什么意思?
本人英语水平欠佳,man一下看不懂。
另外,linux中是通过uid识别用户身份的吗?如果是,那么一个用户被删除后,新创建的用户的UID有可能会是之前的UID吗?如果是,那么在windows系统中,也是这样吗?
请回答 问题的老师们用通俗一点的 详细一点的 语言回答,本人初出茅庐,才疏学浅,太深奥的 理解不了,但各位老师也不妨说说,以便他人参考。 展开
2个回答
展开全部
1、 可以用管道。实际上就是把一个stdout 传递给下一个命令的 stdin 。管道给 下一个命令,下一个命令读取到的是一系列路径。而不是给每个路径执行一次命令。不符合需求。
2、ls 只输出 不需要读取输入。所以跟stdin无关。
3、有可能uid会重复,但是概率极低。不需要思考这类问题。可以修改passwd文件手动指定uid。uid和以往用户一样也没什么关系。
4、windows不了解。
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出错
展开全部
,
追问
我好像有点明白了。你的意思是,管道符的本质就是 把一个命令的stdout传递给下一个命令的stdin 。 (stdout 、stdin 是标准输入输出) 我理解的对吗?老师。。
另外一问题:
find /etc/ -name *i* 这条命令为什么不对?
系统提示 find: 路径必须在表达式之前:
而 find /etc/ -name *init* 这条命令就会正确执行?why?有什么区别?
追答
对√
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询