it-swarm.dev

Jak vytvořím permanentní alias Bash?

Chtěl bych vytvořit alias k příkazu rm, aby se po provedení tohoto příkazu zobrazila potvrzovací zpráva. Takže vytvářím alias, jako je tento alias rm='rm -i'. Ale pokud vím, jedná se o dočasný alias a to trvá, dokud nezavřete terminál.

Jak je vysvětleno zde pro trvalé uložení aliasu musím provést ~/.bash_aliases nebo ~/.bashrc příkazy v terminálu a přidejte tam můj alias. Ale když spustím ~/.bashrc Zobrazí se následující chybová zpráva:

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

Když spustím ~/.bash_aliases Mám další chybovou zprávu, jako je tato:

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

Jaký je skutečný problém a jak jej mohu vyřešit?

412
Bakhtiyor

Chcete-li vytvořit alias trvale, přidejte jej do svého souboru .bashrc

gedit ~/.bashrc

A potom přidejte svůj alias na konec.

alt text

Nyní spusťte v terminálu . ~/.bashrc (Mezi . A ~/.bashrc By měla být mezera).

Nyní můžete zkontrolovat své aliasy.

alt text

455
karthick87

Existuje mnoho způsobů, jak vytvořit alias. Nejpoužívanějšími způsoby jsou:

  1. Přidejte aliasy přímo do svého souboru ~/.bashrc

    Například: připojte tyto řádky k souboru ~/.bashrc

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

    Příště (po odhlášení/přihlášení nebo provedení . ~/.bashrc) Po zadání rm bude proveden příkaz rm -i.

  2. Druhá metoda umožňuje vytvořit samostatný soubor s aliasy, takže je nebudete muset vložit do .bashrc, Ale do souboru podle vašeho výběru. Nejprve upravte svůj soubor ~/.bashrc A přidejte následující řádky, pokud již neexistují, nebo je zrušte, pokud ano:

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

    Uložte jej a zavřete soubor. Poté stačí jen vytvořit soubor ~/.bash_aliases A přidat do něj aliasy se stejným formátem, jaký je uveden v první metodě.

    Obsah mého souboru ~/.bash_aliases:

    alias cs='cd;ls'
    
262
aneeshep

Zní mi to, jako by se váš jediný problém pokoušel jednoduše spustit .bashrc, pokud není spustitelný. To však není správný způsob; kdykoli provedete změnu tohoto souboru, měli byste jej „spustit“ příkazem:

source ~/.bashrc

V opačném případě jednoduše vytvoří nový Shell, provede soubor v novém prostředí Shell a po jeho ukončení toto prostředí zahodí, čímž ztratí vaši změnu. Zdrojem skriptu se spustí v aktuálním prostředí Shell, takže zůstane v platnosti.

Předpokládám, že druhá chyba byla, protože bash_aliases neexistuje. Není nutné, pouze doporučujeme, abyste své změny oddělili a uspořádali. Používá se, pouze pokud existuje, a vy můžete vidět test na .bashrc:

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

To říká, že pokud soubor ~/.bash_aliases existuje, spusťte jej.

19
Marty Fried

Problém je v tom, že se pokoušíte spustit nespustitelný soubor: Můžete to zkontrolovat pomocí:

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

V prvním sloupci není žádné písmeno „x - spustitelný soubor“ (oprávnění k souborům).

Soubory profilu nejsou spustitelné soubory, namísto jejich spuštění je načtete pomocí:

source /home/bakhtiyor/.bashrc

nebo

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

Toto je příklad, který jsem hledal, způsob, jak napsat několik písmen na terminálu („vps“), jak se vzdáleně přihlásit k serveru a povolit předávání X11, abych mohl v síti spouštět gui aplikace jako „gedit“.

Jakýkoli příkaz/aliasy, pro mě to funguje s příkazem echo, uvozovkami a symbolem pro připojení výstupu příkazu k souboru (>>). Nahraďte můj příkaz aliasovým příkazem, který potřebujete, a zadejte jej do svého terminálu.

7
user80638

pokud používáte Ruby, můžete si také nainstalovat aka rubygem.

gem install aka2

používání

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 automaticky vytvoří zdrojový soubor, abyste nemuseli. Koukni na to.

5
ytbryan

Tuto užitečnou funkci jsem napsal, abych rychle vytvořil nový alias, a poté jsem definici alias zapsal do ~/.bash_aliases (pokud existuje) nebo ~/.bashrc.

TIP : Zajistit ~/.bash_aliases existuje a je provedeno v ~/.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"
}
4
blizzrdof77

Rád bych rozšířil tento nápad!

Chceš alias příkaz podle vaší otázky:

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

Nyní můžete zadat wolfr a přesunout se do domovského adresáře vlka.

To je velmi podobné a velmi cool, export příkaz:

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

Nyní můžete zadat cp $ngse/my_file /destination_directory/destination_filename pro zkopírování souboru z adresáře s povolenými weby do cíle.

Nic z toho nebude fungovat, dokud neuděláte něco takového:

exec bash

Případně se můžete znovu přihlásit nebo restartovat.

0
Wolfpack'08

Navrhuji použít /etc/bash.bashrc

Na konec tohoto souboru můžete přidat řádek.

alias ok="ping google.com"

Po zadání aliasu na řádek je třeba restartovat nebo reloginovat.

0
Fahad Ahammed

Jak si vzpomínám, bashrc má nebo měl řádek naznačující, že jej přímo nepoužívat pro aliasy. řešení je použití externích souborů. Byly přidány aliasy foo a bar, ale pro přidání baz musí být soubor bashrc "sourced" (nebo jednoduše otevřít nový terminál) . Příklad jako:

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

nyní alias baz funguje. Teprve teď jsem si uvědomil, že předchozí odpověď měla tuto techniku ​​ zmíněna , ale pohřbili ledu.

0
Thufir