Làm cách nào để sử dụng AppleScript để tạo tệp Rich Text Format mới từ văn bản clipboard?


4

Tôi có một Dịch vụ tự động lấy văn bản hiện tại trên bảng tạm và ghi nó vào một tệp .txt mới. Điều này được thực hiện đơn giản với đoạn mã AppleScript sau:

do shell script "pbpaste > /path/to/your/clipboard-file.txt"

Mã này là từ câu trả lời Stack Overflow sau đây:

AppleScript để dán văn bản từ clipboard vào một tệp

Tuy nhiên, mã này chuyển đổi nội dung của bảng tạm thành văn bản thuần túy, loại bỏ tất cả các định dạng của văn bản.

Có thể sử dụng AppleScript để ghi nội dung clipboard vào tệp .rtf hoặc .rtfd, trong khi vẫn giữ nguyên định dạng ban đầu của nội dung clipboard? Theo định dạng ban đầu, tôi đang đề cập đến các dữ liệu phong cách như nhấn mạnh kiểu chữ (đậm, in nghiêng, gạch chân), kích thước phông chữ và màu văn bản.

Trong một ý thích bất chợt, tôi đã thử lệnh sau:

do shell script "pbpaste > /path/to/your/clipboard-file.rtf"

Nhưng lệnh này dẫn đến một tệp .rtf mà máy tính của tôi không thể đọc hoặc mở.


Tôi đã cập nhật câu trả lời của mình để hoạt động với cả nội dung RTF và HTML Clipboard.
user3439894

Có phải câu trả lời cập nhật của tôi làm việc cho bạn?
user3439894

Câu trả lời:


5

Câu trả lời này đã được cập nhật để phản ánh quả cầu rubik hiểu nhầm giữa Rich Text là gì (những gì ban đầu được hỏi về) và những gì thực sự được làm việc với Google Chrome, là HTML. (Xem bình luận chuyển đến trò chuyện .)

Tôi đang để lại câu trả lời ban đầu và bên dưới nội dung mới này, vì về mặt kỹ thuật nó trả lời câu hỏi ban đầu khi được hỏi. Nó cũng chứa thông tin liên quan đến toàn bộ quá trình xử lý nội dung Clipboard trong bối cảnh câu hỏi gốc và sửa đổi.

Các dưới đây là ví dụ được kiểm tra và chạy trong (Apple) Script Editor, ngoài câu đầu tiên trong câu hỏi, chưa có cách sử dụng rõ ràng và cụ thể nào trong Automator, tuy nhiên, đã được đưa ra. Các có thể cần phải được chỉnh sửa để hoạt động trong phạm vi sử dụng không xác định trong Automator. Điều đó nói rằng, như đã viết, nếu toàn bộ kịch bản bên dưới được đặt chính nó vào một hành động Run AppleScript, tự nó, trong Automator ... nó hoạt động như bình thường. Nếu chỉ sử dụng các phân đoạn của , một số thay đổi đối với hiện tại có thể cần phải được thực hiện.

Các bên dưới chứa đủ bình luận để hiểu tổng thể những gì kịch bản đang làm


--        # 
--        # Change the 'New RichText Filename.rtf' name to the wanted filename for the target file.
--        # Make sure you leave the double-quotes even if the filename does not contain spaces!
--        # Note that '(path to desktop as text)' can also be modified as needed, e.g. changed to,
--        # '(path to documents folder as text)' or the entire segment after 'set theRichTextFileName to'
--        # can be a fully qualified POSIX pathname, e.g.: set theRichTextFileName to "/path/to/filename.rtf"
--        #  

set theRichTextFileName to POSIX path of (path to desktop as text) & "New RichText Filename.rtf"


