पूर्ण पथ को टाइप किए बिना स्क्रिप्ट कैसे चलाएं?


57

अगर पूर्ण पथ टाइप किए बिना प्रोग्राम / शेल स्क्रिप्ट चलाने का कोई तरीका है, तो मैं जानना चाहता हूं:

/opt/idea/bin/idea.sh

आप हमेशा फ़ाइल का पूर्ण पथ दे सकते हैं।
मूरू

धन्यवाद @ मरमू, यह मुझे पता है, लेकिन यह एक ऐसा कार्यक्रम है जिसका मैं अक्सर उपयोग करता हूं, इसलिए मैं इसे एक सरल कमांड के साथ चलाने में सक्षम होना चाहूंगा, न कि एक लंबी फ़ाइल पथ।
जॉनी

nufailm.blogspot.com/2012/05/… यह विचार के लिए मदद करेगा :)
dedunumax

जवाबों:


60

आप बस सिम्लिंक बना सकते हैं । इसमें बनाएँ /usr/local/bin। आपको बस कमांड चलाने की जरूरत है:

sudo ln -s /full/path/to/your/file /usr/local/bin/name_of_new_command

उसके बाद आपको अपना fileनिष्पादन योग्य बनाना चाहिए :

chmod +x /full/path/to/your/file

अब आपको name_of_new_commandअपने टर्मिनल पर किसी भी समय चलने में सक्षम होना चाहिए ।

ध्यान दें कि यह केवल लिनक्स के घरेलू उपयोग के लिए अच्छा समाधान है।


11
ध्यान दें कि आप /usr/local/binएक निजी होम फ़ोल्डर में स्क्रिप्ट के लिए उस बिंदु पर एक सिमलिंक नहीं रखना चाहिए , जैसे कि /home/jack/myscript.sh, केवल उपयोगकर्ता jackआमतौर पर इसे निष्पादित करने में सक्षम होंगे। सिमलिंक अन्य उपयोगकर्ताओं के लिए दिखाई देगा, लेकिन उस फ़ाइल की ओर नहीं, जिसके लिए वह इंगित करता है। एकल-उपयोगकर्ता प्रणाली पर यह बात नहीं हो सकती है, लेकिन फिर भी, लिपियों (या लिपियों के लिंक) को रखने के लिए यह "अच्छा अभ्यास" है जिसे सभी उपयोगकर्ता पढ़ सकते हैं /usr/local/bin, और निजी, स्व-निर्मित स्क्रिप्ट (या लिपियों के लिंक) उनके ~/binफ़ोल्डर में एक एकल उपयोगकर्ता ।
माल्टे स्कॉरप्पा

/ usr / sbin में एक सिमलिंक जोड़ें और इसे कहीं से भी सुलभ बनाता है
Seyfi

28

आप /opt/idea/binअपने PATHचर में जोड़ सकते हैं :

PATH=/opt/idea/bin:"$PATH"

इसके बाद आप इसे बस के साथ चला सकते हैं idea.sh

आप शायद इस लाइन को अपनी ~/.bashrcफ़ाइल में जोड़ना चाहते हैं ।


2
यह भी: यदि आप स्क्रिप्ट को निष्पादन योग्य बनाते हैं, तो .sh एक्सटेंशन को छोड़ा जा सकता है (यह मानते हुए कि आप स्क्रिप्ट के शीर्ष पर शेबंग का उपयोग करते हैं)। बस "विचार" पर्याप्त है।
जैकब व्लिजम

1
@ जैकब: आप एक्सटेंशन को नहीं छोड़ सकते, क्योंकि यह निष्पादन योग्य फ़ाइल नाम का हिस्सा है (यह विंडोज नहीं है, जहां इस तरह का जादू अन्य मुद्दों का कारण बनता है)। नाम के साथ स्क्रिप्ट को कॉल करने के लिए idea, आपको उस नाम के साथ एक लिंक या उपनाम तैयार करना होगा idea.sh
जोनाथन कैलन

2
@JonathanCallen आप निश्चित रूप से कॉल कर सकते हैं! स्क्रिप्ट को निष्पादन योग्य बनायें, इसे चलाने के लिए फ़ाइल नाम और कमांड दोनों से .sh एक्सटेंशन को हटा दें, इस तथ्य को देखते हुए कि आप स्क्रिप्ट को शेबंग #! / बिन / बैश के साथ शुरू करते हैं।
जैकब व्लिजम

