क्लिपबोर्ड पर फ़ाइल कॉपी करने के लिए टर्मिनल का उपयोग करना


159

मुझे डेस्कटॉप पर एक फ़ाइल मिली, फ़ाइल का नाम ded.html है। फ़ाइल की प्रतिलिपि बनाने के लिए, मैं फ़ाइल पर क्लिक करता हूं और cmd + c दबाता हूं।

अब मैं टर्मिनल का उपयोग कैसे करूंगा?


2
क्या आपका मतलब है कि फाइल को कॉपी करें या फाइल के कंटेंट को कॉपी करें ताकि कंटेंट को पेस्ट किया जा सके?
user151019

इसके अलावा Apple.stackexchange.com/q/362245/10713
laktak

जवाबों:


237

यदि मैं प्रश्न को सही समझ रहा हूँ, तो आप क्या कर रहे हैं pbcopyऔर है pbpaste

एक टर्मिनल खोलें और करें:

$ cat ~/Desktop/ded.html | pbcopy

अब वह फाइल क्लिपबोर्ड में है।

इसे कहीं और लगाने के लिए, अर्थात इसे चिपकाने के लिए, करें:

$ pbpaste > ~/Documents/ded.html

अब आपके पास ~ / दस्तावेज़ों में बैठे ded.html की एक प्रति होनी चाहिए।


3
यह पाठ फ़ाइलों के साथ काम करने के लिए बहुत अच्छा है, लेकिन जब आप बायनेरिज़ के साथ कार्य करने का प्रयास करेंगे तो विफल हो जाएंगे। एक छवि के साथ यह देखने की कोशिश करो कि मेरा क्या मतलब है।
इटाई फेरर

7
$ cat टाइप करने के बाद ~ / Desktop / ded.html | pbcopy मैं फ़ाइल पेस्ट करने के लिए cmd + v का उपयोग नहीं कर सकता। $ Pbpaste> ~ / दस्तावेज / ded.html ने काम किया।
क्रोधित कीवी

फाइंडर मेन्यू एडिट> शो क्लिपबोर्ड (योसेमा में परीक्षण) के माध्यम से जाकर आप अपने OSX क्लिपबोर्ड में फ़ाइल सामग्री भी देख सकते हैं ।
दनिद

धन्यवाद, किसी भी विचार है कि मैं इसे कैसे पढ़ूं और अगले आदेश तक पास करूं? जैसे cat ~/.emulator_console_auth_token | auth <read_content>?
डोमिनिक

यह फ़ाइल की सामग्री की प्रतिलिपि बनाता है, लेकिन फ़ाइल ही नहीं।
v3232

20

Lri का जवाब सही दिशा में है, लेकिन इसमें कुछ खामियां हैं: Finder ( StandardAdditions OSAX the clipboardका हिस्सा है ) का उपयोग करने की कोई आवश्यकता नहीं है , और हैंडलर देना कमांड लाइन से तर्क पारित करने के लिए एक अधिक विश्वसनीय तरीका है। (10.4 से)। इन दोनों परिवर्तनों को करने से "भागने" को बहुत आसान हो जाता है, जो कि प्रोग्राम को शेल में दर्ज करने के लिए किया जाना चाहिए।run