--    #        THE REMAINING CODE SHOULD NOT NEED TO BE MODIFIED.
--    # 
--    #     Note: This code, as is, works as written and intended when run from within (Apple) Script Editor.
--    #     Some AppleScript code when wrapped in Automator may not work the same as in (Apple) Script Editor.
--    #     In cases where is does not work from a Run AppleScript action in Automator, editing will be required.
--    # 
--    #     This AppleScript code preforms the following actions, sans errors caught during File I/O operations.
--    # 
--    # 1. See it the target file exists and prompts to be overwritten if it does. If yes is selected, it continues.
--    # 
--    # 2. If the Clipboard contains RTF content, writes it to the target file using plain AppleScript.
--    # 
--    # 3. If the Clipboard contains HTML content, writes it to the target file as RTF using a 'do shell script' command.
--    # 
--    # 4. If the Clipboard does not contain any RTF/HTML content, notify the user. 
--
--        #    Notes: The 'do shell script' makes use of the following:
--        #
--        #    'osascript' to get the HTML content from the Clipboard.
--        #    The content is a Hex stream within a data wrapper and
--        #    'awk' will be used to remove/replace the data wrapper.
--        #
--        #    'awk' to remove the data wrapper from 'osascript' output
--        #    replacing it with proper HTML opening/closing Tags to
--        #    ensure it actually gets processed by 'textutil' after 'xxd'.
--        #    Without the HTML opening/closing Tags 'textutil' does not 
--        #    properly, within limits, convert the HTML Clipboard content to RTF.
--        #
--        #    'xxd' to convert the Hex data from 'osascript/awk' to ASCII text.
--        #
--        #    'textutil' to convert the ASCII text HTML from 'xxd' to RTF
--        #    formatted data and write it to the target file.


tell application "Finder"

    if exists theRichTextFileName as POSIX file then
        tell current application
            display dialog "The file \"" & theRichTextFileName & "\" already exists!" & "\n\n" & "Do you want to overwrite the file?" buttons {"No", "Yes"} default button 1 with title "File Already Exists..." with icon caution

            if the button returned of the result is "No" then
                return
            else
                tell application "Finder"
                    delete the file (theRichTextFileName as POSIX file)
                end tell
            end if
        end tell
    end if

    tell current application

        --    # Find out what class types are available for the Clipboard content
        --    # and use this information to determine which action will be taken.

        set cbInfo to get (clipboard info) as string

        if cbInfo contains "RTF" then

            try
                set richTextfromClipboard to get the clipboard as «class RTF »
            on error eStr number eNum
                display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with icon caution
                return
            end try
            try
                set fileHandle to open for access theRichTextFileName with write permission
                write richTextfromClipboard to fileHandle
                close access fileHandle
            on error eStr number eNum
                display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with title "File I/O Error..." with icon caution
                try
                    close access fileHandle
                end try
            end try

        else if cbInfo contains "HTML" then

            try
                do shell script "osascript -e 'try' -e 'get the clipboard as «class HTML»' -e 'end try' | awk '{sub(/«data HTML/, \"3C68746D6C3E\") sub(/»/, \"3C2F68746D6C3E\")} {print}' | xxd -r -p | textutil -convert rtf -stdin -stdout > " & quoted form of theRichTextFileName
            on error eStr number eNum
                display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with icon caution
            end try

        else

            display dialog "The Clipboard does not contain\nany usable RTF/HTML content!" buttons {"OK"} default button 1 with title "No RTF/HTML Content on Clipboard..." with icon caution

        end if

    end tell

end tell

Câu trả lời gốc cho câu hỏi ban đầu được hỏi:

Để có được Văn bản phong phú Nội dung từ Clipboard thành một tập tin sử dụng AppleScript , nó phức tạp hơn một chút rồi đơn giản do shell script chỉ huy .

Ví dụ AppleScript dưới đây sẽ, nếu mục tiêu tập tin không tồn tại và nếu Văn bản phong phú Nội dung tồn tại trên Clipboard , viết nó cho một tập tin . Nó sẽ có tất cả thuộc tính như RichText Nội dung trên Clipboard có, như đã làm khi được sao chép vào Clipboard .

Mở Biên tập kịch bản và sao chép và dán dưới đây thành một cái mới Chưa có tiêu đề tài liệu và sau đó chạy nó từ Biên tập kịch bản , xem xét đầu ra trong Sự kiện / Trả lời . Chạy nó một vài lần, có và không có Văn bản phong phú Nội dung trên Clipboard và có và không có sự tồn tại của tập tin , trên ổ cứng, được xác định bởi set theRichTextFileName ... khi bắt đầu kịch bản .

Bạn sẽ thấy đảm bảo tập tin không tồn tại, để không ghi đè lên một lối thoát tập tin của tên và vị trí mục tiêu và nếu Clipboard không chứa Văn bản phong phú Nội dung , nó cũng hiển thị một thông báo cho điều đó.

