ฉันจะ“ แตกต่าง” สองไฟล์ด้วย Nautilus ได้อย่างไร


16

ฉันติดตั้ง Meld แล้วและพบว่าเป็นเครื่องมือเปรียบเทียบที่ยอดเยี่ยม น่าเสียดายที่ไม่มีการรวมกับ Nautilus 3.2 ซึ่งหมายความว่าฉันไม่สามารถคลิกขวาที่ไฟล์และเลือกตัวเลือกเพื่อเปิดใน Meld เพื่อทำการเปรียบเทียบ

ฉันเห็นในความคิดเห็นเครื่องมือว่าเครื่องมือจำเป็นต้องติดตั้งแพ็กเกจdiff-ext แพ็คเกจนี้ถูกลบออกจากจักรวาลของ Ubuntu ฉันเดาเพราะ gtk 3.0 แม้ว่าผมจะดาวน์โหลดได้ด้วยตนเองจากแหล่งปลอมdiff-ต่อแพคเกจเมื่อฉันพยายามที่จะกำหนดค่าการตรวจสอบล้มเหลวด้วยข้อความ:

checking for DIFF_EXT... configure: error: Package requirements (libnautilus-extension >= 2.14.0 gconf-2.0 >= 2.14.0 gnome-vfs-module-2.0 >= 2.14) were not met:

No package 'libnautilus-extension' found
No package 'gconf-2.0' found
No package 'gnome-vfs-module-2.0' found

ตกลงดังนั้นจากผลลัพธ์นี้ฉันรวบรวมว่า gtk 2 จริง ๆ จะต้องติดตั้งส่วนขยาย diff ไปยัง nautilus

ตอนนี้คำถามของฉันคือ: มีความเป็นไปได้ที่จะรวม Meld เข้ากับ Nautilus หรือไม่? หรือมีเครื่องมืออื่น ๆ ที่ทำงานร่วมกับ Nautilus ปัจจุบันหรือไม่? ดังนั้นตาม gtk3

ฉันใช้ Ubuntu 11.10 ถ้ายังมีข้อสงสัยอยู่

คำตอบ:


20

มีส่วนขยายหลามที่มีประโยชน์ที่รวม Meld เข้ากับ Nautilus

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ติดตั้งอย่างไร

ขอรับต้นฉบับหรือแพคเกจ deb จากเว็บไซต์ของผู้เขียน

wget http://www.giuspen.com/software/nautilus-pyextensions_3.4.1-1_all.deb

sudo apt-get install python-nautilus
sudo dpkg -i nautilus-pyextensions_3.4.1-1_all.deb

ค้นหาpyextensionใน Dash และเรียกPyExtension Nautilus

เปิดใช้งานส่วนขยาย meld (ติดตั้งหากถูกถาม) และคลิกตัวเลือกแถบเครื่องมือรีสตาร์ท Nautilus

ข้อผิดพลาด GConf

ในกรณีที่คุณพบข้อผิดพลาดเกี่ยวกับ GConf เมื่อพยายามเปิด Nautilus PyExtension ให้ติดตั้ง "gobject-introspection" และ "gir1.2-gconf-2.0":

sudo apt-get install gobject-introspection
sudo apt-get install gir1.2-gconf-2.0

ขอบคุณมันใช้งานได้ดีมาก นอกจากนี้ขอขอบคุณที่สละเวลาในการถ่ายภาพหน้าจอและสร้างคำอธิบายการติดตั้งอย่างรวดเร็ว ดีเสมอที่จะได้รับคำตอบจากคุณ
bioShark

meldมันยอดเยี่ยมมาก เคล็ดลับการรวมที่ยอดเยี่ยม
belacqua

11

คุณยังสามารถติดตั้งแพ็คเกจเปรียบเทียบ nautilus ซึ่งมีให้ใช้งาน (เริ่มต้นด้วย Ubuntu 12.04) จากที่เก็บแพคเกจมาตรฐานของ Ubuntu - รันสิ่งต่อไปนี้จากเทอร์มินัล:

sudo apt-get install nautilus-compare

นี่เป็นตัวเลือกเมนูหอยโข่งสำหรับการเปรียบเทียบแบบ 2 ทางและ 3 ทาง Meld ถูกใช้เป็นค่าเริ่มต้น แต่แอปพลิเคชัน diff ที่ผู้ใช้กำหนดเองใด ๆ สามารถใช้ได้

ข้อได้เปรียบที่สำคัญของโซลูชันนี้คือสามารถเปรียบเทียบไฟล์หรือโฟลเดอร์ที่อยู่ในไดเรกทอรีที่แตกต่างกัน (เช่น/home/user/a/b/c/file.txtและ/home/user/d/e/f/otherfile.txtสามารถเปิดได้ในหน้าต่าง Nautilus ที่แตกต่างกันและเปรียบเทียบกัน)


3

สคริปต์ Nautilus

ทางเลือกที่ง่ายและมีประสิทธิภาพมากขึ้นในการติดตั้งส่วนขยายเฉพาะจะใช้สคริปต์ Nautilus เช่นเดียวกับสิ่งต่อไปนี้:

#!/bin/bash
meld "$@"

คำแนะนำในการติดตั้ง: ฉันจะติดตั้งสคริปต์ Nautilus ได้อย่างไร


นี่เป็นทางออกที่ดีที่สุดได้อย่างง่ายดาย มันหลีกเลี่ยงการติดตั้ง pkgs อื่น ๆ และค่าใช้จ่ายที่เกี่ยวข้อง ขอบคุณ @Glutanimate
u2n

2

ใช้ Nautilus เพื่อเปรียบเทียบไฟล์กับคลิปบอร์ดที่มีข้อความ

คำตอบนี้ใช้เพื่อเปรียบเทียบไฟล์กับข้อความในคลิปบอร์ดที่คัดลอกมาจากอินเทอร์เน็ต ข้อความคลิปบอร์ดอาจถูกคัดลอกมาจากไฟล์อื่นบนระบบของคุณ - ทำให้นี่เป็นคำตอบที่เหมาะสม

ความแตกต่างของไฟล์จะถูกเน้นใช้พื้นเมืองทุบตีของคำสั่งและจากนั้นแสดงโดยใช้diff geditสิ่งนี้สามารถปรับเปลี่ยนเป็นmeldหรือแพ็คเกจอื่น ๆ ได้

คำตอบนี้ใช้ฟังก์ชันในตัวของ Nautilus เพื่อเรียกใช้สคริปต์ที่กำหนดเองหลังจากเลือกไฟล์:

#!/bin/bash

# NAME: clipboard-diff
# PATH: $HOME/.local/share/nautilus/scripts
# DESC: Find differences bewteen selected file on disk and clipboard.
# CALL: Called from Nautilus file manager.
# DATE: March 18, 2017. Modified: March 31, 2017.

# NOTE: The clipboard would contain text highlighted on website and copied
#       with <ctrl>+<C>. Requires command `xclip` to be installed.

# Must have the xclip package. On Ubuntu 16.04, not installed by default
command -v xclip >/dev/null 2>&1 || { zenity --error --text "Install xclip using: 'sudo apt install xclip' to use this script.  Aborting."; exit 99; }

# strip new line char passed by Nautilus
FILENAME=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed -e 's/\r//g')

# Multiple files can't be selected.
LINE_COUNT=$(wc -l <<< "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
LINE_COUNT=$((LINE_COUNT-1))

if [[ $LINE_COUNT > 1 ]] ; then
    zenity --error --text "Ony one file can be selected at a time! "
    exit 1
fi

# Object type must be "file..." (ie no directories, etc.)
if [ -d "${FILENAME}" ] ; then
    zenity --error --text "$FILENAME is a directory!";
    exit 1
else
    if [ -f "${FILENAME}" ]; then
        : # Bash noop
    else
        zenity --error --text "${FILENAME} is not a file!";
        exit 2
    fi
fi

# Get clipboard contents into working file
workfile="/tmp/clipboard-work-"$(date +%s)
xclip -o > $workfile

# Create temporary file name so two or more open instances won't clash
differences="/tmp/clipboard-diff-"$(date +%s)

# Compare file differences
# -q brief -B ignore blank lines, -u only differences
diff --unified=2 -w -b -B -I --suppress-blank-empty \
        --suppress-common-lines --ignore-all-space \
        ${FILENAME} $workfile > $differences

# If file doesn't exist, errors in diff parameters
# If file size =0 there were no differences
if [[ -f $differences ]] ; then
    if [[ -s $differences ]] ; then
        # File not empty.
        gedit $differences
    else    
        zenity --info --text "$workfile matches $differences"
    fi
else
    zenity --error --text "cliboard-diff - error in diff parameters."
fi

# clean up /tmp directory
rm $workfile
rm $differences

exit 0

หมายเหตุ:ฉันพัฒนาสคริปต์ Nautilus นี้เมื่อสองสามสัปดาห์ที่ผ่านมาและมีความหมายที่จะโพสต์เป็นคำถามและคำตอบใหม่ แต่ได้รับการกดดันมาเป็นระยะเวลาหนึ่งและไม่แน่ใจว่าใครจะสนใจสิ่งนั้นทั้งหมด

ตัวอย่างผลลัพธ์

คลิปบอร์ด - ต่าง 1

ในตัวอย่างนี้เรากำลังเปรียบเทียบสคริปต์จริงที่โพสต์ไว้ที่นี่ใน AU ก่อนวันที่ 31 มีนาคม 2017 กับรุ่นที่ได้รับการแก้ไขในวันที่ 31 มีนาคม 2017 สังเกตว่าการตั้งค่าข้อมูลและข้อความแสดงข้อผิดพลาดใหม่เป็นอย่างไร

diffคำสั่งจะมีประสิทธิภาพมากและเป็นเช่นนี้มีมากมายของพารามิเตอร์ควบคุม พิมพ์man diffเทอร์มินัลสำหรับหน้าคู่มือหรือinfo diffรายละเอียดการใช้คำสั่งเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.