it-swarm.com.de

Wie erstelle ich einen permanenten Bash-Alias?

Ich möchte einen Alias ​​für den Befehl rm erstellen, um nach Ausführung dieses Befehls eine Bestätigungsmeldung zu erhalten. Also erstelle ich einen Alias ​​wie diesen alias rm='rm -i'. Soweit ich weiß, handelt es sich jedoch um einen vorübergehenden Alias, der so lange besteht, bis Sie das Terminal schließen.

Wie es erklärt wird hier um den Alias ​​dauerhaft zu speichern, muss ich ~/.bash_aliases oder ~/.bashrc Befehle im Terminal ausführen und dort meinen Alias ​​hinzufügen. Aber wenn ich ~/.bashrc ausführe, bekomme ich folgende Fehlermeldung:

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

Wenn ich ~/.bash_aliases ausführe, wird folgende Fehlermeldung angezeigt:

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

Was ist das eigentliche Problem und wie kann ich es lösen?

373
Bakhtiyor

Um einen Alias ​​dauerhaft zu erstellen, fügen Sie den Alias ​​Ihrer .bashrc -Datei hinzu

gedit ~/.bashrc

Und dann füge deinen Alias ​​unten hinzu.

alt text

Führen Sie nun . ~/.bashrc in Ihrem Terminal aus (zwischen . und ~/.bashrc sollte ein Leerzeichen stehen).

Jetzt können Sie Ihren Alias ​​überprüfen.

alt text

421
karthick87

Es gibt viele Möglichkeiten, einen Alias ​​zu erstellen. Die am häufigsten verwendeten Methoden sind:

  1. Fügen Sie Aliase direkt in Ihre ~/.bashrc -Datei ein

    Beispiel: Hängen Sie diese Zeile an die Datei ~/.bashrc an

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

    Das nächste Mal (nachdem Sie sich abgemeldet/angemeldet oder . ~/.bashrc ausgeführt haben), wenn Sie rm eingeben, wird der Befehl rm -i ausgeführt.

  2. Mit der zweiten Methode können Sie eine separate Aliase-Datei erstellen, sodass Sie sie nicht in .bashrc ablegen müssen, sondern in eine Datei Ihrer Wahl. Bearbeiten Sie zunächst Ihre ~/.bashrc -Datei und fügen Sie die folgenden Zeilen hinzu, falls sie noch nicht vorhanden sind, oder entfernen Sie die Kommentare, falls sie vorhanden sind:

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

    Speichern Sie es und schließen Sie die Datei. Danach müssen Sie nur noch eine ~/.bash_aliases -Datei erstellen und dort Ihre Aliase mit demselben Format wie in der ersten Methode hinzufügen.

    Inhalt meiner ~/.bash_aliases -Datei:

    alias cs='cd;ls'
    
250
aneeshep

Es hört sich für mich so an, als ob Ihr einziges Problem darin besteht, einfach .bashrc auszuführen, wenn es nicht ausführbar ist. Dies ist jedoch nicht der richtige Weg. Wann immer Sie eine Änderung an dieser Datei vornehmen, sollten Sie sie mit dem folgenden Befehl "ausführen":

source ~/.bashrc

Andernfalls wird einfach eine neue Shell erstellt, die Datei in der Umgebung der neuen Shell ausgeführt und diese Umgebung beim Beenden verworfen, wodurch Ihre Änderung verloren geht. Durch das Aufrufen des Skripts wird es in der aktuellen Shell ausgeführt, sodass es in Kraft bleibt.

Ich nehme an, der zweite Fehler war, weil bash_aliases nicht existiert. Es ist nicht erforderlich, es wird lediglich empfohlen, Ihre Änderungen getrennt und organisiert aufzubewahren. Es wird nur verwendet, wenn es existiert, und Sie können den Test dafür in .bashrc sehen:

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

Dies besagt, dass wenn die Datei ~/.bash_aliases existiert, sie ausgeführt wird.

19
Marty Fried

Das Problem ist, dass Sie versuchen, eine nicht ausführbare Datei auszuführen: Sie können dies überprüfen mit:

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

Beachten Sie, dass sich in der ersten Spalte kein Buchstabe "x - ausführbar" befindet (Dateiberechtigungen).

Profildateien sind keine ausführbaren Dateien, statt sie auszuführen, laden Sie sie mit:

source /home/bakhtiyor/.bashrc

oder

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

Dies ist ein Beispiel, nach dem ich gesucht habe, eine Möglichkeit, einige Buchstaben am Terminal ("vps") einzugeben, um sich remote bei einem Server anzumelden und die X11-Weiterleitung zu aktivieren, damit ich GUI-Apps wie "gedit" über das Netzwerk ausführen kann.

Was auch immer der Befehl/Alias-Befehl ist, dieser Weg mit der Echo-Anweisung, den Anführungszeichen und dem Symbol zum Anhängen der Ausgabe eines Befehls an eine Datei (>>) funktioniert für mich. Ersetzen Sie einfach meinen Befehl durch den gewünschten Alias-Befehl und geben Sie ihn in Ihr Terminal ein.

7
user80638

wenn Sie Ruby verwenden, können Sie auch Rubygem installieren.

gem install aka2

verwendungszweck

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

das Rubygem generiert automatisch eine Quelle für Ihre Punktedatei, sodass Sie dies nicht benötigen. Hör zu.

5
ytbryan

Ich habe diese hilfreiche Funktion geschrieben, um schnell einen neuen Alias ​​zu erstellen, und dann die Aliasdefinition in _~/.bash_aliases_ (falls vorhanden) oder _~/.bashrc_.

TIP: Stellen Sie sicher, dass _~/.bash_aliases_ vorhanden ist und in _~/.bashrc_ ausgeführt wird.

_# -----------------------------------
#  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

Ich würde vorschlagen, /etc/bash.bashrc zu verwenden

Sie können eine Zeile am Ende dieser Datei hinzufügen.

alias ok="ping google.com"

Nachdem Sie die Aliase pro Zeile eingegeben haben, müssen Sie neu starten oder sich neu anmelden.

0
Fahad Ahammed

Wie ich mich erinnere, hat oder hatte bashrc eine Zeile, die vorschlägt, sie nicht direkt für Aliase zu verwenden. Die Lösung soll eine externe Datei (en) verwenden. Die Aliase foo und bar wurden hinzugefügt, aber um baz hinzuzufügen, muss die bashrc -Datei "bezogen" werden (oder öffnen Sie einfach ein neues Terminal). Beispiel als:

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

jetzt funktioniert der Alias ​​baz. Ich habe gerade erst gemerkt, dass eine frühere Antwort erwähnt diese Technik hatte, aber sie hatten den lede begraben.

0
Thufir