Bây giờ nếu sử dụng điều này trong một Dịch vụ tự động ví dụ: ở đâu Dịch vụ nhận văn bản phong phú được chọn , sau đó có thể được sửa đổi để không mắc lỗi nếu Văn bản phong phú Nội dung không phải trên Clipboard như dịch vụ sẽ không xuất hiện trên Dịch vụ thực đơn nếu Văn bản phong phú không được chọn trong một tài liệu. Ngoài ra nếu bạn muốn ghi đè lên mục tiêu tập tin tại vị trí được chỉ định của nó xung quanh đó có thể được gỡ bỏ quá. Tôi sẽ cho những người đó ví dụ là tốt


Thí dụ dán vào Biên tập kịch bản để thử nghiệm và xem xét:

set theRichTextFileName to POSIX path of (path to documents folder as text) & "New RichText Filename.rtf"

tell application "Finder"
    if exists theRichTextFileName as POSIX file then
        tell current application
            display dialog "The file \"" & theRichTextFileName & "\" already exists!" buttons {"OK"} default button 1 with title "File Already Exists..." with icon caution
        end tell
    else
        tell current application
            try
                set richTextfromClipboard to get the clipboard as «class RTF »
            on error eStr number eNum
                display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with title "No Rich Text Content on Clipboard..." with icon caution
                return
            end try
            try
                set fileHandle to open for access theRichTextFileName with write permission
                write richTextfromClipboard to fileHandle
                close access fileHandle
            on error eStr number eNum
                display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with title "File I/O Error..." with icon caution
                try
                    close access fileHandle
                end try
                return
            end try
        end tell
    end if
end tell

Thí dụ để sử dụng trong một Dịch vụ tự động ví dụ: ở đâu Dịch vụ nhận văn bản phong phú được chọn :

set theRichTextFileName to POSIX path of (path to documents folder as text) & "New RichText Filename.rtf"

tell application "Finder"
    if exists theRichTextFileName as POSIX file then
        tell current application
            display dialog "The file \"" & theRichTextFileName & "\" already exists!" buttons {"OK"} default button 1 with title "File Already Exists..." with icon caution
        end tell
    else
        tell current application
            set richTextfromClipboard to get the clipboard as «class RTF »
            set fileHandle to open for access theRichTextFileName with write permission
            write richTextfromClipboard to fileHandle
            close access fileHandle
        end tell
    end if
end tell

Thí dụ để sử dụng trong một Dịch vụ tự động ví dụ: ở đâu Dịch vụ nhận văn bản phong phú được chọn và ghi đè lên mục tiêu hiện có tập tin :

set theRichTextFileName to POSIX path of (path to documents folder as text) & "New RichText Filename.rtf"

tell current application
    set richTextfromClipboard to get the clipboard as «class RTF »
    set fileHandle to open for access theRichTextFileName with write permission
    write richTextfromClipboard to fileHandle
    close access fileHandle
end tell

Hình ảnh dưới đây là một ví dụ Dịch vụ tự động tạo ra Tên tệp RichText mới.rtf tập tin từ lựa chọn Văn bản phong phú từ Tạo tệp Rich Text từ Clipboard dịch vụ trên Menu ngữ cảnh dịch vụ (bằng cách nhấp chuột phải) hoặc Tên ứng dụng & gt; Dịch vụ & gt; thực đơn , khi nào Văn bản phong phú được chọn trong một tài liệu.

Automator Service - Create Rich Text file from Clipboard


Bây giờ đây chỉ là các ví dụ và logic bổ sung có thể được mã hóa để điều chỉnh nó để đáp ứng nhu cầu của họ. Ví dụ có thể được thêm vào để tự động tăng tên tệp hiện có để không ghi đè lên hoặc nhắc nhở tên tệp mới và hoàn tất thao tác so với hủy bỏ thông báo rằng tệp đã tồn tại, v.v.


Cập nhật để sử dụng với do shell script chỉ huy :

