मैं एक स्थायी बैश उपनाम कैसे बनाऊं?

मैं एक उपनाम बनाना चाहूंगा rm आदेश में आदेश इस आदेश को क्रियान्वित करने के बाद एक पुष्टिकरण संदेश है । तो मैं इस तरह एक उपनाम बना रहा हूं alias rm='rm -i'. लेकिन जहां तक मुझे पता है कि यह एक अस्थायी उपनाम है और यह तब तक रहता है जब तक आप टर्मिनल बंद नहीं करते ।

जैसा कि समझाया गया है यहाँ उपनाम को स्थायी रूप से सहेजने के लिए मुझे निष्पादित करने की आवश्यकता है ~/.bash_aliases या ~/.bashrc टर्मिनल में कमांड और वहां मेरा उपनाम जोड़ें। लेकिन जब मैं निष्पादित करता हूं ~/.bashrc मुझे निम्न त्रुटि संदेश मिलता है :

bash: /home/bakhtiyor/.bashrc: Permission denied

जब मैं दौड़ता हूं ~/.bash_aliases मुझे इस तरह एक और त्रुटि संदेश मिलता है:

bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.

वास्तविक समस्या क्या है और मैं इसे कैसे हल कर सकता हूं?

उपनाम बनाने के लिए स्थायी रूप से उपनाम को अपने में जोड़ें .bashrc फ़ाइल

gedit ~/.bashrc

और फिर नीचे अपना उपनाम जोड़ें।

alt text