यहाँ मेरा संस्करण है (एक शेल फ़ंक्शन में लिपटे हुए - आप .bashrcइसे अपने शेल में उपलब्ध कराने के लिए इसमें डाल सकते हैं (उदाहरण के लिए)

file-to-clipboard() {
    osascript \
        -e 'on run args' \
        -e 'set the clipboard to POSIX file (first item of args)' \
        -e end \
        "$@"
}

file-to-clipboard ~/Desktop/ded.html

एक फाइल जिसे इस स्क्रिप्ट के साथ क्लिपबोर्ड पर रखा गया है, फिर फाइल को दूसरे फ़ोल्डर में कॉपी करने के लिए फाइंडर में चिपकाया जा सकता है ।

ऑसस्क्रिप्ट को हैश-बैंग दुभाषिया (10.5 के बाद से) के रूप में भी इस्तेमाल किया जा सकता है। इसे एक फ़ाइल में रखें (उदाहरण के लिए file-to-clipboard)

#!/usr/bin/osascript
on run args
  set the clipboard to POSIX file (first item of args)
end

फ़ाइल को निष्पादन योग्य ( chmod +x /path/to/where/ever/you/put/file-to-clipboard) बनाएं । फिर इसे ऐसे चलाएं:

/path/to/where/ever/you/put/file-to-clipboard ~/Desktop/ded.html

यदि इसे PATH में एक निर्देशिका में संग्रहीत किया जाता है, तो आप "स्क्रिप्ट" फ़ाइल के लिए पथ को छोड़ सकते हैं।


@Lri: खोजक स्पष्ट समझ में नहीं आता है set the clipboard to {one,two}(हालांकि एक और AppleScript प्रोग्राम सफलतापूर्वक सूची निकाल सकता है)। StandardAdditions क्लिपबोर्ड आदेशों एकल आइटम के सीमित किया जा सकता।
क्रिस जॉन्सन

1
क्या यह कई फाइलों के लिए काम करेगा?
विटालिब

नोट: दिए गए पथ को स्क्रिप्ट के काम करने के लिए एक निरपेक्ष मार्ग होना चाहिए।
सिंह

8

कमांड लाइन का उपयोग करके आप जो करने की कोशिश कर रहे हैं उसे प्राप्त करने का कोई तरीका नहीं है। हालांकि Apple पाठ की मूल प्रतिलिपि की अनुमति देने के लिए टूल pbcopyऔर pbpasteटूल प्रदान करता है , आप इन टूल का उपयोग उस फ़ाइल की प्रतिलिपि बनाने के लिए नहीं कर सकते हैं जिसे आप खोज रहे हैं।

बहुत अधिक तकनीकी विवरण में जाने के बिना, जब आप फाइंडर का उपयोग करके किसी फ़ाइल को 'कॉपी' करते हैं C, तो आप वास्तव में फ़ाइल की प्रतिलिपि नहीं बना रहे हैं, बस क्लिपबोर्ड पर फ़ाइल का संदर्भ बना रहे हैं और इसे फ़ाइल संदर्भ के रूप में चिह्नित कर रहे हैं। जब आप पेस्ट करते समय कोई एप्लिकेशन इस संदर्भ को प्राप्त करते हैं, तो यह चीजों को छांटने की जिम्मेदारी है, जो आपके द्वारा चिपकाए गए हैं, और आखिरकार, फ़ाइल के साथ काम करना जैसा कि वह देखता है। संक्षेप में, जब आप फाइंडर में एक फाइल कॉपी करते हैं, तो यह एक निश्चित क्लिपबोर्ड में एक निश्चित तरीके से फाइल का रास्ता बचाता है, और जब आप पेस्ट करते हैं, तो यह उस फाइल पथ को प्राप्त करता है और सामग्री की मदद से एक नई फाइल बनाना जानता है। पुराना एक (क्लिपबोर्ड पर फ़ाइल कॉपी करें, इसे हटाएं, इसे कहीं और चिपकाने की कोशिश करें, और देखें कि क्या होता है, उदाहरण के लिए)।

नकल करने और चिपकाने के इस अर्थ में, हाथ में उपलब्ध उपकरण आपके लिए आवश्यक कार्य करने के लिए पर्याप्त नहीं हैं। जैसा कि boehj ने सुझाव दिया है, आप पुरानी फ़ाइल की सामग्री को एक नए में कॉपी करने का प्रयास कर सकते हैं, लेकिन यह केवल पाठ फ़ाइलों के लिए अच्छी तरह से काम करेगा। आपके द्वारा प्राप्त की जाने वाली कोई भी बाइनरी फाइलें दूषित हो जाएंगी (छवि के साथ ऐसा करने का प्रयास करें - यह दूषित हो जाता है)।

पारंपरिक कमांड लाइन इस तरह से आपको विफल कर देगी, लेकिन आप देख सकते हैं कि क्या आप AppleScript में ऐसा करना चाहते हैं, तो कमांड लाइन के माध्यम से इसे लागू करना osascript


आप छवियों के बारे में सही हैं, आदि मैंने ऐसा नहीं सोचा था। मुझे लगता है कि मैंने प्रश्न को गलत समझा है, क्योंकि यद्यपि pbcopyऔर pbpaste.html फ़ाइल के साथ काम करेगा, ऐसा केवल इसलिए है क्योंकि यह केवल एक पाठ फ़ाइल के रूप में होता है।
बोहज

नहीं, आपने प्रश्न को सही ढंग से समझा, यह सिर्फ इतना है कि आपने इन उपकरणों पर काम किया जैसा कि उन्हें करना चाहिए, जो वे नहीं करते हैं। वे छोटी गाड़ी वाले हैं, और उस तरह से काम करने के लिए भी नहीं हैं, हालांकि Apple ने प्रलेखन पर बहुत खराब काम किया है। यदि आप टाइप करते हैं pbcopy -help, तो आपको NSLog()केवल दोहराते हुए एक गैर-उत्पादन-योग्य रेखा मिलती है 'pbcopy -help'। यह समझने के लिए एक प्रोग्रामर होने में मदद करता है, यही कारण है कि मुझे इसमें झंकार करना आवश्यक लगा।
इटाई फेरर

1
हां, कोई बात नहीं। ;)
इटाई फेरर

