2008-10-21 11 views
23

में प्रतीकात्मक लिंक कॉपी करना मैक पर प्रतीकात्मक लिंक कॉपी करने का सबसे आसान तरीका क्या है?मैक ओएस एक्स

एक अजगर या पर्ल समाधान पसंद किया जाएगा, लेकिन कोई भी समाधान एक सहायता होगी।

मैं एक स्थापना पैकेज के लिए चौखटे को कॉपी कर रहा हूँ, और लिंक

+0

मेरे क्षमायाचना करते हैं। हालांकि मेरा मानना ​​है कि शीर्षक विशेष रूप से बताता है कि मैं –

उत्तर

33

जैसा कि डेविड ने उल्लेख किया था, ओएस एक्स में आसान विकल्प है जो gnu cp है।

हालांकि, अगर आप एक पुनरावर्ती प्रतिलिपि करने के लिए आर उपयोग करते हैं, तो यह सिमलिंक डिफ़ॉल्ट रूप से कॉपी जाएगा, ताकि

cp -R source destination 

काम करना चाहिए।

+2

ओएस एक्स अब -ए विकल्प –

3

रखे जाने वाले अजगर में आप os.readlink और os.symlink उपयोग कर सकते हैं इस क्रिया को करने की जरूरत है। आप की जाँच करनी चाहिए अगर तुम क्या पर काम वास्तव में os.lstat और stat.S_ISLNK

import os, stat 
if stat.S_ISLNK(os.lstat('foo').st_mode): 
    src = os.readlink('source') 
    os.symlink(src, 'destination') 

के साथ एक प्रतीकात्मक कड़ी आप -R option of cp साथ यह कर सकता है। यह काम करता है क्योंकि डिफ़ॉल्ट रूप से सीपी प्रतीकात्मक लिंक का पालन नहीं करता है लेकिन निर्दिष्ट किए बिना गैर-फाइलों की प्रतिलिपि बनाने पर छाल -आर जिसका अर्थ है रिकर्सन।

cp -R source destination 

अजगर उस के साथ subprocess.call

from subprocess import call 
call(['cp', '-R', 'source', 'destination']) 

नोट हो सकता है कि एक macosx alias एक प्रतीकात्मक कड़ी नहीं है और इसलिए प्रतीकात्मक कड़ी विशेष उपचार के लिए उस पर विफल होगा।

0

जैसा कि आपने पाइथन टैग किया है, मुझे लगता है कि आप copytree (src, dst [, symlinks]) जैसे कुछ का मतलब है। असली सिम्लिंक (एलएन-एस द्वारा निर्मित) किसी भी यूनिक्स सिस्टम के रूप में कॉपी की जाएगी। लेकिन अगर आप खोजक के साथ उपनाम बनाते हैं, तो आपको एक सिम्लिंक नहीं मिलेगा, लेकिन उपनाम। मैकोज़ दो प्रकार के लिंक प्रदान करता है: यूनिक्स प्रकार सिम्लिंक और उपनाम (http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/Articles/Aliases.html देखें)। इन उपनामों को कई उपकरणों द्वारा लिंक के रूप में नहीं माना जाता है - न ही प्रतिलिपि जैसा कि मुझे पता है।

+0

को टैग करना चाहता था, मैंने पायथन को टैग किया क्योंकि यह मेरी पसंदीदा स्क्रिप्टिंग भाषा थी, लेकिन यह पता चला कि सीपी काफी काम करता है, धन्यवाद –

1

@brian d foy का समाधान सही होता था। MacOS के नए संस्करण एक अजगर/पर्ल डेवलपर का एहसास नहीं था, जो कि सीपी तो बस काम करते हैं होने के लिए समर्थन

cp -a 
+0

का समर्थन करता है मैकोज़ में (हाई सिएरा) 'सीपी-ए 'हार्ड लिंक केवल प्रतीकात्मक लिंक को संरक्षित नहीं करता है। – msc