1
@ जेकब मेरा मतलब है कि फाइल का नाम बदले बिना , आप नहीं कर सकते (और ऐसा प्रतीत होता है कि यह एक बड़े सॉफ्टवेयर पैकेज का हिस्सा है, इसलिए आपको सिर्फ फाइलों का नाम बदलना नहीं चाहिए )
जोनाथन कॉलन

2
धन्यवाद @Jacob, ध्यान दें कि "जब स्क्रिप्ट सिस्टम PATH में एक निर्देशिका में स्थापित की जाती हैं"idea.shस्क्रिप्ट ऐसी स्क्रिप्ट नहीं है, वास्तव में यह अपनी स्थापना निर्देशिका के बाहर घूम रहा है पूरी तरह से असमर्थित है। डेबियन पैकेजिंग नियम यहां लागू नहीं होते हैं।
जानोस

15

आप में एक समारोह बना सकते हैं ~/.bashrc:

some-name () {
    /path/to/your/file
    # or:
    #cd /path/to/your
    #./path
}

या आप एक बना सकते हैं alias:

alias some-name='/path/to/your/file'
# or  
#alias some-name='cd /path/to/your/; ./file'

दोनों स्थितियों में, आप इसे कॉल करके चला सकते हैं:

$ some-name

यदि फ़ाइल इस बात पर निर्भर नहीं करती है कि वह कहाँ चल रही है, तो इसे अपने साथ जोड़ने पर विचार करें ~/bin:

mkdir -p ~/bin
cp /path/to/you/file ~/bin
# or mv /path/to/you/file ~/bin
# or ln -s /path/to/you/file ~/bin

~/bin, अगर यह मौजूद है, तो अपने $PATHआप जुड़ जाता है । फिर आप सीधे कॉल करें file:

$ file

(हालांकि नाम का बुरा विकल्प, इसे कुछ कम सामान्य कॉल करने पर विचार करें।)


@ ओली हमेशा मुझे पांच मिनट देते हैं, मैं इंडेंट जोड़ना चाहता हूं। :) यह सिर्फ इसलिए कष्टप्रद है क्योंकि मुझे दूसरे स्तर के इंडेंट के लिए Ctrl-K का उपयोग करने के लिए संपादक को ट्रिक करने की आवश्यकता है।
मुरु

2
विशेष रूप fileसे अपने को जोड़ने के समाधान के लिए +1 ~/bin, जो कि मैं आमतौर पर (लंबी लिपियों के लिए) करता हूं। मैं शायद यह भी डाल सकता हूँ कि शीर्ष पर :) उपनाम कुछ मापदंडों के साथ कमांड के लिए शॉर्टकट के लिए अच्छे हैं, उदाहरण के लिए alias l='ls -CF'हालांकि मैंने एलियासेस के बहुत अधिक भयानक उपयोग देखे हैं । मैं कार्यों की घोषणा नहीं करता ~/.bashrc(मैं अपनी सभी लिपियों को अलग-अलग फाइलों में व्यवस्थित करना पसंद करता हूं ~/bin)। हालांकि यह सब स्वाद की बात है, मुझे लगता है :)
माल्टे स्कॉरप्पा

@MalteSkoruppa मैंने केवल उन विधियों को प्राथमिकता दी जो आसानी से खुद को उधार देती हैं cd, क्योंकि स्क्रिप्ट कार्यशील निर्देशिका पर निर्भर हो सकती है। :) नहीं तो, हाँ, मैं ~/binअपने आप में फ़ाइलों को रखना चाहता हूँ।
मूरू

10

आप निम्न कमांड का उपयोग करके एक लांचर बना सकते हैं:

gnome-desktop-item-edit --create-new <path-where-to-save>। मैं इस विंडो को खोलूंगा।

यहाँ छवि विवरण दर्ज करें

जो भी आपको पसंद है उसे नाम दें और कमांड बॉक्स में निम्नलिखित लिखें

sh -c '/opt/idea/bin/idea.sh' और इसे बचाओ।

अब आप उस फ़ाइल को नए बनाए गए लॉन्चर का उपयोग करके चला सकते हैं

या

आप निम्न सामग्री के साथ एक .desktop फ़ाइल बना सकते हैं

[Desktop Entry]
Name=<whatever-you-want>
Exec=sh -c '/opt/idea/bin/idea.sh'     
Terminal=false
Type=Application
Icon='<path to an icon file if you want>'

अब इसे .desktopकिसी भी जगह पर एक्सटेंशन के साथ सेव करें ।

इस कमांड के साथ इसे निष्पादित करें chmod a+x <your-desktop-file>

अब इसे खोलने के लिए डबल क्लिक करें।


7