Nếu bạn thực sự muốn làm điều đó bằng cách sử dụng một do shell script chỉ huy , sau đó sử dụng như sau trong khi thay thế /path/to/new rich text file.rtf có giá trị tên tệp đường dẫn đến một vị trí bạn có quyền ghi. Lưu ý không loại bỏ \" trước và sau /path/to/new rich text file.rtf trong thực tế chỉ huy vì điều này xử lý tên tệp đường dẫn nếu chứa không gian. Nếu tên tệp đường dẫn không chứa khoảng trắng, sau đó \" trước và sau /path/to/new rich text file.rtf không cần sử dụng

do shell script "osascript -e 'try' -e 'get the clipboard as «class RTF »' -e 'end try' | awk '{print substr($0, 12, length($0)-13)}' | xxd -r -p > \"/path/to/new rich text file.rtf\""

Đây là chỉ huy dòng hiển thị dưới dạng văn bản được bọc, để xem dễ dàng hơn:

do shell script "osascript -e 'try' -e 'get the clipboard as «class RTF »' -e 'end try' | awk '{print substr($0, 12, length($0)-13)}' | xxd -r -p > \"/path/to/new rich text file.rtf\""

  • Trong khi người ta có thể sao chép và dán (khuyên dùng) , tuy nhiên đây là cách nhập Dấu ngoặc kép, cũng có sẵn trong Dấu ngoặc đơn trong các ký tự (đặc biệt), ví dụ: Tùy chọn chỉ huy T trong TextEdit.

    Lưu ý: Hãy ghi nhớ khoảng cách trong «class RTF » có nghĩa là được bù trong trường hợp sử dụng này.

    • Đánh dấu dấu ngoặc kép

      • «Dấu ngoặc kép góc trái, nhấn: Tùy chọn \
      • »Dấu ngoặc kép góc phải, nhấn: ca Tùy chọn \

Lưu ý rằng, như đã viết, cái này do shell script chỉ huy ghi đè tập tin đầu ra nếu nó đã tồn tại, mà không cần nhắc! Nó sẽ là tệp có độ dài bằng 0 nếu Clipboard không chứa bất kỳ nội dung Rich Text nào, nếu không, tệp sẽ có độ dài cần thiết để chứa nội dung Rich Text từ Clipboard. Rõ ràng, logic bổ sung có thể được mã hóa vào osascript chỉ huy tuy nhiên nếu bạn cần sự phức tạp hơn thì tốt hơn hết bạn nên sử dụng phương pháp được trình bày trước tiên trong câu trả lời này. Hoặc sử dụng một tập lệnh bên ngoài được gọi bởi do shell script chỉ huy xử lý tất cả những gì cần thiết logic xử lý lỗi dựa trên mức độ phức tạp của các điều kiện tổng thể, điều này sẽ được áp dụng theo.

  • Tại sao phức tạp như vậy so với do shell script "pbpaste > /path/to/clipboard-file.rtf"?

Đó là một câu hỏi hay và trong khi pbpaste-Prefer {txt | rtf | ps} tùy chọn, dù sao pbpaste -Prefer rtf có thể không xuất ra Rich Text ngay cả khi nó tồn tại trên Clipboard. Hoặc những gì nó xuất ra, nếu không phải là Văn bản ASCII, sẽ không phải là một dạng Văn bản phong phú được hiểu, ví dụ như TextEdit và hoặc sẽ không chứa tất cả Văn bản có định dạng thuộc tính nếu có, nội dung Clipboard chứa.

Điều này khiến bạn cần có nội dung Rich Text trên Clipboard theo cách khác và tại sao get the clipboard as «class RTF » đang được sử dụng thay thế. Khi sử dụng một do shell script chỉ huy với điều này, nó đòi hỏi xử lý bổ sung để sử dụng dữ liệu trở lại, vì nó trong một dữ liệu bao bọc khi trả lại và không thể sử dụng ngay, do đó cần xử lý thêm.

Ví dụ Hello World! trong Văn bản có định dạng trên Clipboard có thể trông như thế này trong Văn bản ASCII:

{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
{\fonttbl\f0\fnil\fcharset0 ComicSansMS;}
{\colortbl;\red255\green255\blue255;}
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural

\f0\b\fs36 \cf0 Hello World!}

