Meld Nautilus上下文菜单的Shell脚本

时间:2011-05-11 03:17:03

标签: linux shell nautilus meld

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#\"\"##)

这样我才能适应融合。

3 个答案:

答案 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

现在您可以比较文件及其备份。

相关问题