अब निष्पादित करें . ~/.bashrc आपके टर्मिनल में (बीच में एक जगह होनी चाहिए . और ~/.bashrc.

अब आप अपना उपनाम देख सकते हैं ।

alt text

उपनाम बनाने के कई तरीके हैं । सबसे अधिक इस्तेमाल किए जाने वाले तरीके हैं:

  1. सीधे अपने में उपनाम जोड़ें ~/.bashrc फ़ाइल

    उदाहरण के लिए: इन पंक्तियों को इसमें जोड़ें ~/.bashrc फ़ाइल

    alias ll='ls -l'alias rm='rm -i'

    अगली बार (आपके द्वारा लॉग आउट / इन करने के बाद, या किया गया . ~/.bashrc) जब आप टाइप करते हैं rmrm -i कमांड निष्पादित किया जाएगा ।

  2. दूसरी विधि आपको एक अलग उपनाम फ़ाइल बनाने देती है, इसलिए आपको उन्हें अंदर नहीं डालना होगा .bashrc, लेकिन अपनी पसंद की फाइल के लिए । सबसे पहले, अपना संपादित करें ~/.bashrc फ़ाइल करें और निम्न पंक्तियों को जोड़ें यदि वे पहले से मौजूद नहीं हैं, या यदि वे करते हैं तो उन्हें अनदेखा करें:

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

    इसे सहेजें और फ़ाइल को बंद करें । उसके बाद, आपको बस एक बनाना है ~/.bash_aliases पहली विधि में निर्दिष्ट समान प्रारूप के साथ फ़ाइल करें और वहां अपने उपनाम जोड़ें ।

    मेरे की सामग्री ~/.bash_aliases फ़ाइल:

    alias cs='cd;ls'

यह मुझे लगता है जैसे आपकी एकमात्र समस्या बस निष्पादित करने की कोशिश कर रही है । bashrc जब यह निष्पादन योग्य नहीं है । लेकिन यह ऐसा करने का सही तरीका नहीं है; जब भी आप इस फ़ाइल में कोई बदलाव करते हैं, तो आपको इसे कमांड द्वारा "निष्पादित" करना चाहिए:

source ~/.bashrc

अन्यथा, यह बस एक नया शेल बनाएगा, फ़ाइल को नए शेल के वातावरण में निष्पादित करेगा, फिर उस वातावरण को छोड़ देगा जब वह बाहर निकलता है, जिससे आपका परिवर्तन खो जाता है । स्क्रिप्ट को सोर्सिंग करके, यह वर्तमान शेल के भीतर निष्पादित होता है, इसलिए यह प्रभावी रहेगा ।

मैं मान रहा हूं कि दूसरी त्रुटि थी क्योंकि बैश_एलियास मौजूद नहीं है । यह आवश्यक नहीं है, बस अपने परिवर्तनों को अलग और व्यवस्थित रखने की अनुशंसा की जाती है । इसका उपयोग केवल तभी किया जाता है जब यह मौजूद हो, और आप इसके लिए परीक्षण देख सकते हैं । bashrc:

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

यह कहता है कि यदि फ़ाइल ~/ । बैश_एलियास मौजूद है, फिर इसे चलाएं ।

समस्या यह है कि आप एक गैर निष्पादन योग्य फ़ाइल निष्पादित करने का प्रयास कर रहे हैं:आप इसके साथ जांच सकते हैं:

ls -la ~/.bashrc-rw-r--r-- 1 username username 3596 2010-08-05 17:17 /home/pt001424/.bashrc

ध्यान दें कि पहले कॉलम (फ़ाइल अनुमतियाँ) पर कोई" एक्स - निष्पादन योग्य " अक्षर नहीं है ।

प्रोफ़ाइल फ़ाइलें निष्पादन योग्य फ़ाइलें नहीं हैं, उन्हें निष्पादित करने के बजाय आप उन्हें लोड करते हैं:

source /home/bakhtiyor/.bashrc

या

. /home/bakhtiyor/.bashrc
echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

यह एक उदाहरण है जिसे मैं ढूंढ रहा था, टर्मिनल ("वीपीएस") पर कुछ अक्षरों को दूरस्थ रूप से सर्वर में लॉग इन करने और एक्स 11 अग्रेषण को सक्षम करने का एक तरीका है ताकि मैं नेटवर्क पर "जीएडिट" जैसे जीयूआई ऐप्स चला सकूं ।

>>कमांड / अलियास कमांड जो भी हो, इस तरह से इको स्टेटमेंट, उद्धरण चिह्नों और कमांड के आउटपुट को फाइल () में जोड़ने के लिए प्रतीक मेरे लिए काम करता है । बस आपके द्वारा आवश्यक उपनाम कमांड के लिए मेरे कमांड को बदलें और इसे अपने टर्मिनल में दर्ज करें ।

मैंने इस सहायक फ़ंक्शन को जल्दी से एक नया उपनाम बनाने के लिए लिखा, और फिर उपनाम परिभाषा लिखें ~/.bash_aliases (यदि यह मौजूद है) या ~/.bashrc.

टिप: सुनिश्चित करें ~/.bash_aliases मौजूद है और में निष्पादित किया जाता है ~/.bashrc.

# -----------------------------------#  Create a new permanent bash alias##  @param $1 - name#  @param $2 - definition# -----------------------------------new-alias () {   if [ -z "$1" ]; then    echo "alias name:" && read NAME  else    NAME=$1  fi  if alias $NAME 2 > /dev/null > /dev/null; then    echo "alias $NAME already exists - continue [y/n]?" && read YN    case $YN in      [Yy]* ) echo "okay, let's proceed.";;      [Nn]* ) return;;      * ) echo "invalid response." && return;;    esac  fi  if [ -z "$2" ]; then    echo "alias definition:" && read DEFINTION  else    DEFINTION="$2"  fi  if [ -f ~/.bash_aliases ]; then    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bash_aliases  else    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bashrc  fi  alias $NAME="$DEFINTION"}

यदि आप रूबी का उपयोग कर रहे हैं, तो आप रूबीगेम का उपयोग करके उर्फ स्थापित कर सकते हैं ।

gem install aka2

उपयोग

aka generate hello="echo helloworld" #add an aliasaka g hello="echo helloworld"  #add alias for lazy peopleaka destroy hello #remove aliasaka d hello #remove alias for lazy people

रूबीगेम आपकी डॉट फ़ाइल को ऑटो-सोर्स करेगा ताकि आपको इसकी आवश्यकता न हो । इसे देखें।

मुझे इस विचार पर विस्तार करना अच्छा लगेगा!

आप चाहते हैं alias आपके प्रश्न के अनुसार एक आदेश:

echo "alias wolfr='cd /home/wolf'">>./~bashrc

अब आप टाइप कर सकते हैं wolfr वुल्फ होम डायरेक्टरी में जाने के लिए ।

यह बहुत समान है और बहुत अच्छा है, export आदेश:

echo "export ngse=/etc/nginx/sites-enabled"./~bashrc

अब आप टाइप कर सकते हैं cp $ngse/my_file /destination_directory/destination_filename साइट-सक्षम निर्देशिका से किसी गंतव्य पर फ़ाइल कॉपी करने के लिए ।

इसमें से कोई भी तब तक काम नहीं करेगा जब तक आप ऐसा कुछ नहीं करते:

exec bash

वैकल्पिक रूप से, आप पुनः लॉग इन कर सकते हैं या आप रिबूट कर सकते हैं.

मैं उपयोग करने का सुझाव दूंगा /etc/bash.bashrc

आप उस फ़ाइल के अंत में लाइन जोड़ सकते हैं ।

alias ok="ping google.com"

प्रति पंक्ति उपनाम डालने के बाद आपको रिबूट या रिलॉगिन करना होगा ।

जैसा कि मुझे याद है, bashrc सीधे उपनामों के लिए इसका उपयोग न करने का सुझाव देने वाली एक पंक्ति है, या थी । द समाधान बाहरी फ़ाइल का उपयोग करना है । द foo और bar उपनाम जोड़े गए हैं, लेकिन जोड़ने के लिए bazbashrc फ़ाइल "सोर्स" होनी चाहिए (या, बस एक नया टर्मिनल खोलें) । उदाहरण के रूप में:

thufir@dur:~$ thufir@dur:~$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias bar='echo foo'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias foo='echo foo'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'thufir@dur:~$ thufir@dur:~$ cat .bash_aliases alias foo='echo foo'alias bar='echo foo'alias baz='echo baz'thufir@dur:~$ thufir@dur:~$ source .bashrc thufir@dur:~$ thufir@dur:~$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias bar='echo foo'alias baz='echo baz'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias foo='echo foo'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'thufir@dur:~$ thufir@dur:~$ bazbazthufir@dur:~$ 

अब द baz उपनाम काम करता है । मुझे केवल अब एहसास हुआ कि पिछले उत्तर में था उल्लेख किया यह तकनीक, लेकिन उन्होंने लेड को दफन कर दिया था ।

** उत्तर* * – How to find out where alias (in the bash sense) is defined when running Terminal in Mac OS X - Stack Overflow

'उपनाम आरएम='आरएम-आई" आरएम का उपयोग करने की समस्या को हल नहीं करता है

डब्लूएसएल दोस्तों में उबंटू के बारे में क्या ?