बदलें प्रतीकात्मक लिंक जो निर्देशिका लक्ष्य से जुड़ा हुआ है


17

मैं 7.0.19 से 7.0.20 तक टॉमकैट सर्वर को अपग्रेड करना चाहता हूं।

मैंने पहले ही कर लिया है ln -s apache-tomcat-7.0.19 tomcat7, इसलिए अब मुझे निम्नलिखित कमांड का उपयोग करके नए लक्ष्य से लिंक tomcat7 करने की आवश्यकता है ln -s --force apache-tomcat-7.0.21 tomcat7, लेकिन यह उस तरह से काम नहीं करता है जैसा मैंने उम्मीद की थी: इसने नए लक्ष्य के साथ tomcat7/apache-tomcat-7.0.21मौजूदा tomcat7प्रतीकात्मक लिंक को बदलने के बजाय एक प्रतीकात्मक लिंक बनाया ।

उदाहरण

# mkdir v1 v2
# ln -s v1 v
# ln -s v2 v
# ll v*
lrwxrwxrwx. 1 root root    2 Sep  5 16:02 v -> v1

v1:
total 0
lrwxrwxrwx. 1 root root 2 Sep  5 16:02 v2 -> v2

v2:
total 0

मैंने मैनुअल कीln जाँच की , मुझे लगता है ln -s --force apache-tomcat-7.0.21 tomcat7कि मापदंडों को समझाने के लिए 1 फ़ॉर्म के बजाय 3 फॉर्म का उपयोग करें। यह 1 और 3 के फॉर्म के बीच इतना अस्पष्ट है। तो इस मामले में प्रतीकात्मक लिंक को कैसे बदला जाए?

जवाबों:


16

आप -Tविकल्प चाहते हैं :

$ mkdir v1
$ ln -s v1 foo
$ ls -FlA | grep foo
lrwxrwxrwx 1 phil phil     2 2011-09-05 01:58 foo -> v1/
$ mkdir v2
$ ln -s -T -f v2 foo
$ ls -FlA | grep foo
lrwxrwxrwx 1 phil phil     2 2011-09-05 01:59 foo -> v2/

धन्यवाद, ठीक यही मुझे चाहिए था। क्या शर्म की बात है, मैं इस वैकल्पिक विकल्प को मदद में देखता हूं , लेकिन मुझे नहीं पता कि यह वास्तव में क्या करता है।
लियूयान

16

निर्देशिकाओं के प्रतीकात्मक लिंक को प्रतिस्थापित करते समय हमें -nविकल्प का उपयोग करना चाहिए ।

उदाहरण: ln -sfn /path/to/directory /target/directory


1
यह स्वीकृत उत्तर होना चाहिए। प्रश्न और एक-लाइनर / कॉम्पैक्ट हल करता है।
तक

1
स्वीकृत उत्तर भी प्रश्न हल करता है और एक लाइनर है ... जब तक मैं गलत नहीं हूँ, यह समान रूप से कॉम्पैक्ट हो सकता है। मुझे नहीं लगता कि -उनके पास हर झंडे से पहले एक अलग और स्थान होना आवश्यक है।
ArtOfWarfare 20

3

सिर्फ क्यों नहीं

rm tomcat7
ln -s apache-tomcat-7.0.21 tomcat7

?

यह पुरानी निर्देशिका अपाचे-टोमकाट-7.0.19 को नहीं छूएगा लेकिन पुराने लिंक को हटा दें। फिर ln नया बना सकते हैं।


धन्यवाद! मैंने वर्तमान में अपनी स्क्रिप्ट में ऐसा किया है, लेकिन मुझे लगता है कि यह विपरीत है cp -f/ mv -fजो सिंगल कमांड का उपयोग ओवरराइट ऑपरेशन करने के लिए करता है, इसलिए मैं सिंगल कमांड समाधान की तलाश कर रहा हूं ।
लियूयान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.