V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
skai0dev
V2EX  ›  Linux

命令行参数 dir/* 和 dir/ 有什么不同?

  •  
  •   skai0dev · 2018-07-31 17:03:01 +08:00 · 2609 次点击
    这是一个创建于 2338 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在看chmod的手册时,看到

    chmod 不能改变符号链接文件的权限,而是改变链接文件指向的原文件的权限,
    而在递归遍历目录时会忽略符号链接(软链接)文件,也不会改变它指向的原文件的属性,
    

    然后测试的时候发现参数dir/dir/*的效果不太一样。

    参数dir/会忽略dir和它子目录下的链接; 参数dir/*会忽略dir字母下的链接,但会该变dir下的链接指向的文件的权限;

    自己猜测可能dir/*表示的不是一个参数而是多个,有文件也有目录也有链接,只有在递归这些参数中的目录(比如subdir)时,才会忽略其中(subdir)的链接,而dir下的链接还是会改变它指向的文件的属性。 而dir/则表示一个参数,所以会忽略dir及其子目录下的链接文件。不知道我这样理解对吗?

    wbgbg
        1
    wbgbg  
       2018-07-31 17:10:40 +08:00   ❤️ 1
    *是 shell 处理的,shell 会把 dir/* 翻译成 dir/a dir/b dir/c 这样的东西,再传给 chmod 作为参数。所以你传给 chmod 的参数实际上已经没有 dir 这个目录,只有 dir 里的路径了。
    taobao92307
        2
    taobao92307  
       2018-08-01 10:14:14 +08:00
    ls 书得对,*在 shell 会自动扩展。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5766 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:45 · PVG 09:45 · LAX 17:45 · JFK 20:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.