【问题标题】:How to: compare command output to text file with bash如何:使用 bash 将命令输出与文本文件进行比较
【发布时间】:2014-02-19 18:23:19
【问题描述】:

我正在尝试比较命令的输出

`ls -l directory` 

使用我使用相同命令创建的文件。 (我正在尝试一个穷人的方法来确保没有文件被修改。)

问题是,我不知道如何将 diff 的输出与我创建的文件一起使用 ls 命令。我尝试了以下方法,但每次都不起作用

diff file.ls <(ls -l directory)
ls -l directory | xargs diff file.ls
ls -l directory | diff file.ls
diff file.ls < `ls -l directory`

ls 的输出与我已经保存的文件进行比较的神奇命令是什么?

【问题讨论】:

  • 你说的不起作用是什么意思?系统是否挂起,您是否看到 BSOD,您是否遇到雷电,什么?
  • 另外,不要parse ls
  • diff file.ls &lt;(ls -l directory) 有什么问题?
  • 看看它们是否不同:if diff -q f1 f2; then echo same; fi
  • @thatotherguy 哎呀。 diff file.ls &lt;(ls -l directory) 的输出为空白,因为没有区别。

标签: linux bash diff ls


【解决方案1】:

答案(为后代)是执行以下操作

diff file.ls <(ls -l directory)

当我之前这样做时,输出是空白的。我以为我做错了;实际上目录的内容和我的文件没有区别。

【讨论】:

  • 为了记录,你也可以这样做:ls -l | diff - file.ls。我不认为这在效率上有显着差异,但它更容易移植到bash以外的shell...
  • @twalberg 我会选择ls -l | diff file.ls -,这样我就可以在脑海中保持左/右直。
  • @robert 我会接受这个答案。 StackOverflow 让我在接受自己的答案之前等待两天。
【解决方案2】:

diff 在比较文件时最容易。

$ ls $DIR > original.ls
do some stuff
$ ls $DIR > new.ls
$ diff original.ls new.ls

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 2019-08-20
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多