/ बिन में एक प्रतीकात्मक लिंक बनाना काम नहीं कर रहा है


8

मैंने अपने मैक पर उदात्त पाठ के लिए एक प्रतीकात्मक लिंक बनाने के लिए तीन अलग-अलग तरीकों की कोशिश की है और, हर बार टर्मिनल को फिर से शुरू करने के बाद, यह अभी भी बताता है कि मुझे कमांड नहीं मिला। मैं एक का उपयोग कर रहा हूँ MAC Yosemite (OSX Yosemite, 10.10) के साथ। मैं एक प्रतीकात्मक लिंक कैसे बना सकता हूं ताकि मैं subकमांड के साथ उदात्त को खोल सकूं ?

एक

ln -s 'Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl' /bin/sub

दो

ln -s "Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl" /bin/sub

तीन (कोई उद्धरण नहीं)

ln -s Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /bin/sub

क्या लिंक वास्तव में उप / बिन में कुछ बनाता है? सुडोल की कोशिश करो?
क्रिस

1
यदि आप उद्धरण का उपयोग करते हैं, तो आप बैकस्लैश नहीं चाहते हैं। यदि आप उद्धरण का उपयोग नहीं करते हैं, तो बैकस्लैश आवश्यक है। आपको /Applications/…उत्तर में दिए गए प्रमुख स्लैश की भी आवश्यकता है , और आपको /bin(इसलिए sudo) लिखने के लिए मूल विशेषाधिकारों की आवश्यकता है । अवशिष्ट प्रश्न यह है कि क्या निष्पादन योग्य को चलाने के लिए पर्याप्त है। क्या आप वाकई एक शेल स्क्रिप्ट नहीं चाहते open "/Applications/Sublime\ Text.app"हैं जो फ़ाइल की सामग्री के बजाय कुछ ऐसा करता है /bin?
जोनाथन लेफ्लर 5

जवाबों:


16

आपको अपने ऐप की शुरुआत में '/' याद आ रही है और sudoजैसा /binकि इसके स्वामित्व में है rootऔर आप वास्तव में इसे सामान्य उपयोगकर्ता के रूप में नहीं लिख सकते। जैसा कि वर्तमान में आपके पास है, यह केवल तभी काम करेगा जब आपकी वर्तमान निर्देशिका सिस्टम रूट थी। यह मानता है कि उदात्त पाठ एप्लिकेशन आपके मुख्य एप्लिकेशन फ़ोल्डर में है।

इसे इस्तेमाल करे…

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /bin/sub

एक बाद: यह की सामग्री को बदलने के लिए बुरा व्यवहार माना जाता है /binऔर /usr/binक्योंकि कोई आगामी OS X अपग्रेड वहां की सामग्री को मिटा सकता है। /usr/local/binउपयोगकर्ता-प्रदान की गई बायनेरिज़ को स्थापित करने की सामान्य जगह है, इसलिए

[[ -d /usr/local/bin ]] || sudo mkdir /usr/local/bin
sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/sub

बेहतर विकल्प हो सकता है।

या (जैसा कि आपको शायद शेल स्क्रिप्ट के भीतर से सबलाइम टेक्स्ट को चलाने की आवश्यकता नहीं है), बस एक बैश उपनाम को परिभाषित करें

alias sub=/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl

जो इसे स्टिक बनाने के लिए आपकी बैश स्टार्टअप फाइल में जोड़ा जाना चाहिए

echo "alias sub=/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl" >> ~/.bashrc

3
आपको उपयोग करने की आवश्यकता है sudoऔर यदि आप पथनाम को उद्धृत करने जा रहे हैं तो रिक्त स्थान से बचने के लिए बैकस्लैश का उपयोग न करें!
user3439894

पथ के चारों ओर एकल उद्धरण चिह्नों को न भूलें: alias subl = '/ Applications / Sublime \ Text.app/Contents/SaringSupport/bin/subl' इसके अलावा बेहतर तरीके से ~ /
.bash_profile

1

पार्टी के लिए देर से। मुझे अपने मैक को सेट करते समय एक ही मुद्दे का सामना करना पड़ा और कुछ चीजों की कोशिश की। यहाँ मेरे लिए क्या काम किया है।

ln -sv "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl

अधिक जानकारी के लिए, इस github repo पर जाएं


इस तथ्य के अलावा कि आपका आदेश विफल हो जाएगा, क्योंकि आपने उपयोग नहीं किया था sudoऔर इस मामले में इसकी आवश्यकता है, यह कैसे अलग है, तो पहले से ही मॉकमैन के जवाब में क्या पेश किया गया है? अन्य तो वह तथ्य यह है कि वह subबनाम का उपयोग करने के लिए चुनते हैं subl, ताकि एक कम चरित्र को बार-बार उपयोग करने के लिए टाइप करें, यह वास्तव में वह नहीं है जो मैं देख सकता हूं!
user3439894

@ user3439894 sudo कोई आवश्यकता नहीं है। और ऊपर दिए गए आदेश का उपयोग ऊपर दिए गए आदेशों के रूप में /usr/local/binनहीं /usr/binकिया गया है। /usr/local/binउपयोगकर्ता अनुप्रयोगों के लिए अनुशंसा निर्देशिका है, जबकि / usr / bin वितरण-प्रबंधित उपयोगकर्ता कार्यक्रमों के लिए उपयोग किया जाता है। तो, subबनाम sublहै नहीं केवल परिवर्तन, यह बस उपयोगकर्ता वरीयता पर निर्भर करता है; वे क्या लिखना चाहते हैं। मैं माफी माँगता हूँ अगर यह भ्रम पैदा करता है ..
LT

1. जैसा ln: /usr/local/bin/subl: Permission deniedकि आप एक व्यवस्थापक खाते से है, अपने आदेश चल रहा है, रिटर्न 2। मैं तुम्हें फिर से जवाब देना चाहते हैं, क्योंकि यह बिल्कुल उसके जवाब में /usr/local/bin/दूसरी sudo ln -sकमान में है!
user3439894
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.