Thật không may, định dạng trên không dễ sử dụng, nếu có, trong AppleScript và tôi tin rằng đó là lý do tại sao bị lấy khi Hex được mã hóa dữ liệu bắt buộc.

  • Tôi dựa trên thực tế rằng mặc dù get clipboard info chỉ huy cho nội dung Clipboard trong ví dụ này trả về {«class RTF », 265} Tuy nhiên, trong số các thông tin được trả về, trong khi dạng Văn bản ASCII của nội dung Rich Text này dài 265 byte, nó được trả về ở định dạng Hex với hơn hai lần byte với gói dữ liệu . Thực tế là nó đã trở lại trong Hex bởi get the clipboard as «class RTF » trong cả Trình chỉnh sửa tập lệnh hoặc sử dụng osascript ủng hộ giả định này.

Đây là như nhau Hello World! trong Rich Text trên Clipboard trong Hex:

7B5C727466315C616E73695C616E7369637067313235325C636F636F61727466313138375C636F636F617375627274663430300A7B5C666F6E7474626C5C66305C666E696C5C66636861727365743020436F6D696353616E734D533B7D0A7B5C636F6C6F7274626C3B5C7265643235355C677265656E3235355C626C75653235353B7D0A5C706172645C74783732305C7478313434305C7478323136305C7478323838305C7478333630305C7478343332305C7478353034305C7478353736305C7478363438305C7478373230305C7478373932305C7478383634305C7061726469726E61747572616C0A0A5C66305C625C66733336205C6366302048656C6C6F20576F726C64217D

Tuy nhiên, những gì được trả lại bởi get the clipboard as «class RTF » cho Hello World! ví dụ trên là:

«data RTF 7B5C727466315C616E73695C616E7369637067313235325C636F636F61727466313138375C636F636F617375627274663430300A7B5C666F6E7474626C5C66305C666E696C5C66636861727365743020436F6D696353616E734D533B7D0A7B5C636F6C6F7274626C3B5C7265643235355C677265656E3235355C626C75653235353B7D0A5C706172645C74783732305C7478313434305C7478323136305C7478323838305C7478333630305C7478343332305C7478353034305C7478353736305C7478363438305C7478373230305C7478373932305C7478383634305C7061726469726E61747572616C0A0A5C66305C625C66733336205C6366302048656C6C6F20576F726C64217D»

Chuỗi mã hóa Hex nằm trong một «data RTF » vỏ bánh cần phải được xóa trước khi chuyển đổi nội dung được mã hóa Hex thành Văn bản ASCII để ghi vào tệp đĩa bằng cách sử dụng Chuyển hướng I / O, ví dụ: >, bên trong do shell script chỉ huy ví dụ trên.

Vì vậy, đầu ra của osascript -e 'try' -e ' get the clipboard as «class RTF »' -e 'end try' được đường ống ( | ) đến awk nơi nó tạo ra một chuỗi con, chỉ in chính nội dung được mã hóa Hex chứ không phải gói dữ liệu phần, vì điều đó sẽ không được xử lý đúng bởi xxd trong bước tiếp theo của quy trình.

Sau đó nó phải được đường ống ( | ) đến xxd để chuyển đổi sang ASCII Text được ghi vào tệp đĩa bằng cách sử dụng chuyển hướng I / O, ví dụ: >, đến mục tiêu tên tệp đường dẫn .

Hình ảnh dưới đây là của Trình xem Clipboard chuyển đổi giữa chế độ xem mã hóa ASCII Text và Hex, hiển thị Hello World! được sao chép từ Tài liệu văn bản có định dạng, tài liệu được sử dụng trong ví dụ này.

Clipboard Viewer


Tôi hy vọng điều này cung cấp sự hiểu biết tốt hơn về cách AppleScript hoạt động với nội dung Rich Text trên Clipboard, vì cách chuyển đổi từ chuỗi được mã hóa Hex sang Văn bản ASCII phải diễn ra và điều này được thực hiện một cách minh bạch trong ví dụ ban đầu đồng thời yêu cầu xử lý bổ sung bên ngoài AppleScript đang được xử lý bởi osascript khi sử dụng do shell script chỉ huy trong ngữ cảnh này.


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
nohillside

@ rubik's sphere, Cái này giống nhau lỗi như trong câu hỏi khác của bạn trong đó tập tin mục tiêu đã được ghi đè trong nội bộ không bị xóa. Tôi đã sửa lỗi bằng cách thêm delete the file (theRichTextFileName as POSIX file) trong một Finder tell khối trong phần bổ sung khác chi nhánh của if the button returned of the result is "No" then tuyên bố .
user3439894

