我在本地和服务器上都有一个文件。我首先尝试rsync
在“dry-run”模式下运行,看看文件之间是否存在一些差异:
$ rsync -aP --dry-run USER@192.168.0.55:/home/dir .
USER@192.168.0.55's password:
receiving incremental file list
dir/myfile.txt
Run Code Online (Sandbox Code Playgroud)
这显然意味着该文件dir/myfile.txt
不同,因为它将被更新。然后我用以下命令检查相同的文件diff
:
$ ssh USER@192.168.0.55 'cat /home/dir/myfile.txt' | diff --report-identical-files - dir/myfile.txt
USER@192.168.0.55's password:
Files - and dir/myfile.txt are identical
Run Code Online (Sandbox Code Playgroud)
因此,显然这些文件是相同的。
为什么rsync
要更新这个文件 - 我如何从命令行确认原因?
我刚刚意识到history
在子 shell 中不会输出任何内容。我将尝试通过计算行数来显示 - 首先使用 echo 进行健全性检查:
$ echo a | wc -l
1
Run Code Online (Sandbox Code Playgroud)
...并在子外壳中:
bash -c 'echo a' | wc -l
1
Run Code Online (Sandbox Code Playgroud)
事实上,我们期望在这两种情况下都有一行输出。现在,对于history
:
$ history | wc -l
681
Run Code Online (Sandbox Code Playgroud)
...但在子外壳中:
$ bash -c 'history' | wc -l
0
Run Code Online (Sandbox Code Playgroud)
...history
不返回任何行。
为什么会发生这种情况 - 如何history
在子 shell 中输出当前 shell 的历史记录(包括最后一个会话命令)?