हम bindकॉल करने के लिए कमांड का उपयोग करके एक फ़ंक्शन और एक ऐड हॉटकी को परिभाषित कर सकते हैं । ~/.bashrcफ़ाइल खोलें और इसमें ये लाइन जोड़ें:

# define function that opens your program in working directory
Openprog(){
    /your-Program/path/here
}

# bind hotkey to it (<F12>)
bind -x '"\e[24~":"Openprog"'

अब जब आप दबाते हैं F12, तो आपका प्रोग्राम लॉन्च होगा।

नोट: एस्केप कोड निर्धारित करने का एक त्वरित तरीका:

अपना टर्मिनल खोलें और Ctrl+ दबाएँ V। अब अपने पसंदीदा कीबोर्ड शॉर्टकट को दबाएं। सही बच कोड दिखाई देना चाहिए। बस बदलना सुनिश्चित करें ^[साथ \eशॉर्टकट, जैसे को बदलने के लिए जोड़ने से पहले ^[[24~साथ \e[24~


7

हम /opt/idea/bin/idea.shफाइल को सीधे इस्तेमाल करके भी चला सकते हैंbash_aliases

~/.bashrcफ़ाइल को चलाकर खोलें ,

gedit ~/.bashrc

#लाइनों से पहले निकालें और इसे सहेजें, ताकि लाइनें दिखें,

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

अब ~/.bash_aliasesफ़ाइल खोलें ,

gedit ~/.bash_aliases

उस फ़ाइल में निम्न पंक्तियाँ जोड़ें और इसे सहेजें,

alias idea='cd /opt/idea/bin && sudo ./idea.sh'

अंत में ~/.bashrcफ़ाइल का स्रोत ,

source ~/.bashrc

अब आप /opt/idea/bin/idea.shसीधे फ़ाइल चला सकते हैं ,

idea

4

अन्य अच्छे उत्तरों के अलावा, ~/.local/binइस निर्देशिका को अपने PATH ( .bashrcउदाहरण के लिए अपने भीतर से ) में जोड़ने पर विचार करें । इस पद्धति के लिए विशेष अनुमति की आवश्यकता नहीं है ( /usr/local/binउदाहरण के लिए , सहानुभूति के विपरीत )। इस तरह, आपके $ HOME को भर दिए बिना एक मानक निर्देशिका संरचना हो सकती है। इसके बारे में इन https://unix.stackexchange.com/ प्रश्नों पर पढ़ें :


1

/usr/binDirecotyr में इसका सॉफ्ट लिंक बनाएं :

ln -s /usr/bin/idea.sh  /opt/idea/bin/idea.sh

अब इसका उपयोग करके चलाएं:

idea.sh

0

या आप बस उपयोग कर सकते हैं

nano ~/.bashrc

और जोड़

PATH=/full/path/to/file:"$PATH"

इसके अंत में, फिर सहेजें और बाहर निकलें। बाद में, आप बस फ़ाइल का नाम टाइप कर सकते हैं।


0

मैंने यहां और अन्य स्थानों पर सभी उत्तरों का पालन किया और इसलिए यह उल्लेख करने में कुछ विफल रहे कि आपको अंततः काम करने के लिए कमांड के लिए लॉग इन करना पड़ सकता है ।

बस पुनर्कथन करने के लिए, विशेष रूप से ज़ुबंटू के लिए , लेकिन अन्य डेबियन / उबंटू वेरिएंट के लिए और साथ ही मैंने ये सरल निर्देश लिखे।

(निम्नलिखित निर्देशों में हम निर्देशिका ~ / बिन का उपयोग करते हैं , क्योंकि यह स्वचालित रूप से एक जगह है जहाँ से ये OS कमांड की तलाश में हैं। यहाँ देखें :

अपने काम करने के लिए मूर्ख-प्रूफ निर्देश

# Open Terminal with Ctrl + Alt + T (or your system's own shortcut)

# You'll work in your home folder, no need to use sudo for any of this

cd # Go to home directory

mkdir -p bin # Create folder ~/bin if it doesn't exist

# Be careful not to type /bin, that's the bin folder in system root: /

sudo apt install nano # Skip this if you have Nano installed

nano bin/yournewcommand

    # In Nano, type:

    printf "Your new command works! \n" # \n means line break

    # Ctrl+X To leave Nano

    # Ctrl+Y To save the unsaved file

    # Enter to confirm

chmod +x bin/yournewcommand

yournewcommand # If you just created the bin folder, this command might not yet work.

# You must now log out and log back in to make the bin folder noticed (I think)

yournewcommand # Now it works! (You can use Tab to autocomplete the command you're typing)

# If you add a second file/command, it should work without logging out (at least in my tests)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.