@ rubik's sphere, Theo sửa đổi bạn đã yêu cầu, tôi sẽ phải xem lại và xem những gì có thể được thực hiện, tuy nhiên vì câu trả lời này, hiện tại, thực sự là trả lời câu hỏi ban đầu, tôi cảm thấy bất kỳ sửa đổi nào nên được bạn thử trước tiên và sau đó đăng thành một câu hỏi riêng nếu bạn không thể đạt được mục tiêu của mình. IMO Thật không công bằng khi quay lại nhiều tháng sau đó, yêu cầu sửa đổi được thực hiện cho câu trả lời đã được chấp nhận và bỏ phiếu bổ sung thêm các tham số không được nêu trước đó cho câu hỏi ban đầu.
user3439894

Tôi xin lỗi. Bạn đúng. Tôi sẽ tạo ra một câu hỏi mới.
rubik's sphere

Tôi đã tìm ra cách thêm các dòng trống vào tệp khi tôi có một bảng tạm văn bản đơn giản và do đó tệp .txt, nhưng tôi không thể tìm ra cách thực hiện với bảng tạm HTML hoặc RTF. Đây là câu hỏi.
rubik's sphere

1

Các tệp RTF, không giống như các tệp TXT, không chỉ là văn bản thuần túy mà có cấu trúc cơ bản. Để tạo tệp RTF, hãy sử dụng cấu trúc sau (thay vì chỉ văn bản thuần túy từ bàn phím của bạn):

{\rtf1\ansi\deff0 {\fonttbl {\f0 Verdana;}}
\f0\fs16
Hello World!
}

Nguồn: https://www.safaribooksonline.com/l Library / view / artf-pocket-guide / 9781449302047 / ch01.html


Tôi đã chỉnh sửa câu hỏi của mình để nó rõ ràng hơn. Bạn có biết làm thế nào tôi có thể dán văn bản clipboard vào tệp RTF và để tệp RTF khớp với phông chữ, kích thước, màu sắc, v.v. của văn bản clipboard không?
rubik's sphere

Khá chắc chắn những gì anh ấy nói là nếu bạn đặt siêu dữ liệu đó vào một tệp văn bản thuần túy và cung cấp cho phần mở rộng .rtf, thì bạn có một tệp .rtf hợp lệ.
Toadfish

@JonathanWarner Tôi thực sự.
owlswipe

@ rubik'ssphere Chỉ cần thay thế Hello World bằng văn bản clipboard của bạn và tạo tệp, phông chữ của văn bản được sao chép sẽ ghi đè lên mặc định của Verdana.
owlswipe

@ John John mã hóa định dạng, đó sẽ là một câu trả lời tốt hơn sau đó nó và không mơ hồ về những gì bạn có ý nghĩa. Tuy nhiên, hình cầu của rubik không muốn lấy văn bản đơn giản từ bảng tạm và làm cho nó thành văn bản phong phú, anh ta muốn văn bản phong phú ở đó, được ghi vào một tệp đĩa để nó duy trì tất cả các thuộc tính văn bản phong phú mà nó có, không phải là các thuộc tính bạn d phải tự viết mã để sử dụng câu trả lời của bạn.
user3439894

0

Đây là các chức năng dựa trên câu trả lời của user3439894 để in phiên bản văn bản phong phú của bảng tạm được chuyển đổi sang HTML hoặc phiên bản HTML của bảng tạm. Phiên bản HTML của bảng tạm được bao gồm cho văn bản được sao chép từ chế độ xem web.

ppr(){ osascript -e'the clipboard as"RTF "'|sed 's/«data RTF //;s/»//'|xxd -r -p|textutil -convert html -stdin -stdout; }

pph(){ osascript -e'the clipboard as"HTML"'|sed 's/«data HTML//;s/»//'|xxd -r -p; }

Các sed các lệnh trên cũng có thể được thay thế bằng ruby -lpe'$_=$_[10..-2]' (mặc dù điều đó chọn các vị trí byte sai trong miền địa phương C).

Trong các phiên bản cũ hơn của OS X pbpaste -Prefer rtf đã in phiên bản RTF của clipboard nhưng bây giờ nó dường như chỉ in văn bản đơn giản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.