Beyond Compare使用两个nautilus脚本(存储在/home/user/.gnome2/nautilus-scripts
中)提供“Select for compare”和“Compare to Selected”。
脚本1:选择进行比较
#!/bin/sh
quoted=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | awk 'BEGIN { FS = "\n" } { printf "\"%s\" ", $1 }' | sed -e s#\"\"##)
echo "$quoted" > $HOME/.beyondcompare/nautilus
脚本2:与选定的
比较#!/bin/sh
arg2=$(cat $HOME/.beyondcompare/nautilus)
arg1=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | awk 'BEGIN { FS = "\n" } { printf "\"%s\" ", $1 }' | sed -e s#\"\"##)
bcompare $arg1 $arg2
我正在尝试为Meld执行类似的脚本,但它无效。
我不熟悉shell脚本。任何人都可以帮助我理解这一点:
quoted=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | awk 'BEGIN { FS = "\n" } { printf "\"%s\" ", $1 }' | sed -e s#\"\"##)
这样我才能适应融合。
答案 0 :(得分:3)
如果您不是为了学习而推出自己的解决方案,我建议您将diff-ext
扩展名安装到nautilus。它是跨平台的,如果您运行Debian / Ubuntu,它应该像sudo apt-get install diff-ext
一样简单。
点击此处的一些屏幕截图 - http://diff-ext.sourceforge.net/screenshots.shtml
答案 1 :(得分:1)
quoted = $(...)将所有输出分配给名为quoted的变量,稍后可以在脚本中用作$ quoted OR $ {quoted}或“$ {quoted}”或“$ quoted” “
'|' char在unix / linux中称为“管道”,它将前面命令的输出连接到以下命令。
所以你只需将剧本分开一件,看看它的作用,
quoted=$(
# I would execute below by itself first
echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
# then add on this piped program to see how data gets transformed
| awk 'BEGIN { FS = "\n" } { printf "\"%s\" ", $1 }'
# then add this
| sed -e s#\"\"##
# the capturing of the output to the var 'quoted' is the final step of code
)
# you **cannot** copy paste this whole block of code and expect it to work ;-)
我不知道$ NAUTILUS_SCRIPT_SELECTED_FILE_PATHS应该是什么,所以很难在这里向您展示。并且,该变量未在此处指定的任何代码中定义,因此当您echo
其值时,您可能只会得到一个空行。准备好对如何设置该值以及正确的值进行一些研究。
另外,我注意到您的代码被“加前缀”为#!/bin/sh
。如果它是真正的/ bin / sh那么命令替换如quoted=$(....)
将不起作用并且应该生成错误消息。可能你的系统真正使用bash for / bin / sh。通过将'shebang'更改为#! /bin/bash
,您可以在将来消除任何可能的混淆(当更改为/ bin / sh = bourne shell的系统时)。
我希望这会有所帮助。
答案 2 :(得分:0)
我刚刚发现了diff-ext,感谢这篇文章,非常好!
我做的第一次尝试失败:默认情况下,diff-ext不处理备份文件(*〜和* .bak)。要启用此功能,请运行:
$ diff-ext-setup
并在Mime types
窗格中,选中application/x-trash
。
现在您可以比较文件及其备份。