Comment créer un alias Bash permanent?

Je voudrais créer un alias pour rm commande afin d'avoir un message de confirmation après l'exécution de cette commande. Je crée donc un alias comme celui-ci alias rm='rm -i'. Mais pour autant que je sache, c'est un alias temporaire et il vit jusqu'à ce que vous fermiez le terminal.

Comme il est expliqué ici pour enregistrer l'alias de façon permanente, je dois exécuter ~/.bash_aliases ou ~/.bashrc commandes dans le terminal et ajoutez-y mon alias. Mais quand j'exécute ~/.bashrc Je reçois le message d'erreur suivant :

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

Quand je cours ~/.bash_aliases Je reçois un autre message d'erreur comme celui-ci:

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

Quel est le problème réel et comment puis-je le résoudre?

Pour créer un alias, ajoutez définitivement l'alias à votre .bashrc fichier

gedit ~/.bashrc

Et puis ajoutez votre alias en bas.

alt text

Maintenant, exécutez . ~/.bashrc dans votre terminal (il devrait y avoir un espace entre les . et ~/.bashrc.

Vous pouvez maintenant vérifier votre alias.

alt text

Il existe de nombreuses façons de créer un alias. Les moyens les plus utilisés sont:

  1. Ajoutez des alias directement dans votre ~/.bashrc fichier

    Par exemple: ajoutez ces lignes à ~/.bashrc fichier

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

    La prochaine fois (après vous être déconnecté/connecté, ou terminé . ~/.bashrc) lorsque vous tapez rm le rm -i la commande sera exécutée.

  2. La deuxième méthode vous permet de créer un fichier d'alias séparé, vous n'aurez donc pas à les mettre dans .bashrc, mais vers un fichier de votre choix. Tout d'abord, modifiez votre ~/.bashrc archivez et ajoutez les lignes suivantes si elles n'existent pas déjà, ou décommentez-les si elles existent:

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

    Enregistrez-le et fermez le fichier. Après cela, tout ce que vous avez à faire est de créer un ~/.bash_aliases classez et ajoutez-y vos alias, avec le même format que celui spécifié dans la première méthode.

    Contenu de mon ~/.bash_aliases fichier:

    alias cs='cd;ls'

Il me semble que votre seul problème est simplement d'essayer d'exécuter .bashrc quand il n'est pas exécutable. Mais ce n'est pas la bonne façon de le faire; chaque fois que vous apportez une modification à ce fichier, vous devez "l'exécuter" par la commande:

source ~/.bashrc

Sinon, il créera simplement un nouveau shell, exécutera le fichier dans l'environnement du nouveau shell, puis supprimera cet environnement à sa sortie, perdant ainsi votre modification. En sourcant le script, il s'exécute dans le shell actuel, il restera donc en vigueur.

Je suppose que la deuxième erreur était due au fait que bash_aliases n'existe pas. Ce n'est pas obligatoire, il est simplement recommandé de garder vos modifications séparées et organisées. Il n'est utilisé que s'il existe, et vous pouvez voir le test pour cela dans .bashrc:

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

Cela indique que si le fichier~/.bash_aliases existe, puis exécutez-le.

Le problème est que vous essayez d'exécuter un fichier non exécutable:Vous pouvez le vérifier avec:

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

Notez qu'il n'y a pas de lettre "x - executable" sur la première colonne (autorisations de fichier).

Les fichiers de profil ne sont pas des fichiers exécutables, au lieu de les exécuter, vous les chargez avec:

source /home/bakhtiyor/.bashrc

ou

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

C'est un exemple que je cherchais, un moyen de taper quelques lettres sur le terminal ("vps") pour me connecter à distance à un serveur et activer le transfert X11 afin que je puisse exécuter des applications graphiques comme "gedit" sur le réseau.

>>Quelle que soit la commande command / aliased, cette méthode avec l'instruction echo, les guillemets et le symbole permettant d'ajouter la sortie d'une commande à un file () fonctionne pour moi. Remplacez simplement ma commande par la commande alias dont vous avez besoin et entrez-la dans votre terminal.

J'ai écrit cette fonction utile pour créer rapidement un nouvel alias, puis écrire la définition de l'alias sur ~/.bash_aliases (s'il existe) ou ~/.bashrc.

CONSEIL: Garantir ~/.bash_aliases existe et est exécuté dans ~/.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"}

si vous utilisez ruby, vous pouvez l'installer en utilisant rubygem.

gem install aka2

utilisation

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

le rubygem source automatiquement votre fichier dot afin que vous n'en ayez pas besoin. Vérifiez-le.

J'aimerais développer cette idée!

Tu veux alias une commande en fonction de votre question:

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

Maintenant, vous pouvez taper wolfr pour passer au répertoire d'accueil de wolf.

C'est très similaire et très cool, le export commande:

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

Maintenant, vous pouvez taper cp $ngse/my_file /destination_directory/destination_filename pour copier un fichier du répertoire activé par sites vers une destination.

Rien de tout cela ne fonctionnera jusqu'à ce que vous fassiez quelque chose comme ça:

exec bash

Vous pouvez également vous reconnecter ou redémarrer.

Je suggérerais d'utiliser /etc/bash.bashrc

Vous pouvez ajouter une ligne à la fin de ce fichier.

alias ok="ping google.com"

Après avoir mis les alias par ligne, vous devez redémarrer ou vous reconnecter.

Comme je me souviens, bashrc a, ou avait, une ligne suggérant de ne pas l'utiliser directement pour les alias. Le solution est d'utiliser un fichier(s) externe (s). Le foo et bar des alias ont été ajoutés, mais pour ajouter baz le bashrc le fichier doit être "sourcé" (ou, il suffit d'ouvrir un nouveau terminal). Exemple as:

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

maintenant, le baz alias fonctionne. Je viens tout juste de réaliser qu'une réponse précédente avait mentionner cette technique, mais ils avaient enterré le lede.

** RÉPONSE* * – 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" ne résout pas le problème de l’utilisation aléatoire de rm

qu’en est-il d’Ubuntu dans WSL les gars ?