0

Beyond Compareは、2つのnautilusスクリプト(に格納されている)を使用して、「Selectforcompare」と「ComparetoSelected」を提供します/home/user/.gnome2/nautilus-scripts

スクリプト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に対して同様のスクリプトを実行しようとしていますが、機能していません。

私はシェルスクリプトに精通していません。誰かが私がこれを理解するのを手伝ってもらえますか?

quoted=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | awk 'BEGIN { FS = "\n" } { printf "\"%s\" ", $1 }' | sed -e s#\"\"##)

私が融合に適応できるように。

4

3 に答える 3

3

学習のために独自のソリューションを展開していない場合は、diff-ext拡張機能を nautilus にインストールすることをお勧めします。これはクロス プラットフォームであり、Debian/Ubuntu を実行している場合、インストールは簡単sudo apt-get install diff-extです。

ここでいくつかのスクリーンショットをチェックしてください - http://diff-ext.sourceforge.net/screenshots.shtml

于 2011-07-07T19:29:14.197 に答える
1

quoted=$( ...) は、そこにあるすべての出力を quoted という名前の変数に割り当て、後でスクリプトで $quoted OR ${quoted} OR "${quoted}" OR "$quoted" として使用できます。

「|」char は unix/linux では「パイプ」と呼ばれ、前のコマンドの出力を接続して次のコマンドにフィードします。

スクリプトを 1 つずつ分解して、その動作を確認するだけです。

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=$(....)は機能せず、エラー メッセージが生成されます。おそらく、あなたのシステムは実際に /bin/sh に bash を使用しています。「shebang」を#! /bin/bash.

これが役立つことを願っています。

于 2011-05-11T15:27:19.887 に答える
0

この投稿のおかげで diff-ext を発見しました。

最初の試行は失敗しました。デフォルトでは、diff-ext はバックアップ ファイル (*~ および *.bak) を処理しません。これを有効にするには、次を実行します。

$ diff-ext-setup

をクリックし、Mime typesペインで をチェックしapplication/x-trashます。

これで、ファイルとそのバックアップを比較できます。

于 2012-10-29T11:29:39.457 に答える