it-swarm-tr.com

Kalıcı bir Bash takma adı nasıl oluşturabilirim?

Bu komutu yürüttükten sonra bir onay mesajı almak için rm komutuna bir takma ad oluşturmak istiyorum. Böylece böyle bir takma ad oluşturuyorum alias rm='rm -i'. Ama bildiğim kadarıyla bu geçici bir takma ad ve siz terminali kapatana kadar yaşıyor.

Açıklandığı gibi burada Takma adı kalıcı olarak kaydetmek için terminalde ~/.bash_aliases veya ~/.bashrc komutlarını çalıştırmam ve oraya takma adımı eklemem gerekiyor. Ancak ~/.bashrc komutunu çalıştırdığımda aşağıdaki hata mesajını alıyorum:

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

~/.bash_aliases çalıştırdığımda bunun gibi başka bir hata mesajı alıyorum:

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

Asıl sorun nedir ve nasıl çözebilirim?

373
Bakhtiyor

Bir takma ad oluşturmak için takma adı kalıcı olarak .bashrc dosyanıza ekleyin

gedit ~/.bashrc

Ve sonra takma adınızı aşağıya ekleyin.

alt text

Şimdi terminalinizde . ~/.bashrc komutunu çalıştırın (. ile ~/.bashrc arasında bir boşluk olmalıdır.

Şimdi takma adınızı kontrol edebilirsiniz.

alt text

421
karthick87

Takma ad oluşturmanın birçok yolu vardır. En çok kullanılan yollar:

  1. Takma adları doğrudan ~/.bashrc dosyanıza ekleyin

    Örneğin: bu satırı ~/.bashrc dosyasına ekle

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

    Bir dahaki sefere (oturum açtıktan/giriş yaptıktan veya . ~/.bashrc yaptıktan sonra) rm yazdığınızda rm -i komutu uygulanacaktır.

  2. İkinci yöntem, ayrı bir takma ad dosyası oluşturmanıza izin verir, böylece onları .bashrc içine koymak zorunda kalmazsınız, fakat seçtiğiniz bir dosyaya. Öncelikle, ~/.bashrc dosyanızı düzenleyin ve henüz mevcut değilse aşağıdaki satırları ekleyin ya da varsa bunları ekleyin:

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

    Kaydet ve dosyayı kapat. Bundan sonra, yapmanız gereken tek şey bir ~/.bash_aliases dosyası oluşturmak ve takma adlarınızı ilk yöntemde belirtilen biçimde buraya eklemek.

    ~/.bash_aliases dosyamın içeriği:

    alias cs='cd;ls'
    
250
aneeshep

Bana göre tek problemin sadece çalıştırılabilir olmadığı zamanlarda .bashrc'yi çalıştırmaya çalışmak. Ancak bunu yapmanın doğru yolu bu değildir; Bu dosyada bir değişiklik yaptığınızda, komutla "çalıştırmalısınız":

source ~/.bashrc

Aksi takdirde, yeni bir Shell oluşturur, dosyayı yeni Shell'in ortamında çalıştırır, sonra çıktığında o ortamı atar ve böylece değişikliklerinizi kaybeder. Komut dosyasını kaynaklayarak, geçerli Kabuk içinde yürütülür, böylece etkin kalır.

Sanırım ikinci hatanın bash_aliases olmamasıydı. Bu gerekli değildir, yalnızca değişikliklerinizi ayrı ve düzenli tutmanız önerilir. Yalnızca varsa, kullanılır ve bunun için testi .bashrc'de görebilirsiniz:

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

Bu, eğer ~/.bash_aliases dosyası varsa, çalıştır.

19
Marty Fried

Sorun, çalıştırılamayan bir dosyayı çalıştırmaya çalışıyor olmanızdır: Bunu kontrol edebilirsiniz:

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

Not: İlk sütunda "x - çalıştırılabilir" harfi yoktur (dosya izinleri).

Profil dosyaları çalıştırılabilir dosyalar değildir; yürütmek yerine bunları bunlarla yüklersiniz:

source /home/bakhtiyor/.bashrc

veya

. /home/bakhtiyor/.bashrc
17
João Pinto
echo "alias vps='ssh -X [email protected]'" >> ~/.bashrc

Bu, bir sunucuya uzaktan oturum açmak ve X11 iletmeyi etkinleştirmek için terminalde birkaç harf ("vps") yazmanın ve X11 iletmeyi etkinleştirmenin bir yolunu aradığım bir örnektir, böylece ağ üzerinden "gedit" gibi gui uygulamaları çalıştırabilirim.

Komut/aliased komutu ne olursa olsun, echo ifadesi, tırnak işaretleri ve bir komutun çıktısını bir dosyaya (>>) eklemek için kullanılan sembol bu şekilde benim için çalışır. İhtiyacınız olan alias komutunun komutunu değiştirin ve terminalinize girin.

7
user80638

ruby kullanıyorsanız, rubygem kullanarak aka yükleyebilirsiniz.

gem install aka2

kullanım

aka generate hello="echo helloworld" #add an alias
aka g hello="echo helloworld"  #add alias for lazy people

aka destroy hello #remove alias
aka d hello #remove alias for lazy people

rubygem, nokta dosyanızı otomatik olarak besler ve böylece gerek kalmaz. Bunu kontrol et.

5
ytbryan

Hızlıca yeni bir takma ad oluşturmak için bu yararlı işlevi yazdım ve sonra takma ad tanımını ~/.bash_aliases (varsa) veya ~/.bashrc.

TIP: ~/.bash_aliases öğesinin var olduğundan ve ~/.bashrc içinde çalıştırıldığından emin olun.

# -----------------------------------
#  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"
}
4
blizzrdof77

/etc/bash.bashrc kullanmanızı öneririm

Bu dosyanın sonuna bir satır ekleyebilirsiniz.

alias ok="ping google.com"

Satır başına takma adları yerleştirdikten sonra yeniden başlatmanız veya yeniden yapılandırmanız gerekir.

0
Fahad Ahammed

Hatırladığım kadarıyla, bashrc, onu doğrudan takma adlar için kullanmamayı öneren bir çizgiye sahipti veya sahipti. solution harici bir dosya kullanmaktır. foo ve bar takma adları eklendi, ancak baz eklemek için bashrc dosyası "kaynaklı" olmalı (ya da sadece yeni bir terminal açmalısınız). Örnek olarak:

[email protected]:~$ 
[email protected]:~$ alias
alias 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'
[email protected]:~$ 
[email protected]:~$ cat .bash_aliases 
alias foo='echo foo'
alias bar='echo foo'
alias baz='echo baz'

[email protected]:~$ 
[email protected]:~$ source .bashrc 
[email protected]:~$ 
[email protected]:~$ alias
alias 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'
[email protected]:~$ 
[email protected]:~$ baz
baz
[email protected]:~$ 

şimdi baz alias çalışıyor. Sadece şimdi fark ettim ki önceki bir cevabım b bu tekniğe sahipti, ancak Lede'yi gömdüler.

0
Thufir