Скрипты оболочки для контекстного меню Meld Nautilus - PullRequest
0 голосов
/ 11 мая 2011

Beyond Compare предоставляет «Выбрать для сравнения» и «Сравнить с выбранным», используя два сценария nautilus (хранятся в /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#\"\"##)

, чтобы я мог адаптироваться к комбинации.

Ответы [ 3 ]

3 голосов
/ 07 июля 2011

Если вы не пользуетесь собственным решением ради обучения, я бы предложил установить расширение diff-ext для nautilus.Он кроссплатформенный, и если вы работаете с Debian / Ubuntu, его установка должна быть такой простой, как sudo apt-get install diff-ext.

Посмотрите скриншоты здесь - http://diff -ext.sourceforge.net / screenshots.SHTML

1 голос
/ 11 мая 2011

Кавычка = $ (...) присваивает любые выходные данные переменной с именем кавычки и может быть использована позже в скрипте как кавычка ИЛИ $ цитируется ИЛИ "$ {цитируется" ИЛИ $ цитируется"

'|'char называется 'pipe' в 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=$(....), не будет работать и должна выдать сообщение об ошибке.Вероятно, ваша система действительно использует bash для / bin / sh.Вы можете устранить любую возможную путаницу в будущем (при переходе на систему, в которой / bin / sh = оболочка bourne), изменив 'shebang' на #! /bin/bash.

Надеюсь, это поможет.

0 голосов
/ 29 октября 2012

Я только что обнаружил diff-ext благодаря этому сообщению, отлично!

Первая попытка не удалась: по умолчанию diff-ext не обрабатывает файлы резервных копий (* ~ и * .bak).Чтобы включить это, запустите:

$ diff-ext-setup

и на панели Mime types отметьте application/x-trash.

Теперь вы можете сравнить файл и его резервную копию.

...