【问题标题】:How can i show the correct answer?我怎样才能显示正确的答案?
【发布时间】:2018-09-28 05:09:39
【问题描述】:

我正在研究学校的东西,问题是: 使用ls 命令列出目录“apache2/mods-available”中的文件。 仅列出以“a”开头并具有文件扩展名“.conf”的文件。 在目录中每行列出一个文件。 在 $() 中输入您的 bash 代码以执行它并返回响应,例如:ANSWER=$(find .-name 'filename')

我尝试这样解决问题:

Answer = $(ls -1 apache2/mods-available/a*.conf)

比我得到这个答案:

apache2/mods-available/actions.conf
apache2/mods-available/alias.conf
apache2/mods-available/autoindex.conf

不幸的是,这是错误的,因为正确的答案是:

actions.conf
alias.conf
autoindex.conf

有人知道出了什么问题吗?谢谢:)

【问题讨论】:

  • cd apache2/mods-available; echo *?我建议看看find
  • @Cyrus 如果问题指定他们必须使用ls,那么不幸的是他们被卡住了。
  • @OP,我想他们想让你做cd apache2/mods-available;Answer=$(ls a*.conf),尽管正如赛勒斯所说,ls 并不是真正的正确方法
  • @123:他需要每行一个文件。所以ls -1 a*.conf 会成功的。;-)

标签: linux bash unix command debian


【解决方案1】:

试试Answer=$(ls -1 a*.conf)

【讨论】:

  • @arjun 如上所述,这将列出所有.conf 文件。
  • 你错过了指定目录:)
  • @GeorgesKayembe :你必须先 cd 到 mods-available 目录。否则,如果您可以选择使用find 命令代替ls,那么佛陀的回答也是正确的。
【解决方案2】:

您可以使用以下脚本

Answer=$(find apache2/mods-available/ -maxdepth 1 -name 'a*.conf' -exec basename {} \;)

maxdepth是在目录1中搜索深度

-exec 基本名称 {} \;是得到名字

【讨论】:

    【解决方案3】:

    $() 中可以有多个命令。所以只需运行:

    Answer=$(cd apache2/mods-available; ls -1 "a*.conf")
    
    • 不要在= 周围放置空格
    • 引用通配符(这样它们就不会扩展到您的当前目录中的匹配文件)
    • 不解析ls

    【讨论】:

      【解决方案4】:

      谢谢大家! 这个答案实际上对我有用:

      $(ls apache2/mods-available/a*.conf | cut -d/ -f3)
      

      【讨论】:

        猜你喜欢
        • 2021-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        • 2021-09-24
        相关资源
        最近更新 更多