1
जो कोई pbcopy चाहता है, उसे कुछ ध्यान आकर्षित करने के लिए एक मुफ्त डेवलपर खाता मिल सकता है और कुछ बग दर्ज कर सकते हैं - Bugreport.apple.com - इसकी कोई गारंटी नहीं है, लेकिन इससे इंजीनियरों को इन चीजों पर काम करने का समय मिल जाता है अगर पर्याप्त लोग अभी भी देखभाल करते हैं ।
bmike

1
क्या ओपी सीएलआई पर AppleScript के साथ जो चाहते हैं वह हासिल कर सकता है?

7

नीचे दिया गया फ़ंक्शन केवल एक फ़ाइल के साथ काम करता है, न कि कई फ़ाइलों के साथ। इसके लिए GNU की आवश्यकता होती है readlinkजिसे आप चलाकर स्थापित कर सकते हैं brew install findutils

copy(){ osascript -e{'on run{a}','set the clipboard to posix file a',end} "$(greadlink -f -- "$1")";}

संपादित करें: मैंने tell app "Finder"ब्लॉक को हटा दिया ।

संपादन 2: एक ऐसे संस्करण पर वापस लौटा जो सापेक्ष पथों का समर्थन करता है।


2
यह वास्तव में काम करता है!
बेमू

6

pbcopy < filenameटर्मिनल में निष्पादन कमांड नाम की फ़ाइल की सामग्री की प्रतिलिपि बनाता है filename


3

फ़ाइल को किसी गंतव्य पर कॉपी करने के लिए, cpकमांड का उपयोग करें ।

cp /path/to/file /path/to/destination

man cpअधिक जानकारी के लिए देखें ।


2
यह उस प्रश्न का उत्तर नहीं है जो पूछा गया है कि क्लिपबोर्ड को लक्ष्य स्थान के रूप में संदर्भित किया गया है।
केलीफज

2

यहाँ एक सरल शैल / बैश लिपि है। बस इसे अपनी .bashrcफ़ाइल (या इस तरह) में पेस्ट करें :

file-to-clipboard() {
    if [ -z "$1" ]; then
        echo "file path/name:"
        read FILE
    else
        FILE="$1"
    fi
    pbcopy < "$FILE"
}

0

रिश्तेदार फ़ाइल के समर्थन के साथ:

clip_img() {
    osascript -e 'on run argv' \
        -e 'set currentDir to do shell script "pwd"' \
        -e 'set the clipboard to (read POSIX file (POSIX path of (currentDir as text & (first item of argv) )) as JPEG picture)' \
        -e 'end run' "/$1"
    # osascript -e 'clipboard info'
}

clip_img path-to-fileक्लिपबोर्ड पर छवि की प्रतिलिपि बनाने के लिए चलाएं , और path-to-fileसापेक्ष हो सकता है। फ़ाइल jpeg या png फाइलें हो सकती है।


-2

आप यूनिक्स वातावरण पर बिल्ली 'ओरिजिनल'> 'डेस्टीफाइल' का उपयोग कर सकते हैं;

विंडोज़ पर ओरिजिनल डेस्टिनेशन कॉपी करें।


2
यह फ़ाइल को क्लिपबोर्ड पर कैसे रखता है?
ग्राम gr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.