J'aimerais créer un alias pour la commande rm
afin d'avoir un message de confirmation après avoir exécuté cette commande. Je crée donc un alias comme celui-ci alias rm='rm -i'
. Mais pour autant que je sache, il s’agit d’un alias temporaire, qui perdure jusqu’à la fermeture du terminal.
Comme il est expliqué ici pour enregistrer l’alias de façon permanente, j’ai besoin d’exécuter les commandes ~/.bash_aliases
ou ~/.bashrc
dans le terminal et d’y ajouter mon alias. Mais quand j'exécute ~/.bashrc
j'obtiens le message d'erreur suivant:
bash: /home/bakhtiyor/.bashrc: Permission denied
Lorsque je lance ~/.bash_aliases
, un autre message d'erreur comme celui-ci s'affiche:
bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.
Quel est le problème actuel et comment puis-je le résoudre?
Pour créer un alias de façon permanente, ajoutez-le à votre fichier .bashrc
gedit ~/.bashrc
Et puis ajoutez votre alias en bas.
Exécutez maintenant . ~/.bashrc
dans votre terminal (il devrait y avoir un espace entre le .
et le ~/.bashrc
.
Maintenant, vous pouvez vérifier votre alias.
Il y a beaucoup de façons de créer un alias. Les moyens les plus utilisés sont:
Ajoutez des alias directement dans votre fichier ~/.bashrc
Par exemple: ajoutez ces lignes au fichier ~/.bashrc
alias ll='ls -l'
alias rm='rm -i'
La prochaine fois que vous tapez rm
(après que vous vous êtes déconnecté/connecté ou que vous avez terminé . ~/.bashrc
), la commande rm -i
sera exécutée.
La deuxième méthode vous permet de créer un fichier d’alias séparé, de sorte que vous n’aurez pas à les mettre dans .bashrc
, mais dans un fichier de votre choix. Commencez par éditer votre fichier ~/.bashrc
et ajoutez les lignes suivantes si elles n'existent pas ou supprimez la mise en commentaire si elles existent:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Enregistrez-le et fermez le fichier. Après cela, tout ce que vous avez à faire est de créer un fichier ~/.bash_aliases
et d’y ajouter vos alias, avec le même format que celui spécifié dans la première méthode.
Contenu de mon fichier ~/.bash_aliases
:
alias cs='cd;ls'
Il me semble que votre seul problème est simplement d’exécuter .bashrc alors que ce 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" à l'aide de 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 lors de sa fermeture, perdant ainsi votre modification. En recherchant le script, il s'exécute dans le shell actuel, il reste donc actif.
Je suppose que la deuxième erreur est due au fait que bash_aliases n'existe pas. Ce n'est pas obligatoire, mais il est 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 le dans .bashrc:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Ceci dit que si le fichier ~/.bash_aliases existe, alors 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-exécutable" 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 [email protected]'" >> ~/.bashrc
C’est un exemple que je cherchais, un moyen de taper quelques lettres sur le terminal ("vps") pour vous connecter à distance à un serveur et activer le transfert X11 afin que je puisse exécuter des applications graphiques telles que "gedit" sur le réseau.
Quelle que soit la commande/commande avec alias, cette manière avec l'instruction echo, les guillemets et le symbole permettant d'ajouter le résultat d'une commande à un fichier (>>) fonctionne pour moi. Il suffit de remplacer ma commande par la commande d'alias dont vous avez besoin et de la saisir dans votre terminal.
si vous utilisez Ruby, vous pouvez installer aka en utilisant rubygem.
gem install aka2
usage
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
le rubygem auto-source votre fichier de points afin que vous n'en ayez pas besoin. Vérifiez-le.
J'ai écrit cette fonction utile pour créer rapidement un nouvel alias, puis écrire la définition de cet alias dans ~/.bash_aliases
(si elle existe) ou ~/.bashrc
.
TIP: Assurez-vous que ~/.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"
}
Je suggère 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 reconnecter.
Si je me souviens bien, bashrc
a, ou avait, une ligne suggérant de ne pas l'utiliser directement pour les alias. La solution consiste à utiliser un fichier externe. Les alias foo
et bar
ont été ajoutés, mais pour ajouter baz
name__, le fichier bashrc
doit être "obtenu" (ou ouvrez simplement un nouveau terminal). Exemple en tant que:
thufir@dur:~$
thufir@dur:~$ 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'
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:~$ 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'
thufir@dur:~$
thufir@dur:~$ baz
baz
thufir@dur:~$
maintenant, l'alias baz
fonctionne. Je viens tout juste de me rendre compte qu'une réponse précédente avait mentionné cette technique, mais ils avaient enterré le lede.