打印 shell 运行的命令

打印 shell 运行的命令

我正在尝试使用 awk 将一个目录中不存在的文件复制到另一个目录

diff -r dir1 dir2 | grep dir1 | awk '{$1=$2=$3 =""; print "cp \"./dir1/" substr($0,4) "\" ./dir2/"}' | sh

cp ./dir1/file1.txt ./dir2/这很好,只是我还想打印正在复制的文件。stdout

我该怎么做?我知道这很简单,但我搞不懂。我试过tee命令echo,但徒劳无功。

答案1

您可以使用|sh -x。来自手册页:

 -x xtrace
         Write each command (preceded by the value of the PS4 variable
         subjected to parameter expansion and arithmetic expansion) to
         standard error before it is executed.  Useful for debugging.

因此 shell 将打印stderr所有执行的命令。并且您可以使用 stderr 重定向,例如|sh -x 2>commands_list.txt在单独的文件中获取命令列表。

答案2

cp可以告诉你它在做什么,这是选项

-v, --verbose
          explain what is being done

将哪些文件复制到了哪里打印到标准输出,格式如下:

‘file1’ -> ‘file2’

相关内容