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

Bir takma ad oluşturmak istiyorum rm bu komutu çalıştırdıktan sonra bir onay mesajına sahip olmak için komut. Bu yüzden 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 çalıştırmam gerekiyor ~/.bash_aliases veya ~/.bashrc terminaldeki komutlar ve takma adımı oraya ekleyin. Ama idam ettiğimde ~/.bashrc Aşağıdaki hata iletisini alıyorum :

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

Kaçtığımda ~/.bash_aliases 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?

Bir takma ad oluşturmak için takma adı kalıcı olarak .bashrc dosya

gedit ~/.bashrc

Ve sonra takma adınızı en altına ekleyin.

alt text

Şimdi yürütün . ~/.bashrc terminalinizde (terminal arasında bir boşluk olmalıdır) . ve ~/.bashrc.

Artık takma adını kontrol edebilirsin.

alt text

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

  1. Takma adları doğrudan bilgisayarınıza ekleyin. ~/.bashrc dosya

    Örneğin: bu satırı aşağıdakilere ekleyin: ~/.bashrc dosya

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

    Bir dahaki sefere (çıkış yaptıktan / giriş yaptıktan veya bitirdikten sonra . ~/.bashrc) yazarken rm bu rm -i komut yürütülecek.

  2. İkinci yöntem, ayrı bir takma ad dosyası oluşturmanıza olanak tanır, böylece bunları koymak zorunda kalmazsınız .bashrc ama senin seçtiğin bir dosyaya. İlk olarak, düzenleme ~/.bashrc zaten mevcut değilse aşağıdaki satırları dosyalayın ve ekleyin veya varsa bunları kaldırın:

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

    Kaydedin ve dosyayı kapatın. Bundan sonra tek yapmanız gereken bir ~/.bash_aliases dosyalayın ve takma adlarınızı ilk yöntemde belirtilen aynı biçimde ekleyin.

    İçeriğimin içeriği ~/.bash_aliases dosya:

    alias cs='cd;ls'

Bana öyle geliyor ki tek sorunun sadece yürütmeye çalışmak.yürütülebilir olmadığında bashrc. Ancak bunu yapmanın doğru yolu bu değildir; Bu dosyada bir değişiklik yaptığınızda, komutu "çalıştırmanız" gerekir:

source ~/.bashrc

Aksi takdirde, yalnızca yeni bir kabuk oluşturacak, dosyayı yeni kabuğun ortamında yürütecek, ardından çıktığında bu ortamı atacak ve böylece değişikliğinizi kaybedecektir. Komut dosyasını kaynak sağlayarak, geçerli kabuk içinde yürütür, böylece geçerli kalır.

İkinci hatanın bash_aliases mevcut olmadığı için olduğunu varsayıyorum. Bu gerekli değildir, sadece değişikliklerinizi ayrı ve düzenli tutmanız önerilir. Yalnızca varsa kullanılır ve bunun için sınamayı görebilirsiniz.bashrcname:

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

Bu, dosya ~/ ise diyor.bash_aliases var, sonra çalıştırın.

Sorun, yürütülebilir olmayan bir dosyayı yürütmeye çalışmanızdır: Bunu şununla kontrol edebilirsiniz:

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

Not ilk sütunda (dosya izinleri) "x yürütülebilir" harfi yoktur.

Profil dosyaları yürütülebilir dosyalar değildir, bunları yürütmek yerine bunları yüklersiniz:

source /home/bakhtiyor/.bashrc

veya

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

Bu, bir sunucuya uzaktan giriş yapmak ve ağ üzerinden "gedit" gibi guı uygulamalarını çalıştırabilmem için X11 iletmeyi etkinleştirmek için terminalde ("vps") birkaç harf yazmanın bir yolunu aradığım bir örnektir.

>>Komut / takma ad komutu ne olursa olsun, bu şekilde echo deyimi, tırnak işaretleri ve bir komutun çıktısını bir dosyaya () eklemek için sembol benim için çalışır. İhtiyacınız olan takma ad komutu için komutumu değiştirin ve terminalinize girin.

Hızlı bir şekilde yeni bir takma ad oluşturmak ve ardından takma ad tanımını yazmak için bu yararlı işlevi yazdım ~/.bash_aliases (eğer varsa) veya ~/.bashrc.

: Sağlamak ~/.bash_aliases var & amp; içinde yürütülür ~/.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"}

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

gem install aka2

kullanım

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

rubygem, dot dosyanızı otomatik olarak kaynaklayacak, böylece buna ihtiyacınız olmayacak. Şuna bak.

Bu fikri genişletmek isterim!

İstiyorsun alias sorunuza göre bir komut:

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

Şimdi yazabilirsiniz wolfr wolf'un ana dizinine geçmek için.

Bu çok benzer ve çok havalı, export komut:

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

Şimdi yazabilirsiniz cp $ngse/my_file /destination_directory/destination_filename siteler etkinleştirilmiş dizinden bir dosyayı bir hedefe kopyalamak için kullanılır.

Sen böyle bir şey yapana kadar bunların hiçbiri işe yaramayacak.:

exec bash

Alternatif olarak, yeniden oturum açabilir veya yeniden başlatabilirsiniz.

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

Bu dosyanın sonuna satır ekleyebilirsiniz.

alias ok="ping google.com"

Takma adları satır başına koyduktan sonra yeniden başlatmanız veya yeniden girmeniz gerekir.

Hatırladığım kadarıyla, bashrc doğrudan takma adlar için kullanmamayı öneren bir satır var veya vardı. Bu çözüm harici bir dosya (lar) kullanmaktır. Bu foo ve bar takma adlar eklendi, ancak eklemek için baz bu bashrc dosya "kaynaklı" olmalıdır (veya yeni bir terminal açmanız yeterlidir). Örnek olarak:

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:~$ 

şimdi baz takma ad işe yarıyor. Daha yeni fark ettim ki önceki bir cevabın bahsedilen bu teknik, ama lede'yi gömmüşlerdi.

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

'alias rm ='rm -i", rm’yi gelişigüzel kullanma sorununu çözmez

wsl’deki Ubuntu’dan ne haber?